diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index d03e7400e..c3536e1aa 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -1,51 +1,45 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
module.exports = {
root: true,
- parser: '@typescript-eslint/parser',
+ env: { browser: true, es2020: true },
extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/recommended',
- 'plugin:@typescript-eslint/recommended-requiring-type-checking',
- 'plugin:svelte/recommended',
+ "eslint:recommended",
+ "plugin:@typescript-eslint/recommended-type-checked",
+ "plugin:react-hooks/recommended",
+ "plugin:react/recommended",
+ "plugin:react/jsx-runtime",
],
+ ignorePatterns: [
+ "dist",
+ ".eslintrc.cjs",
+ "deployment.cjs",
+ "bin/**/*.js",
+ "bootstrap-template.js",
+ "playwright.config.ts",
+ "CMakeFiles",
+ ],
+ parser: "@typescript-eslint/parser",
parserOptions: {
- ecmaVersion: 2020,
- sourceType: 'module',
+ ecmaVersion: "latest",
+ sourceType: "module",
+ project: ["./tsconfig.json", "./tsconfig.node.json"],
tsconfigRootDir: __dirname,
- project: ['./tsconfig.json'],
- extraFileExtensions: ['.svelte'],
+ },
+ plugins: ["react-refresh"],
+ settings: {
+ react: {
+ version: "18",
+ },
},
rules: {
- "@typescript-eslint/no-unused-vars": [
- warn,
- {
- argsIgnorePattern: "^_"
- }
+ // More trouble than it's worth
+ "react/no-unescaped-entities": "off",
+ // False positives from library imports from Chakra UI
+ "@typescript-eslint/unbound-method": "off",
+ "@typescript-eslint/no-misused-promises": [
+ "error",
+ {
+ checksVoidReturn: false,
+ },
],
},
- env: {
- browser: true,
- es6: true,
- node: true,
- },
- overrides: [
- {
- files: ['*.svelte'],
- parser: 'svelte-eslint-parser',
- parserOptions: {
- parser: '@typescript-eslint/parser',
- },
- },
- ],
- plugins: ['@typescript-eslint'],
- ignorePatterns: [
- 'node_modules',
- 'svelte.config.js',
- '.eslintrc.cjs',
- 'babel.config.cjs',
- ],
};
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 2029a1620..9cde5e4c4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -5,7 +5,7 @@ on:
types: [created]
push:
branches:
- - '**'
+ - "**"
concurrency:
group: ${{ github.workflow }}-${{ startsWith(github.ref, 'refs/tags/v') && 'release' || github.ref }}
@@ -30,19 +30,30 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 20
- cache: 'npm'
- registry-url: 'https://npm.pkg.github.com'
+ cache: "npm"
+ registry-url: "https://npm.pkg.github.com"
+ - uses: microbit-foundation/npm-package-versioner-action@v1
- run: npm ci
- - run: npm install --no-save @microbit-foundation/website-deploy-aws@0.6 @microbit-foundation/website-deploy-aws-config@0.9 @microbit-foundation/npm-package-versioner@2
+ env:
+ NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - run: npm install --no-save @microbit-foundation/ml-trainer-microbit@0.2.0-dev.9 @microbit-foundation/website-deploy-aws@0.6 @microbit-foundation/website-deploy-aws-config@0.9
if: github.repository_owner == 'microbit-foundation'
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- - run: npx update-ci-version
- run: node ./bin/print-ci-env.cjs >> $GITHUB_ENV
- - run: npm run test
- - run: npm run check
- - run: npx prettier --check src
- - run: npm run build
+ - run: npm run ci
+ - name: Run Playwright tests
+ if: env.STAGE == 'REVIEW' || env.STAGE == 'STAGING'
+ uses: docker://mcr.microsoft.com/playwright:v1.45.0-jammy
+ with:
+ args: npx playwright test
+ - name: Store reports
+ if: (env.STAGE == 'REVIEW' || env.STAGE == 'STAGING') && failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: playwright-report
+ path: playwright-report/
+ retention-days: 3
- run: npx website-deploy-aws
if: github.repository_owner == 'microbit-foundation' && (env.STAGE == 'REVIEW' || success())
env:
diff --git a/.github/workflows/pr-url.yml b/.github/workflows/pr-url.yml
index ebef8b41e..b3c8cb449 100644
--- a/.github/workflows/pr-url.yml
+++ b/.github/workflows/pr-url.yml
@@ -1,4 +1,4 @@
-name: 'pr-url'
+name: "pr-url"
on:
pull_request:
types: [opened]
@@ -8,5 +8,5 @@ jobs:
steps:
- uses: microbit-foundation/action-pr-url-template@v0.1.2
with:
- uri-template: 'https://review-ml.microbit.org/{branch}'
+ uri-template: "https://review-createai.microbit.org/{branch}/"
repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index d26ae032d..c78e4dcff 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,5 @@
.env.*
/src/.DS_Store
+/playwright-report/
+/test-results/
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 000000000..d617cf0a4
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+@microbit-foundation:registry=https://npm.pkg.github.com/microbit-foundation
diff --git a/.prettierignore b/.prettierignore
index 4958c8934..f4752710f 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1 +1,2 @@
-src/translations.ts
\ No newline at end of file
+src/translations.ts
+src/messages/
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1 @@
+{}
diff --git a/.prettierrc.cjs b/.prettierrc.cjs
index 476b1aa8e..2c7a883e7 100644
--- a/.prettierrc.cjs
+++ b/.prettierrc.cjs
@@ -7,12 +7,8 @@ module.exports = {
arrowParens: 'avoid',
singleQuote: true,
printWidth: 90,
- plugins: ['prettier-plugin-svelte'],
+ plugins: [],
semi: true,
- svelteSortOrder: 'options-styles-scripts-markup',
- svelteStrictMode: false,
bracketSameLine: true,
- svelteAllowShorthand: true,
- svelteIndentScriptAndStyle: true,
trailingComma: 'all',
};
diff --git a/CHANGELOG.md b/CHANGELOG.md
deleted file mode 100644
index ebb8cfbba..000000000
--- a/CHANGELOG.md
+++ /dev/null
@@ -1,141 +0,0 @@
-# Change log
-
-Notable changes to the project will be archieved here
-
-
-## [1.8.1](https://gitlab.au.dk/au-cs-ceed/ml-microbit-browser/-/releases/v1.8.1) - 11/01 - 2023
-Fixes some problems after reaching feature parity between DR and master release branches
-
-### Changed
-- Removes ID field from menu properties
-- Moved management of menus out of svelte components
-
-### Fixed
-- Fixed type errors and warnings for graph components
-- Cookie banner can now select language
-- Fixed a bug with predictions causing NaN confidence
-
-## [1.8.0](https://gitlab.au.dk/au-cs-ceed/ml-microbit-browser/-/releases/v1.8.0) - 22/12 - 2022
-Jest has been introduced! And with it comes the promise of stability. In addition, some graphical and translation issues has been addressed.
-
-### Added
-- Jest has been introduced (see `src/__tests__/` for examples on how they work)
-- Tests for finding unused translations
-- Tests for inconsistencies in the translations, such as having to include both an english and danish translation of a phrase.
-- Both english and danish translations must be of equal length
-
-### Fixed
-- Thanks to jest we have found several issues with the translation, which has been addressed, including removing unused/redundant translations
-- The highlights on the pattern matrix now disappears when moving outside the drawing area.
-
-## [1.7.0](https://gitlab.au.dk/au-cs-ceed/ml-microbit-browser/-/releases/v1.2.0) - 1/12 - 2022
-Jest has been introduced! And with it comes the promise of stability. In addition, some graphical and translation issues has been addressed.
-
-### Added
-- Jest has been introduced (see `src/__tests__/` for examples on how they work)
-- Tests for finding unused translations
-- Tests for inconsistencies in the translations, such as having to include both an english and danish translation of a phrase.
-- Both english and danish translations must be of equal length
-
-### Fixed
-- Thanks to jest we have found several issues with the translation, which has been addressed, including removing unused/redundant translations
-- The highlights on the pattern matrix now disappears when moving outside the drawing area.
-
-## [1.6.0](https://gitlab.au.dk/au-cs-ceed/ml-microbit-browser/-/releases/v1.1.0) - 22/11 - 2022
-Introduces a new pairing pattern system
-### Added
-- Pairing pattern now automatically fills out squares beneath the targeted square. In addition it outlines any squares below the one that is currently being hovered over.
-- The ConnectionBehaviour callback promptOpen is now fired when the connection prompt opens.
-
-### Fixed
-- The information icon is now fixed in place on recorded gestures. Before it would move when scrolling the page
-- Spinning icon no longer escapes the menu box after a model has been trained.
-- Information icons no longer have higher z-index priority over the control-bar
-- Failed connectivity errors that would occur when the micro:bit was successfully connected but loses connection before adding the listener to the services such as accelerometer are now caught and display a 'connection failed' message.
-- Added some missing translations for prompts when deleting tests/gestsures
-- Reduced the overflow issue that would cause the left hand side menu to overflow when testcenter was open on chromebooks. It is still an issue, but now the home button is accessible.
-- Swapped the outline on the bottom input graph for a border, since it caused some graphical issues due to it being placed outside the container.
-
-## [1.5.0](https://gitlab.au.dk/au-cs-ceed/ml-microbit-browser/-/releases/v1.0.1) - 17/11 - 2022
-Welcome Jon, who has joined the project.
-
-This version was created to improve stability and transitioning the micro:bit firmware from MakeCode to C++. The C++ firmware can be found as a repository under the AU CS CEED group.
-### Added
-- Added Dialog box component for contact information
-
-### Changed
-- Removed top bar from DataPage
-- Many styling changes to support the upcoming DR-release
-
-### Fixed
-- Flashing error handling. Now gives appropriate feedback
-- Alignment issues
-- Issues only present on chromebook
-- Fixed a null pointer exception that was thrown when resizing the overlay on the output page.
-- Closed issue where the pairing pattern would sometimes be wrong on the micro:bit. Issue could not be replicated after new HEX file.
-- Fixed text alignment issue on the left hand side menus. Text was not align vertically to the center when collapsed.
-- Improved solution for handling failed flashes / get friendly name. Now these should be caught with the promise.catch(e) statement.
-- Fixed some connectivity issues on the micro:bit. This was caused by using too little power for the transmission component of the BLE.
-
-
-
-## [1.4.0] - 6/10 - 2022
-This release signifies the last release before the DR-cooperation project starts
-### Added
-- Added compatibility checking for USB and bluetooth
-- Added connect with USB step
-- Added skeletal animations
-
-### Changed
-- Now allows for multi-line information boxes
-
-### Fixed
-- Fixed the model-page no-output overlay issue
-
-
-
-## [1.3.0] - 6/10 - 2022
-
-### Added
-- Cookie banner and cookie manager
-- Introduced a standardized button
-- Added Generic Modal
-- MicrobitUSB now has an event-emitting implementation
-- MicrobitBluetooth can now emit events
-
-
-### Changed
-- Reduced the usage of z-layer or reduced their values, keeping them from going wild
-- Completely overhauled the code structure, using less position: absolute
-
-### Fixed
-- One can no longer close while transferral is in progress
-
-
-## [1.2.0] - 1/09 - 2022
-
-### Added
- - Added pairing pattern connection
- - Added new connection flow
- - Added flashing .hex files through USB
- - MBSpecs, a microbit specification file for details such as UUIDs for bluetooth services
-
-### Changed
-- Added interfaces that controls input/output seperately through implementation
-- Many files converted to TypeScript
-
-### Fixed
-- Fixed a bug, that caused failed data loading from localStorage
-
-## [1.1.0] - 30/06 - 2022
-
-### Added
- - Added support for v1 microbits
- - Bluetooth wrapper for interacting with microbits
-
-### Changed
-- Magic values replaced by configuration settings
-
-## [1.0.0] - 15/09 - 2021
-
-Initial release of ML-Machine.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8b06b8b08..538b91576 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,67 +1,13 @@
-# Contributing
+Thanks for looking here! We'd love your help. The micro:bit project is only
+possible through contributions of companies and individuals around the world.
-When contributing to this repository, please first discuss the change you wish to make via issue or any other method
-with the maintainers of this repository before making a change.
+This project is managed on GitHub, and the best way to contribute is to jump in
+and fix/file issues.
-Please note we have a code of conduct, please follow it in all your interactions with the project.
+https://github.com/microbit-foundation/ml-trainer
-## Pull Request Process
+Significant features are best discussed first to make sure everyone is agreed
+on the best direction.
-1. Ensure any install or build dependencies are removed and the tests using `npm run test` are running successfully.
-2. Update the README.md with details of changes to the interface, this includes new environment
- variables and useful file locations, if applicable.
-3. Increase the version numbers in any examples files and the README.md to the new version that this
- Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/).
-4. Create a pull request describing the changes you have made, as briefly as possible. Maintainers may require further
- detail or request changes. Avoid changing lines of code, that are unrelated to the change to avoid unnecessary code
- ownership changes, such as inserting trailing commas or semicolons.
-5. The pull request will be merged when at least two maintainers has accepted the changes.
-
-Thank you for considering contributing to the project!
-
-## Code of Conduct
-
-Please see Micro:bit Educational Foundation's [code of conduct](https://microbit.org/safeguarding/) which outlines our expectations for all those that participate in the community and details on how to report any concerns and what would happen should breaches occur.
-
-### Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, gender identity and expression, level of experience,
-nationality, personal appearance, race, religion, or sexual identity and
-orientation.
-
-We stride to make learning an empowering experience for all and constantly weigh the balance between accessibility and
-complexity on our platform.
-
-### Our Standards
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on the empowerment of learning
-* Showing empathy towards other users or contributors
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-### Our Responsibilities
-
-Maintainers of ML-Machine have the responsibility of upholding code quality and interpreting the code of conduct and are
-expected to make appropriate and fair decisions in response to behavior and changes.
-
-Maintainers have the right to remove, edit or reject any changes such as commits, code wiki edits and issues which are
-not aligned with our pledge, standards or code of conduct, or to ban temporarily or permanently any contributor for
-actions deemed inappropriate or harmful.
\ No newline at end of file
+The project uses [Prettier](https://prettier.io/) to format code so please
+check out their documentation and set it up with your code editor.
diff --git a/README.md b/README.md
index c03eaa7e1..b7e34b250 100644
--- a/README.md
+++ b/README.md
@@ -1,174 +1,96 @@
-# ML-Machine
+# ml-trainer
-ML-Machine is a free and open-source interactive machine-learning platform, utilising external sensors to generate data,
-which it can be trained to recognise. This allows for gesture recognition by recording examples of gestures performed by
-the user, which the platform can learn and subsequently recognise. The external sensors are provided by the micro:bit
-boards, which are communicated with through Bluetooth. When a gesture is recognised an auditory, visual or logical
-feedback action is taken.
+Train a machine learning model on movement data from the micro:bit's
+accelerometer. Run it on your BBC micro:bit, building your own progam that uses
+the machine learning model in Microsoft MakeCode.
-To learn to recognise a gesture, a label is created for which a set of example movements with the micro:bit
-is recorded. These recordings will be processed by a machine-learning algorithm to recognise future examples. To
-differentiate the recording and feedback process we allow for two micro:bits to be connected. One will act as a
-recording, or input device and another will act as feedback, or output device.
+Try it at https://createai.microbit.org
-
-
-
+## History
-## Building ML-Machine
+This repository is derived from [ML-Machine](https://ml-machine.org)
+([GitHub](https://github.com/microbit-foundation/cctd-ml-machine.)), a free and
+open-source interactive machine-learning platform from the [Center for
+Computational Thinking and Design at Aarhus University](https://cctd.au.dk/).
-ML-Machine can be found at [ML-Machine.org](https://ml-machine.org/) free to use.
-Using the platform requires at least one micro:bit, but two is recommended, especially if you are planning on using any
-of the I/O feedback.
+Significant changes have been made to align with the tech stack of other
+Micro:bit Educational Foundation applications, add and remove features, and
+revise the user experience for some features also in ML-Machine. We encourage
+you to review both projects and see which best fits your needs.
-You can find the version on the main branch at [main.ML-Machine.org](https://main.ml-machine.org/). It will have the newest features but may not be stable and features will be removed or changed without any warnings so do not rely on this version.
+## Building and running the app
-### Running the application locally
+Getting up and running:
-Alternatively the application can be run locally on your computer without compromising the capabilities of the software.
+1. Ensure you have a working [Node.js environment](https://nodejs.org/en/download/). We recommend using the LTS version of Node.
+2. Checkout this repository with Git. GitHub have some [learning resources for Git](https://docs.github.com/en/get-started/quickstart/git-and-github-learning-resources) that you may find useful.
+3. Install the dependencies by running `npm install` on the command line in the checkout folder.
+4. Choose from the NPM scripts documented below. Try `npm start` if you're not sure.
-1. Ensure you have [nodejs](https://nodejs.org/) and the package manager [npm](https://www.npmjs.com/)
-2. Download or clone this repository
-3. In the terminal, run command `npm install` inside the project directory.
-4. Once installed, run `npm run dev` to launch the application.
-5. Access the application from http://localhost:5173/
+### `npm run dev`
-List of commands can be found below.
+Runs the app in the development mode.
+Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
-### ```npm run dev```
+The page will reload if you make edits.
-This starts the development environment using Vite. This should be used when developing as it supports hot-reload/live reload.
+This does not show TypeScript or lint errors.
+Use the eslint plugin for your editor and consider also running `npm run typecheck:watch` to see full type checking errors.
-We recommend starting here.
+### `npm test`
-### ```npm test```
+Launches the [test runner](https://vitest.dev/) in interactive mode (unless the `CI` environment variable is defined).
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
-Runs the test suite. Tests are driven by the framework [Vitest](https://vitest.dev/). Runs all tests inside the folder `./src/__tests__/`.
+### `npm run build`
-If you do not plan to contribute to the project, you may safely ignore this.
+Builds the app for production to the `dist` folder.\
+It correctly bundles React in production mode and optimizes the build for the best performance.
-### ```npm run check```
+## Deployments
-Runs the svelte-check procedure. This will check for various usability issues, unused variables and checks types. This is seldom used, and equivalent checks are performed through Vite and Typescript. Use as a supplement when finalizing a commit.
+Most users should use the supported Foundation deployment at https://createai.microbit.org/
-### ```npm run build```
+The editor is deployed by [GitHub actions](https://github.com/microbit-foundation/ml-trainer/actions).
-Creates a build for the application. Using Vite, the application will be built and placed in the `./dist/` folder.
-
-Use this if you are going to deploy the application on a webserver, or if you wish to use `npm start` to run the application.
-
-### ```npm start```
-
-This starts a server, hosting the contents of `./dist/`. This folder is built by running `npm run build`.
-
-This will expose the application to the network on the default port (5173).
-
-
-### Hex files
-
-Programs on your micro:bit is contained inside the .hex format files. The files we use can be found in `./public/firmware/`.
-The file must be uploaded to your micro:bit in order to use the application.
-
-Note: The application can upload the program to the micro:bit, there is no need for manual installation of hex files prior to launching the application.
-
-The source code for these programs are written in c++ and can be found in the folder `./microbit/`.
-
-If you wish to alter the micro:bit programs, you will need a few tools that depends on which micro:bit version you wish to build for. In the folder `./microbit/` lies a README.md with further instructions, which you can visit by clicking [here](./microbit/)
-
-## Using ML-Machine
-
-### Connecting your micro:bit
-
-The micro:bit can be connected via Bluetooth. The micro:bit requires a specific firmware to be able to communicate with
-the platform effectively. The firmware can be acquired as a .hex file which can be manually transferred using your PC's
-file system, alternatively, if the micro:bit is connected via USB the platform can automatically upload the firmware to
-the micro:bit directly.
-
-### Creating gestures and recording examples
-
-To create a gesture go to the data tab through the menu on the left side of the page. Then click the big plus icon to
-create an empty gesture and give it a title.
-
-To record an example ensure that a micro:bit has been connected and select the newly created gesture. Press either of
-the buttons in the micro:bit and perform the gesture you wish to recognise immediately. You can do this as many times as
-you would like. The more example you give for the gesture, the more confident the algorithm will be in recognising the
-gesture in the future.
-
-### Training the model
-
-To train the predictive model on the given gesture examples, go to the trainer tab of the menu. Select the train model
-option and wait until it has finished. The time this takes is dependent on how many examples you gave each gesture and
-how many gestures the model has to learn.
-
-### Recognising gestures
-
-The model will attempt to predict which gesture is being performed immediately after training. Go to the model tab to
-configure the feedback actions, which will be taken when the model makes a prediction.
-
-### Configuring prediction and feedback
-
-In the model tab several options become available once the model has been trained. These can be changed to alter the
-behaviour of the platform and micro:bits.
-
-#### Confidence threshold
-
-Determines how confident the model has to be for a feedback action to be taken for the given gesture. This is a slider
-located to the right of the label and can be adjusted to make the model more sensitive, the default value is 80%, and
-can be changes for each gesture.
-
-Immediately besides it, a confidence-meter shows how confident the model currently is and will change as you perform
-gestures.
-
-#### Changing the LEDs for output micro:bit
-
-Determines which LEDs on the display of the micro:bit will be lit up when the gesture is detected. This is
-
-#### Sound feedback
-
-Determines which sound clip will be played when a gesture is recognised. Depending on which version of micro:bit you
-have, the sound will be output on the speaker of the micro:bit or on your computer, if the micro:bit doesn't support
-speaker audio.
-
-#### I/O feedback
-
-Select the I/O pin you wish to turn on in response to a gesture detection. Combine this with circuitry to make gesture
-recognition perform actions outside the platform such as turning on motors or LEDs.
-
-### Dependencies
-
-ML-Machine utilises several packages, most notable of which are the following:
-
-- [Svelte](https://github.com/sveltejs/svelte) provides the web-development framework.
-- [Windi CSS](https://github.com/windicss/windicss) provides our styling tool.
-- [TensorFlow.js](https://github.com/tensorflow/tfjs) provides machine learning capabilities.
-- [Smoothie Charts](https://github.com/joewalnes/smoothie) and [chart.js](https://github.com/chartjs/Chart.js) provides
- a visualisation kit.
-
-## Contributions
-
-#### Issues
+## License
-If you experience an issue or have a question regarding the platform please do not hesitate to raise an issue. The
-maintainers will answer to any issues raised as quickly as possible.
+This software is under the MIT open source license.
-#### Code contributions
+[SPDX-License-Identifier: MIT](LICENSE)
-If you have an improvement on you wish to share with please read the [contributing](CONTRIBUTING.md) page. There you
-will find information about how to contribute. The maintainers will review the changes as soon as possible.
+Significant code is derived from ML-Machine (also MIT licensed) and is (c)
+Center for Computational Thinking and Design at Aarhus University and
+contributors. See individual file copyright notices for more details.
-### Credits
+Conceptually this project draws heavily on the work done by the Center for Computational Thinking and Design at Aarhus University (see [CCTD.dk](https://cctd.au.dk)) and we're hugely grateful for their ongoing support and collaboration.
-ML-Machine is a platform created by the Center for Computational Thinking and Design (see [CCTD.dk](https://cctd.au.dk)) at Aarhus University for empowering education in the emerging fields of technology and computation.
+We use dependencies via the NPM registry as specified by the package.json file
+under common Open Source licenses.
-## License
+Full details of each package can be found by running `license-checker`:
-[MIT](LICENSE) © Center for Computational Thinking and Design at Aarhus University and contributors.
+```bash
+$ npx license-checker --direct --summary --production
+```
-We use dependencies via the NPM registry as specified by the package.json file under common Open Source licenses.
+Omit the flags as desired to obtain more detail.
-The repository includes forks of Lancaster's micro:bit-samples repositories for micro:bit [V1](https://github.com/lancaster-university/microbit-samples) and [V2](https://github.com/lancaster-university/microbit-v2-samples). They are MIT licensed.
+The repository includes forks of Lancaster's micro:bit-samples repositories for
+micro:bit [V1](https://github.com/lancaster-university/microbit-samples) and
+[V2](https://github.com/lancaster-university/microbit-v2-samples). They are MIT
+licensed.
## Code of Conduct
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. Please see our code of conduct on the [contributing](CONTRIBUTING.md) page and Micro:bit Educational Foundation's [code of conduct](https://microbit.org/safeguarding/) which outlines our expectations for all those that participate in the community and details on how to report any concerns and what would happen should breaches occur.
+Trust, partnership, simplicity and passion are our core values we live and
+breathe in our daily work life and within our projects. Our open-source
+projects are no exception. We have an active community which spans the globe
+and we welcome and encourage participation and contributions to our projects
+by everyone. We work to foster a positive, open, inclusive and supportive
+environment and trust that our community respects the micro:bit code of
+conduct. Please see our [code of conduct](https://microbit.org/safeguarding/)
+which outlines our expectations for all those that participate in our
+community and details on how to report any concerns and what would happen
+should breaches occur.
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
deleted file mode 100644
index 6cb65a983..000000000
--- a/azure-pipelines.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-trigger:
- - main
-
-pool:
- vmImage: ubuntu-latest
-
-steps:
- - checkout: self
- submodules: true
- - task: AzureStaticWebApp@0
- inputs:
- app_location: '/'
- api_location: 'api'
- output_location: '/public'
- azure_static_web_apps_api_token: $(deployment_token)
\ No newline at end of file
diff --git a/babel.config.cjs b/babel.config.cjs
deleted file mode 100644
index 49d6c2a62..000000000
--- a/babel.config.cjs
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- presets: [
- ['@babel/preset-env', {targets: {node: 'current'}}],
- ],
- };
\ No newline at end of file
diff --git a/bin/tidy-lang.cjs b/bin/tidy-lang.cjs
new file mode 100644
index 000000000..37751f279
--- /dev/null
+++ b/bin/tidy-lang.cjs
@@ -0,0 +1,67 @@
+/**
+ * Sorts the strings in the lang/*.json source files so we
+ * don't have to care about where we add new strings.
+ */
+const fs = require("fs");
+const path = require("path");
+
+// This is just a best effort check that variables haven't been changed.
+const areTranslationsValid = (file, enJson, translatedJson) => {
+ let valid = true;
+ const keys = Object.keys(enJson);
+ for (const k of keys) {
+ const en = enJson[k].defaultMessage;
+ const translated = translatedJson[k].defaultMessage;
+ if (en.match(/, plural/)) {
+ // Skip ICU strings as we don't understand them.
+ continue;
+ }
+ const variablesEn = new Set(en.match(variableRegExp) ?? []);
+ const variablesTranslated = new Set(translated.match(variableRegExp) ?? []);
+ const areSetsEqual = (a, b) =>
+ a.size === b.size && Array.from(a).every((value) => b.has(value));
+ if (!areSetsEqual(variablesEn, variablesTranslated)) {
+ if (valid) {
+ console.error(file);
+ valid = false;
+ }
+ console.error(` ${en}`);
+ console.error(` ${translated}`);
+ console.error(` Differing variables!`);
+ console.error();
+ }
+ }
+ return valid;
+};
+
+const variableRegExp = /({[a-zA-Z0-9]+})/g;
+
+const valid = fs
+ .readdirSync("lang")
+ .filter((f) => f.endsWith(".json"))
+ .map((messages) => {
+ const file = path.join("lang", messages);
+ const enFile = file.replace(/\.[a-z-]+\.json/, ".en.json");
+ const en = JSON.parse(fs.readFileSync(enFile));
+ const validKeys = new Set(Object.keys(en));
+ const data = {
+ // Ensure we fallback to English even if we haven't roundtripped via Crowdin yet.
+ ...en,
+ ...JSON.parse(fs.readFileSync(file)),
+ };
+ Object.keys(data).forEach((k) => {
+ if (!validKeys.has(k)) {
+ delete data[k];
+ }
+ });
+ const sortedKeys = Object.keys(data).sort();
+ const result = Object.create(null);
+ sortedKeys.forEach((k) => (result[k] = data[k]));
+ fs.writeFileSync(file, JSON.stringify(result, null, 2));
+ return areTranslationsValid(file, en, result);
+ })
+ .reduce((prev, curr) => prev && curr, true);
+
+const okExitStatus = 0;
+const seriousTroubleExistStatus = 2;
+process.exit(valid ? okExitStatus : seriousTroubleExistStatus);
diff --git a/ci.sh b/ci.sh
deleted file mode 100755
index 2140b2e8a..000000000
--- a/ci.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-# This script is used to run the CloudFlare pages CI build.
-# CloudFlare will automatically install the NPM dependencies.
-
-set -euxo pipefail
-
-# This lint step fails so disabled for now. Does it work upstream?
-npm run check || echo "Temporarily allowed to fail"
-
-# This is very close to passing. Two files need fixing to enable it.
-npx prettier --check src || echo "Temporarily allowed to fail"
-
-npm run test
-npm run build
\ No newline at end of file
diff --git a/deployment.cjs b/deployment.cjs
index bb23bad1c..aec317135 100644
--- a/deployment.cjs
+++ b/deployment.cjs
@@ -1,53 +1,51 @@
const {
createDeploymentDetailsFromOptions,
-} = require('@microbit-foundation/website-deploy-aws-config');
-const posixPath = require('path/posix');
+} = require("@microbit-foundation/website-deploy-aws-config");
const { s3Config } = createDeploymentDetailsFromOptions({
production: {
- bucket: 'ml.microbit.org',
- mode: 'root',
+ bucket: "createai.microbit.org",
+ mode: "root",
allowPrerelease: false,
},
staging: {
- bucket: 'stage-ml.microbit.org',
+ bucket: "stage-createai.microbit.org",
},
review: {
- bucket: 'review-ml.microbit.org',
- mode: 'branch-prefix',
+ bucket: "review-createai.microbit.org",
+ mode: "branch-prefix",
},
});
module.exports = {
- deploymentDir: './dist',
+ deploymentDir: "./dist",
...s3Config,
- // For non-review versions deploy to the prototype URL
- bucketPrefix: s3Config.bucketPrefix ?? 'v/prototype',
- region: 'eu-west-1',
+ region: "eu-west-1",
removeNonexistentObjects: true,
enableS3StaticWebsiteHosting: true,
- errorDocumentKey: 'index.html',
+ errorDocumentKey: "index.html",
redirects: [],
params: {
- '**/**.html': {
- CacheControl: 'public, max-age=0, must-revalidate',
+ "**/**.html": {
+ CacheControl: "public, max-age=0, must-revalidate",
},
- '**/assets/**': { CacheControl: 'public, max-age=31536000, immutable' },
+ "**/assets/**": { CacheControl: "public, max-age=31536000, immutable" },
// There's lots in public/ that we'd ideally use the bundler for to improve caching
- 'css/**': {
- CacheControl: 'public, max-age=0, must-revalidate',
+ // TODO: this might no longer be true, or at least be an easy fix
+ "css/**": {
+ CacheControl: "public, max-age=0, must-revalidate",
},
- 'firmware/**': {
- CacheControl: 'public, max-age=0, must-revalidate',
+ "firmware/**": {
+ CacheControl: "public, max-age=0, must-revalidate",
},
- 'imgs/**': {
- CacheControl: 'public, max-age=0, must-revalidate',
+ "imgs/**": {
+ CacheControl: "public, max-age=0, must-revalidate",
},
- 'sounds/**': {
- CacheControl: 'public, max-age=0, must-revalidate',
+ "sounds/**": {
+ CacheControl: "public, max-age=0, must-revalidate",
},
- 'webfonts/**': {
- CacheControl: 'public, max-age=0, must-revalidate',
+ "webfonts/**": {
+ CacheControl: "public, max-age=0, must-revalidate",
},
},
};
diff --git a/index.html b/index.html
index 893a90f74..4d21ebbaf 100644
--- a/index.html
+++ b/index.html
@@ -3,34 +3,37 @@
SPDX-License-Identifier: MIT
-->
-
+
-
- micro:bit machine learning tool
-
+ micro:bit CreateAI
+
+ content="Create AI by training a machine learning model with your movement data, testing it to see if it works, then writing your own code to use it on a BBC micro:bit"
+ />
+ content="Create AI on your BBC micro:bit using movement and machine learning"
+ />
-
-
-
-
+
+
-
+
diff --git a/lang/ui.en.json b/lang/ui.en.json
new file mode 100644
index 000000000..433834b2b
--- /dev/null
+++ b/lang/ui.en.json
@@ -0,0 +1,1134 @@
+{
+ "about": {
+ "defaultMessage": "About",
+ "description": "Menu item link to view information about app"
+ },
+ "about-dialog-alt": {
+ "defaultMessage": "micro:bit board showing a heart on the LED display",
+ "description": "Alt text for image in about dialog"
+ },
+ "about-dialog-title": {
+ "defaultMessage": "Developed in partnership with Center for Computational Thinking and Design, Aarhus University",
+ "description": "Title of about dialog"
+ },
+ "accelerometer-image-alt": {
+ "defaultMessage": "micro:bit showing X axis going across the front, Y axis going down and up, Z axis going back to front",
+ "description": "Alt text for image showing the board-relative directions of the X/Y/Z dimensions of the micro:bit accelerometer"
+ },
+ "actions-label": {
+ "defaultMessage": "Actions",
+ "description": "Label for Actions"
+ },
+ "actions.reconnect": {
+ "defaultMessage": "Reconnect",
+ "description": ""
+ },
+ "add-data-intro-description": {
+ "defaultMessage": "Add samples of the actions you would like your model to recognise (e.g. ‘waving’ and ‘clapping’).",
+ "description": "Add data step home page description"
+ },
+ "add-data-title": {
+ "defaultMessage": "Add data",
+ "description": "Add data step title"
+ },
+ "alert.data.classNameLengthAlert": {
+ "defaultMessage": "Action names cannot be longer than {maxLen} characters.",
+ "description": ""
+ },
+ "alert.deleteGestureConfirm": {
+ "defaultMessage": "Are you sure you want to delete the action \"{action}\"?",
+ "description": ""
+ },
+ "alert.deleteGestureConfirmHeading": {
+ "defaultMessage": "Confirm delete action",
+ "description": ""
+ },
+ "alert.recording.disconnectedDuringRecording": {
+ "defaultMessage": "micro:bit disconnected during recording",
+ "description": ""
+ },
+ "back-action": {
+ "defaultMessage": "Back",
+ "description": "Back button text"
+ },
+ "back-to-data-samples-action": {
+ "defaultMessage": "Back to data samples",
+ "description": "Back button text"
+ },
+ "cancel-action": {
+ "defaultMessage": "Cancel",
+ "description": "Cancel button text"
+ },
+ "close-action": {
+ "defaultMessage": "Close",
+ "description": "Close button text or label"
+ },
+ "coming-soon": {
+ "defaultMessage": "Coming soon",
+ "description": "Placeholder text for future projects"
+ },
+ "confirm-action": {
+ "defaultMessage": "Confirm",
+ "description": "Confirm button text"
+ },
+ "confirm-save-action": {
+ "defaultMessage": "Confirm and save",
+ "description": "Confirm and save action label"
+ },
+ "connect-help-alt": {
+ "defaultMessage": "WebUSB connection dialog with BBC micro:bit entry labelled 1 and Connect button labelled 2",
+ "description": "Alt text for image in connect help dialog"
+ },
+ "connect-or-import": {
+ "defaultMessage": "Connect a data collection micro:bit or import data samples ",
+ "description": "Empty data samples page text"
+ },
+ "connect-radio-data-collection-microbit-description": {
+ "defaultMessage": "Connect the data collection micro:bit to this computer to download your machine learning MakeCode program to it. If you're wearing the data collection micro:bit, you may need to remove it.",
+ "description": "Connect radio data collection micro:bit dialog description"
+ },
+ "connect-radio-data-collection-microbit-title": {
+ "defaultMessage": "Connect USB cable to the data collection micro:bit",
+ "description": "Connect radio data collection micro:bit dialog title"
+ },
+ "connect-to-record-body": {
+ "defaultMessage": "Connect a micro:bit to record a data sample.",
+ "description": "Insufficient data modal content"
+ },
+ "connect-to-record-title": {
+ "defaultMessage": "You don't have a micro:bit connected",
+ "description": "Connect to record modal title"
+ },
+ "connectFailed.bluetooth1": {
+ "defaultMessage": "The connection to the micro:bit could not be established.",
+ "description": ""
+ },
+ "connectFailed.bluetoothHeading": {
+ "defaultMessage": "Failed to connect to micro:bit",
+ "description": ""
+ },
+ "connectFailed.bridge1": {
+ "defaultMessage": "The connection to the micro:bit connected to your computer could not be established.",
+ "description": ""
+ },
+ "connectFailed.bridgeHeading": {
+ "defaultMessage": "Failed to connect to radio link micro:bit",
+ "description": ""
+ },
+ "connectFailed.remote1": {
+ "defaultMessage": "The connection to the data collection micro:bit could not be established.",
+ "description": ""
+ },
+ "connectFailed.remoteHeading": {
+ "defaultMessage": "Failed to connect to data collection micro:bit",
+ "description": ""
+ },
+ "connectMB.bluetooth.cancelledConnection": {
+ "defaultMessage": "You didn't choose a micro:bit. Do you want to try again?",
+ "description": ""
+ },
+ "connectMB.bluetooth.heading": {
+ "defaultMessage": "Connect using Web Bluetooth",
+ "description": ""
+ },
+ "connectMB.bluetooth.invalidPattern": {
+ "defaultMessage": "The pattern you have drawn is invalid.",
+ "description": ""
+ },
+ "connectMB.bluetoothStart.heading": {
+ "defaultMessage": "What you need to connect using Web Bluetooth",
+ "description": ""
+ },
+ "connectMB.bluetoothStart.requirements1": {
+ "defaultMessage": "1 micro:bit",
+ "description": ""
+ },
+ "connectMB.bluetoothStart.requirements2": {
+ "defaultMessage": "Computer",
+ "description": ""
+ },
+ "connectMB.bluetoothStart.requirements2.subtitle": {
+ "defaultMessage": "with Internet, a USB port & Web Bluetooth",
+ "description": ""
+ },
+ "connectMB.bluetoothStart.requirements3": {
+ "defaultMessage": "Micro USB cable",
+ "description": ""
+ },
+ "connectMB.bluetoothStart.requirements4": {
+ "defaultMessage": "Battery holder",
+ "description": ""
+ },
+ "connectMB.bluetoothStart.requirements4.subtitle": {
+ "defaultMessage": "with batteries",
+ "description": ""
+ },
+ "connectMB.bluetoothStart.switchRadio": {
+ "defaultMessage": "Connect using micro:bit radio instead",
+ "description": ""
+ },
+ "connectMB.connectBattery.heading": {
+ "defaultMessage": "Connect battery pack and disconnect USB",
+ "description": ""
+ },
+ "connectMB.connectBattery.link": {
+ "defaultMessage": "You can attach the micro:bit to your wrist or an object",
+ "description": ""
+ },
+ "connectMB.connectBattery.subtitle": {
+ "defaultMessage": "Disconnect the micro:bit from the computer and connect the battery pack.",
+ "description": ""
+ },
+ "connectMB.connectCable.altText": {
+ "defaultMessage": "animation showing a USB cable being connected to the top of a micro:bit",
+ "description": ""
+ },
+ "connectMB.connectCable.downloadProject.subtitle": {
+ "defaultMessage": "Connect a micro:bit to this computer with a USB cable to download your machine learning MakeCode program to it.",
+ "description": ""
+ },
+ "connectMB.connectCable.heading": {
+ "defaultMessage": "Connect USB cable to micro:bit",
+ "description": ""
+ },
+ "connectMB.connectCable.skip": {
+ "defaultMessage": "Skip: program already downloaded?",
+ "description": ""
+ },
+ "connectMB.connectCable.subtitle": {
+ "defaultMessage": "Connect the micro:bit to this computer with a USB cable so that the data collection program can be downloaded to it.",
+ "description": ""
+ },
+ "connectMB.connectCableMB1.heading": {
+ "defaultMessage": "Connect USB cable to micro:bit 1",
+ "description": ""
+ },
+ "connectMB.connectCableMB1.subtitle": {
+ "defaultMessage": "Connect the first micro:bit to this computer with a USB cable so that the data collection program can be downloaded to it. This is the micro:bit you will use to collect data samples.",
+ "description": ""
+ },
+ "connectMB.connectCableMB2.heading": {
+ "defaultMessage": "Connect USB cable to micro:bit 2",
+ "description": ""
+ },
+ "connectMB.connectCableMB2.subtitle": {
+ "defaultMessage": "Connect a second micro:bit to this computer with a USB cable so that the radio link program can be downloaded to it. This radio link micro:bit will communicate with the data collection micro:bit.",
+ "description": ""
+ },
+ "connectMB.connecting": {
+ "defaultMessage": "Connecting…",
+ "description": ""
+ },
+ "connectMB.nextButton": {
+ "defaultMessage": "Next",
+ "description": ""
+ },
+ "connectMB.outputMB.different": {
+ "defaultMessage": "Connect another micro:bit",
+ "description": ""
+ },
+ "connectMB.outputMB.otherButton": {
+ "defaultMessage": "Other",
+ "description": ""
+ },
+ "connectMB.outputMB.same": {
+ "defaultMessage": "Use the same micro:bit",
+ "description": ""
+ },
+ "connectMB.outputMB.sameButton": {
+ "defaultMessage": "Same",
+ "description": ""
+ },
+ "connectMB.pattern.heading": {
+ "defaultMessage": "Copy pattern",
+ "description": ""
+ },
+ "connectMB.pattern.inputLabel": {
+ "defaultMessage": "Number of LEDs lit in column {colNum} on the micro:bit display",
+ "description": ""
+ },
+ "connectMB.pattern.subtitle": {
+ "defaultMessage": "Copy the pattern displayed on the micro:bit.",
+ "description": ""
+ },
+ "connectMB.radio.heading": {
+ "defaultMessage": "Connecting micro:bits",
+ "description": ""
+ },
+ "connectMB.radioStart.heading": {
+ "defaultMessage": "What you need to connect using micro:bit radio",
+ "description": ""
+ },
+ "connectMB.radioStart.requirements1": {
+ "defaultMessage": "2 micro:bits",
+ "description": ""
+ },
+ "connectMB.radioStart.requirements1.subtitle": {
+ "defaultMessage": "V2 only",
+ "description": ""
+ },
+ "connectMB.radioStart.requirements2": {
+ "defaultMessage": "Computer",
+ "description": ""
+ },
+ "connectMB.radioStart.requirements2.subtitle": {
+ "defaultMessage": "with Internet & a USB port",
+ "description": ""
+ },
+ "connectMB.radioStart.requirements3": {
+ "defaultMessage": "Micro USB cable",
+ "description": ""
+ },
+ "connectMB.radioStart.requirements4": {
+ "defaultMessage": "Battery holder",
+ "description": ""
+ },
+ "connectMB.radioStart.requirements4.subtitle": {
+ "defaultMessage": "with batteries",
+ "description": ""
+ },
+ "connectMB.radioStart.switchBluetooth": {
+ "defaultMessage": "Connect using Web Bluetooth instead",
+ "description": ""
+ },
+ "connectMB.reconnecting": {
+ "defaultMessage": "Reconnecting…",
+ "description": ""
+ },
+ "connectMB.transferHex.altText": {
+ "defaultMessage": "animation of dragging a hex file from the downloads folder onto the micro:bit drive or device listed in the file explorer",
+ "description": ""
+ },
+ "connectMB.transferHex.heading": {
+ "defaultMessage": "Transfer saved hex file to micro:bit",
+ "description": ""
+ },
+ "connectMB.transferHex.manualDownload": {
+ "defaultMessage": "If the file did not automatically download then please download the file here.",
+ "description": ""
+ },
+ "connectMB.transferHex.message": {
+ "defaultMessage": "Drag the hex file from your Downloads folder to the MICROBIT drive.",
+ "description": ""
+ },
+ "connectMB.troubleshoot": {
+ "defaultMessage": "Troubleshoot problems with connecting to your micro:bit",
+ "description": ""
+ },
+ "connectMB.troubleshooting": {
+ "defaultMessage": "Troubleshooting",
+ "description": ""
+ },
+ "connectMB.tryAgain": {
+ "defaultMessage": "Try again",
+ "description": ""
+ },
+ "connectMB.unsupportedMicrobit.ctaWithBluetooth": {
+ "defaultMessage": "Connect with Web Bluetooth",
+ "description": ""
+ },
+ "connectMB.unsupportedMicrobit.explain": {
+ "defaultMessage": "Unfortunately, we only support using micro:bit V2 when connecting two micro:bits. You have connected a micro:bit V1.",
+ "description": ""
+ },
+ "connectMB.unsupportedMicrobit.header": {
+ "defaultMessage": "micro:bit V1 is not supported for connecting two micro:bits",
+ "description": ""
+ },
+ "connectMB.unsupportedMicrobit.withBluetooth": {
+ "defaultMessage": "Please use Web Bluetooth to connect to your micro:bit V1 instead.",
+ "description": ""
+ },
+ "connectMB.unsupportedMicrobit.withoutBluetooth": {
+ "defaultMessage": "You can connect to micro:bit V1 using Web Bluetooth, however, this browser or device does not have Bluetooth enabled. How to enable Bluetooth.",
+ "description": ""
+ },
+ "connectMB.usb.firmwareBroken.content1": {
+ "defaultMessage": "Connecting to the micro:bit failed because the firmware on your micro:bit is too old.",
+ "description": ""
+ },
+ "connectMB.usb.firmwareBroken.content2": {
+ "defaultMessage": "You must update your firmware before you can connect to this micro:bit.",
+ "description": ""
+ },
+ "connectMB.usb.firmwareBroken.content3": {
+ "defaultMessage": "Troubleshoot problems with connecting to your micro:bit",
+ "description": ""
+ },
+ "connectMB.usb.firmwareBroken.heading": {
+ "defaultMessage": "Firmware update required",
+ "description": ""
+ },
+ "connectMB.usb.firmwareBroken.skip": {
+ "defaultMessage": "Skip and transfer manually",
+ "description": ""
+ },
+ "connectMB.usbDownloading.header": {
+ "defaultMessage": "Downloading program to micro:bit",
+ "description": ""
+ },
+ "connectMB.usbDownloading.subtitle": {
+ "defaultMessage": "Please wait. Downloading program to micro:bit.",
+ "description": ""
+ },
+ "connectMB.usbDownloadingMB1.header": {
+ "defaultMessage": "Downloading the data collection program",
+ "description": ""
+ },
+ "connectMB.usbDownloadingMB2.header": {
+ "defaultMessage": "Downloading the radio link program",
+ "description": ""
+ },
+ "connectMB.usbTryAgain.closeTabs1": {
+ "defaultMessage": "Another process is connected to this device.",
+ "description": ""
+ },
+ "connectMB.usbTryAgain.closeTabs2": {
+ "defaultMessage": "Close any other tabs that may be using WebUSB (e.g. MakeCode, Python Editor, {appNameShort}), or unplug and replug the micro:bit before trying again.",
+ "description": ""
+ },
+ "connectMB.usbTryAgain.heading": {
+ "defaultMessage": "Connect using WebUSB",
+ "description": ""
+ },
+ "connectMB.usbTryAgain.replugMicrobit1": {
+ "defaultMessage": "A WebUSB error occurred.",
+ "description": ""
+ },
+ "connectMB.usbTryAgain.replugMicrobit2": {
+ "defaultMessage": "Please:",
+ "description": ""
+ },
+ "connectMB.usbTryAgain.replugMicrobit3": {
+ "defaultMessage": "check that this micro:bit does not have a battery pack connected",
+ "description": ""
+ },
+ "connectMB.usbTryAgain.replugMicrobit4": {
+ "defaultMessage": "unplug and replug the USB cable",
+ "description": ""
+ },
+ "connectMB.usbTryAgain.selectMicrobit": {
+ "defaultMessage": "You didn't select a micro:bit. Do you want to try again?",
+ "description": ""
+ },
+ "connectMB.webPopup": {
+ "defaultMessage": "Select micro:bit",
+ "description": ""
+ },
+ "connectMB.webPopup.instruction.heading": {
+ "defaultMessage": "In the next popup",
+ "description": ""
+ },
+ "connectMB.webPopup.instruction1": {
+ "defaultMessage": "Choose your micro:bit",
+ "description": ""
+ },
+ "connectMB.webPopup.webBluetooth.altText": {
+ "defaultMessage": "Web Bluetooth connection dialog with BBC micro:bit entry labelled 1 and Pair button labelled 2",
+ "description": ""
+ },
+ "connectMB.webPopup.webBluetooth.instruction2": {
+ "defaultMessage": "Select 'Pair'",
+ "description": ""
+ },
+ "connectMB.webPopup.webUsb.instruction2": {
+ "defaultMessage": "Select 'Connect'",
+ "description": ""
+ },
+ "content.data.addAction": {
+ "defaultMessage": "Add action",
+ "description": ""
+ },
+ "content.data.addActionWalkThrough": {
+ "defaultMessage": "Name an action you want the micro:bit to recognise",
+ "description": ""
+ },
+ "content.data.addRecordingWalkThrough": {
+ "defaultMessage": "Press to record a data sample or press button B on your micro:bit.",
+ "description": ""
+ },
+ "content.data.classHelpBody": {
+ "defaultMessage": "The type of movement you want {appNameFull} to recognise e.g. ‘waving’ or ‘clapping’.",
+ "description": ""
+ },
+ "content.data.classPlaceholderNewClass": {
+ "defaultMessage": "Name of action",
+ "description": ""
+ },
+ "content.data.classification": {
+ "defaultMessage": "Action",
+ "description": ""
+ },
+ "content.data.controlbar.button.clearData": {
+ "defaultMessage": "Delete all data samples",
+ "description": ""
+ },
+ "content.data.controlbar.button.downloadData": {
+ "defaultMessage": "Download all data samples",
+ "description": ""
+ },
+ "content.data.controlbar.button.menu": {
+ "defaultMessage": "Data actions",
+ "description": ""
+ },
+ "content.data.controlbar.button.uploadData": {
+ "defaultMessage": "Import data samples",
+ "description": ""
+ },
+ "content.data.data": {
+ "defaultMessage": "Data samples",
+ "description": ""
+ },
+ "content.data.dataDescription": {
+ "defaultMessage": "Short collections of movement data lasting approximately 2 seconds. Your data samples are only stored on your computer, they do not get sent to anyone else.",
+ "description": ""
+ },
+ "content.data.deleteAction": {
+ "defaultMessage": "Delete action \"{action}\"",
+ "description": ""
+ },
+ "content.data.deleteRecording": {
+ "defaultMessage": "Delete recording",
+ "description": ""
+ },
+ "content.data.recordAction": {
+ "defaultMessage": "Record data for action \"{action}\"",
+ "description": ""
+ },
+ "content.data.recording.button.cancel": {
+ "defaultMessage": "Cancel recording",
+ "description": ""
+ },
+ "content.data.recordingDialog.go": {
+ "defaultMessage": "Go",
+ "description": ""
+ },
+ "content.data.recordingDialog.recording": {
+ "defaultMessage": "Recording",
+ "description": ""
+ },
+ "content.data.recordingDialog.title": {
+ "defaultMessage": "Record data for action \"{action}\"",
+ "description": ""
+ },
+ "content.index.dataWarning.subtitleOne": {
+ "defaultMessage": "You have existing data samples and code that will be lost when you start a new session.",
+ "description": ""
+ },
+ "content.index.dataWarning.subtitleTwo": {
+ "defaultMessage": "To save your work, download a hex file containing your data samples and code before continuing.",
+ "description": ""
+ },
+ "content.index.dataWarning.title": {
+ "defaultMessage": "Existing data samples and code will be lost",
+ "description": ""
+ },
+ "content.model.output.action.descriptionBody": {
+ "defaultMessage": "The type of movement you want {appNameFull} to recognise e.g. ‘waving’ or ‘clapping’.",
+ "description": ""
+ },
+ "content.model.output.action.descriptionTitle": {
+ "defaultMessage": "Action",
+ "description": ""
+ },
+ "content.model.output.certainty.descriptionBody": {
+ "defaultMessage": "How confident the model is that you are currently doing each action.",
+ "description": ""
+ },
+ "content.model.output.certainty.descriptionTitle": {
+ "defaultMessage": "Certainty",
+ "description": ""
+ },
+ "content.model.output.estimatedGesture.descriptionBody": {
+ "defaultMessage": "This is the action the model thinks you are currently doing.",
+ "description": ""
+ },
+ "content.model.output.estimatedGesture.descriptionTitle": {
+ "defaultMessage": "Estimated action",
+ "description": ""
+ },
+ "content.model.output.estimatedGesture.iconTitle": {
+ "defaultMessage": "Estimated action",
+ "description": ""
+ },
+ "content.model.output.estimatedGesture.label": {
+ "defaultMessage": "Estimated action: \"{action}\"",
+ "description": ""
+ },
+ "content.model.output.output.descriptionBody": {
+ "defaultMessage": "These MakeCode blocks will show icons for each action detected when you transfer your code and model to a micro:bit.",
+ "description": ""
+ },
+ "content.model.output.output.descriptionTitle": {
+ "defaultMessage": "Output",
+ "description": ""
+ },
+ "content.model.output.recognitionPoint": {
+ "defaultMessage": "Recognition point:",
+ "description": ""
+ },
+ "content.trainer.description": {
+ "defaultMessage": "The computer program spots patterns or differences in your data samples, and uses these to build a mathematical model that allows {appNameFull} to recognise different actions when you move your micro:bit.",
+ "description": ""
+ },
+ "content.trainer.failure.body": {
+ "defaultMessage": "The training did not result in a usable model. The reason for this is most likely the data used for training. If the data samples for different actions are too similar, this can result in issues in the training process.",
+ "description": ""
+ },
+ "content.trainer.failure.header": {
+ "defaultMessage": "Training failed",
+ "description": ""
+ },
+ "content.trainer.failure.todo": {
+ "defaultMessage": "Return to the Add data page and change your data.",
+ "description": ""
+ },
+ "content.trainer.header": {
+ "defaultMessage": "Training a model",
+ "description": ""
+ },
+ "content.trainer.training.title": {
+ "defaultMessage": "Training model…",
+ "description": "Progress title"
+ },
+ "cookies-action": {
+ "defaultMessage": "Cookies",
+ "description": "Action to show dialog to choose website cookie preferences"
+ },
+ "copied": {
+ "defaultMessage": "Copied",
+ "description": "Displayed as copy button text briefly after successful copy action"
+ },
+ "copy-action": {
+ "defaultMessage": "Copy",
+ "description": "Copy button text"
+ },
+ "data-collection-microbit": {
+ "defaultMessage": "Data collection micro:bit",
+ "description": "Data collection micro:bit image caption"
+ },
+ "data-collection-microbit-label": {
+ "defaultMessage": "diagram showing data collection micro:bit being connected to a person's wrist",
+ "description": "Aria label for data collection image"
+ },
+ "data-samples-title": {
+ "defaultMessage": "Data samples",
+ "description": "Data samples page title"
+ },
+ "disconnectedWarning.bluetooth1": {
+ "defaultMessage": "The connection to the micro:bit has been lost.",
+ "description": ""
+ },
+ "disconnectedWarning.bluetooth2": {
+ "defaultMessage": "Please check that the micro:bit:",
+ "description": ""
+ },
+ "disconnectedWarning.bluetooth3": {
+ "defaultMessage": "is powered on (the red light on the back of the micro:bit should be on)",
+ "description": ""
+ },
+ "disconnectedWarning.bluetooth4": {
+ "defaultMessage": "is close to the computer",
+ "description": ""
+ },
+ "disconnectedWarning.bluetoothHeading": {
+ "defaultMessage": "micro:bit connection lost",
+ "description": ""
+ },
+ "disconnectedWarning.bridge1": {
+ "defaultMessage": "The connection to the micro:bit connected to your computer has been lost.",
+ "description": ""
+ },
+ "disconnectedWarning.bridgeHeading": {
+ "defaultMessage": "radio link micro:bit connection lost",
+ "description": ""
+ },
+ "disconnectedWarning.remote1": {
+ "defaultMessage": "The connection to the data connection micro:bit has been lost.",
+ "description": ""
+ },
+ "disconnectedWarning.remoteHeading": {
+ "defaultMessage": "data collection micro:bit connection lost",
+ "description": ""
+ },
+ "dont-show-again": {
+ "defaultMessage": "Don't show this again",
+ "description": "Text to never show a dialog again"
+ },
+ "download-project-choose-microbit-subtitle": {
+ "defaultMessage": "Downloading your project on to the same micro:bit will disconnect the micro:bit from the tool. You will need to reconnect the micro:bit if you want to record more data samples.",
+ "description": "Download project choose micro:bit dialog subtitle"
+ },
+ "download-project-choose-microbit-title": {
+ "defaultMessage": "Which micro:bit do you want to use?",
+ "description": "Download project choose micro:bit dialog title"
+ },
+ "download-project-different-microbit-option": {
+ "defaultMessage": "Different micro:bit",
+ "description": "Download project different micro:bit option"
+ },
+ "download-project-intro-description": {
+ "defaultMessage": "Your program includes the machine learning model you created. The model runs on the micro:bit so you can use it without being connected to {appNameFull}.",
+ "description": "Download project intro dialog description"
+ },
+ "download-project-intro-title": {
+ "defaultMessage": "Download your machine learning MakeCode project",
+ "description": "Download project intro dialog title"
+ },
+ "download-project-same-microbit-option": {
+ "defaultMessage": "Same micro:bit",
+ "description": "Download project same micro:bit option"
+ },
+ "edit-in-makecode-action": {
+ "defaultMessage": "Edit in MakeCode",
+ "description": "Edit in MakeCode button text"
+ },
+ "feedback": {
+ "defaultMessage": "Feedback",
+ "description": "Action to open a feedback dialog"
+ },
+ "footer.connectButton": {
+ "defaultMessage": "Connect",
+ "description": ""
+ },
+ "footer.disconnectButton": {
+ "defaultMessage": "Disconnect",
+ "description": ""
+ },
+ "footer.helpContent": {
+ "defaultMessage": "This graph shows movement data from the micro:bit's accelerometer in real time. Try moving your data collection micro:bit to see the X, Y and Z axes change. Each coloured line represents a different direction (dimension) you are moving the micro:bit in.",
+ "description": ""
+ },
+ "footer.helpHeader": {
+ "defaultMessage": "Live graph",
+ "description": ""
+ },
+ "get-started-action": {
+ "defaultMessage": "Get started",
+ "description": "Get started action"
+ },
+ "help-label": {
+ "defaultMessage": "Help",
+ "description": "Help icon aria label"
+ },
+ "help-support": {
+ "defaultMessage": "Help & support",
+ "description": "Link or menu item link to support site"
+ },
+ "home-action": {
+ "defaultMessage": "Home",
+ "description": "Home button text"
+ },
+ "homepage-description": {
+ "defaultMessage": "Train a machine learning model on your own movement data and run it on your micro:bit.",
+ "description": "Home page description"
+ },
+ "homepage-how-it-works": {
+ "defaultMessage": "How it works",
+ "description": "Home page section heading"
+ },
+ "homepage-projects": {
+ "defaultMessage": "Projects",
+ "description": "Home page section heading"
+ },
+ "homepage-step-by-step": {
+ "defaultMessage": "Step by step",
+ "description": "Home page section heading"
+ },
+ "homepage-subtitle": {
+ "defaultMessage": "Create AI on your BBC micro:bit using movement and machine learning.",
+ "description": "Home page subtitle"
+ },
+ "homepage-video-alt": {
+ "defaultMessage": "Introductory video",
+ "description": "Home page video alt text"
+ },
+ "homepage-video-prompt": {
+ "defaultMessage": "Watch the video to learn how to use {appNameFull}.",
+ "description": "Prompt to watch the video on the home page"
+ },
+ "homepage.Link": {
+ "defaultMessage": "Home page",
+ "description": ""
+ },
+ "insufficient-data-body": {
+ "defaultMessage": "You need at least 3 data samples for 2 actions to train the model.",
+ "description": "Insufficient data modal content"
+ },
+ "insufficient-data-title": {
+ "defaultMessage": "You don't have enough data",
+ "description": "Insufficient data modal title"
+ },
+ "language": {
+ "defaultMessage": "Language",
+ "description": "Language option text"
+ },
+ "live-data-graph": {
+ "defaultMessage": "Live data graph",
+ "description": "Title for live data graph"
+ },
+ "main-menu": {
+ "defaultMessage": "Main menu",
+ "description": "Main menu label"
+ },
+ "menu.trainer.notConnected1": {
+ "defaultMessage": "You do not have a micro:bit connected",
+ "description": ""
+ },
+ "menu.trainer.notConnected2": {
+ "defaultMessage": " Select the ‘Connect’ button to connect a micro:bit.",
+ "description": ""
+ },
+ "menu.trainer.trainModelButton": {
+ "defaultMessage": "Train model",
+ "description": ""
+ },
+ "more-edit-in-makecode-options": {
+ "defaultMessage": "More edit in MakeCode options",
+ "description": "Aria label for the additional actions menu to the right of the Edit in MakeCode button"
+ },
+ "name-project": {
+ "defaultMessage": "Name your project",
+ "description": "Name your project header"
+ },
+ "name-text": {
+ "defaultMessage": "Name",
+ "description": "Header for name field"
+ },
+ "name-used-when": {
+ "defaultMessage": "The name is used when you save a file.",
+ "description": "Text under project name field"
+ },
+ "newpage-continue-session-instruction": {
+ "defaultMessage": "To continue a saved session from a file please select a file.",
+ "description": "Instruction to users to continue a saved session from a file"
+ },
+ "newpage-continue-session-subtitle": {
+ "defaultMessage": "Use a hex file or data samples file you saved to your computer to continue a session.",
+ "description": "Continue session subtitle"
+ },
+ "newpage-continue-session-title": {
+ "defaultMessage": "Continue a saved session",
+ "description": "Continue session title"
+ },
+ "newpage-heading-subtitle": {
+ "defaultMessage": "Run whole class sessions, easily share code with students and save progress",
+ "description": "Homepage heading subtitle"
+ },
+ "newpage-last-session-date": {
+ "defaultMessage": "Date: {date}",
+ "description": "Last session date label"
+ },
+ "newpage-last-session-name": {
+ "defaultMessage": "Name: {name}",
+ "description": "Last session name label"
+ },
+ "newpage-last-session-none": {
+ "defaultMessage": "No session found",
+ "description": "Last session not found text"
+ },
+ "newpage-last-session-title": {
+ "defaultMessage": "Open last session",
+ "description": "Open last session title"
+ },
+ "newpage-new-session-subtitle": {
+ "defaultMessage": "Connect your micro:bit and collect movement data to build a machine learning model",
+ "description": "Start new session subtitle"
+ },
+ "newpage-new-session-title": {
+ "defaultMessage": "New session",
+ "description": "Start new session title"
+ },
+ "newpage-section-one-title": {
+ "defaultMessage": "Pick up where you left off",
+ "description": "Homepage section one title"
+ },
+ "newpage-section-two-title": {
+ "defaultMessage": "Start something new",
+ "description": "Homepage section two title"
+ },
+ "newpage-subtitle": {
+ "defaultMessage": "Introduce students to machine learning concepts through physical movement and data",
+ "description": "Subtitle of micro:bit AI creator home page"
+ },
+ "newpage-title": {
+ "defaultMessage": "New session",
+ "description": "New page title"
+ },
+ "no-data-samples": {
+ "defaultMessage": "No data samples",
+ "description": "Empty data samples page status text"
+ },
+ "not-found": {
+ "defaultMessage": "{appNameFull} home page",
+ "description": "Page not found link text"
+ },
+ "not-found-title": {
+ "defaultMessage": "Page not found",
+ "description": "Page not found page title"
+ },
+ "open-file-action": {
+ "defaultMessage": "Open…",
+ "description": "Open file button text"
+ },
+ "open-file-dropped": {
+ "defaultMessage": "Open file when dropped",
+ "description": "Aria label for file drop target"
+ },
+ "popup.compatibility.advice": {
+ "defaultMessage": "We recommend Google Chrome or Microsoft Edge so you can connect directly to your micro:bit.",
+ "description": ""
+ },
+ "popup.compatibility.explain": {
+ "defaultMessage": "Unfortunately, WebUSB and Web Bluetooth are not supported by this browser. This means you cannot connect to a micro:bit to record the data samples needed to train a machine learning model.",
+ "description": ""
+ },
+ "popup.compatibility.header": {
+ "defaultMessage": "This browser is not supported",
+ "description": ""
+ },
+ "privacy": {
+ "defaultMessage": "Privacy policy",
+ "description": "Link to view privacy policy"
+ },
+ "project-loaded": {
+ "defaultMessage": "Project loaded",
+ "description": "Toast when a new project is loaded"
+ },
+ "project-name-not-empty": {
+ "defaultMessage": "The project name cannot be empty",
+ "description": "Validation message for project name"
+ },
+ "radio-link-microbit": {
+ "defaultMessage": "Radio link micro:bit",
+ "description": "Radio link micro:bit image caption"
+ },
+ "radio-link-microbit-label": {
+ "defaultMessage": "diagram showing radio link micro:bit being connected with a computer",
+ "description": "Aria label for radio link image"
+ },
+ "reconnectFailed.bluetooth1": {
+ "defaultMessage": "The connection to the micro:bit could not be re-established.",
+ "description": ""
+ },
+ "reconnectFailed.bluetoothHeading": {
+ "defaultMessage": "Failed to reconnect to micro:bit",
+ "description": ""
+ },
+ "reconnectFailed.bridge1": {
+ "defaultMessage": "The connection to the micro:bit connected to your computer could not be re-established.",
+ "description": ""
+ },
+ "reconnectFailed.bridgeHeading": {
+ "defaultMessage": "Failed to reconnect to radio link micro:bit",
+ "description": ""
+ },
+ "reconnectFailed.radioHeading": {
+ "defaultMessage": "Failed to reconnect to micro:bits",
+ "description": ""
+ },
+ "reconnectFailed.remote1": {
+ "defaultMessage": "The connection to the data collection micro:bit could not be re-established.",
+ "description": ""
+ },
+ "reconnectFailed.remoteHeading": {
+ "defaultMessage": "Failed to reconnect to data collection micro:bit",
+ "description": ""
+ },
+ "reconnectFailed.subtitle": {
+ "defaultMessage": "Follow these instructions to restart the connection process.",
+ "description": ""
+ },
+ "reload-action": {
+ "defaultMessage": "Click to reload the page",
+ "description": "Reload page button text"
+ },
+ "reset-to-default-action": {
+ "defaultMessage": "Reset to default blocks",
+ "description": "Reset to default blocks button text"
+ },
+ "save-action": {
+ "defaultMessage": "Save",
+ "description": "Label for action that saves the project as a file the user downloads"
+ },
+ "save-hex-dialog-heading": {
+ "defaultMessage": "Save project as a hex file",
+ "description": "Heading for the dialog shown when saving a hex file"
+ },
+ "save-hex-dialog-message1": {
+ "defaultMessage": "The download contains your actions, data samples and your MakeCode project. Open it in {appNameFull} to continue working.",
+ "description": "Text in the dialog shown when saving a hex file"
+ },
+ "save-hex-dialog-message2": {
+ "defaultMessage": "You can also open it with Microsoft MakeCode if you don't need to change the actions and data samples.",
+ "description": "Text in the dialog shown when saving a hex file"
+ },
+ "saving-description": {
+ "defaultMessage": "Your download will be ready soon.",
+ "description": "Saving progress dialog text"
+ },
+ "saving-title": {
+ "defaultMessage": "Saving…",
+ "description": "Saving progress title"
+ },
+ "saving-toast-title": {
+ "defaultMessage": "Your hex file has been downloaded",
+ "description": "Notification after a hex file has been downloaded"
+ },
+ "settings-menu-action": {
+ "defaultMessage": "Settings actions menu",
+ "description": "Label for settings actions menu button"
+ },
+ "skip-tour-action": {
+ "defaultMessage": "Skip tour",
+ "description": "Skip tour button text"
+ },
+ "software-versions": {
+ "defaultMessage": "Software versions",
+ "description": "Software versions text"
+ },
+ "start-training-action": {
+ "defaultMessage": "Start training",
+ "description": "Start training button text"
+ },
+ "steps-code": {
+ "defaultMessage": "Code",
+ "description": "Step in home page diagram"
+ },
+ "steps-collect-data": {
+ "defaultMessage": "Collect data",
+ "description": "Step in home page diagram"
+ },
+ "steps-improve": {
+ "defaultMessage": "Improve",
+ "description": "Step in home page diagram"
+ },
+ "steps-test-model": {
+ "defaultMessage": "Test model",
+ "description": "Step in home page diagram"
+ },
+ "steps-train": {
+ "defaultMessage": "Train",
+ "description": "Step in home page diagram"
+ },
+ "support-request": {
+ "defaultMessage": "Please consider raising a support request.",
+ "description": "Support request link text"
+ },
+ "terms": {
+ "defaultMessage": "Terms of use",
+ "description": "Link or menu item link to view terms of use"
+ },
+ "test-model-intro-description": {
+ "defaultMessage": "Find out if it correctly recognises each action. Add more data to improve the model.",
+ "description": "Test model step home page description"
+ },
+ "test-model-title": {
+ "defaultMessage": "Test model",
+ "description": "Test model step title"
+ },
+ "testing-model-title": {
+ "defaultMessage": "Testing model",
+ "description": "Testing model page title"
+ },
+ "tour-collectData-addActions-content": {
+ "defaultMessage": "Decide what your other actions will be and what you will name them. You need at least 2 actions with 3 data samples to train the model. Your data samples are only stored on your computer, they do not get sent to anyone else.",
+ "description": "Tour step description"
+ },
+ "tour-collectData-addActions-title": {
+ "defaultMessage": "Add more actions",
+ "description": "Tour step title"
+ },
+ "tour-collectData-afterFirst-content": {
+ "defaultMessage": "To train the machine learning model you need at least 3 data samples for 2 different actions.",
+ "description": "Tour step description"
+ },
+ "tour-collectData-afterFirst-title": {
+ "defaultMessage": "You’ve recorded your first sample!",
+ "description": "Tour step title"
+ },
+ "tour-collectData-collectMore-content": {
+ "defaultMessage": "Record more samples for this action. Collecting more samples should result in a better machine learning model.",
+ "description": "Tour step description"
+ },
+ "tour-collectData-collectMore-title": {
+ "defaultMessage": "Collect more data samples",
+ "description": "Tour step title"
+ },
+ "tour-collectData-trainModel-content": {
+ "defaultMessage": "When you have collected enough data samples you can train the machine learning model. You can come back later to remove or add more data and re-train to make the model more reliable.",
+ "description": "Tour step description"
+ },
+ "tour-dataSamples-actions-content": {
+ "defaultMessage": "An action is the type of movement you want the machine learning tool to recognise e.g. ‘waving’ or ‘clapping’. Decide what your first action will be, name it and then start recording data samples.",
+ "description": "Tour step content"
+ },
+ "tour-dataSamples-connected-content": {
+ "defaultMessage": "Now you can start collecting data samples to train a machine learning (ML) model to recognise different movements.",
+ "description": "Tour step content"
+ },
+ "tour-dataSamples-connected-title": {
+ "defaultMessage": "Your data collection micro:bit is connected!",
+ "description": "Tour step title"
+ },
+ "tour-dataSamples-liveGraph-content": {
+ "defaultMessage": "The graph shows movement data from the micro:bit’s accelerometer. Move your data collection micro:bit and see how the graph changes.",
+ "description": "Tour step content"
+ },
+ "tour-testModel-afterTrain-content": {
+ "defaultMessage": "Now test your machine learning model. Try each action by moving your data collection micro:bit. Does the model detect each action?",
+ "description": "Tour step description"
+ },
+ "tour-testModel-afterTrain-title": {
+ "defaultMessage": "You’ve trained an ML model!",
+ "description": "Tour step title"
+ },
+ "tour-testModel-certaintyRecognition-content": {
+ "defaultMessage": "The meter shows how confident the model is that you are doing each action. Move the slider to adjust the recognition point, or threshold.",
+ "description": "Tour step description"
+ },
+ "tour-testModel-certaintyRecognition-title": {
+ "defaultMessage": "Certainty and recognition point",
+ "description": "Tour step title"
+ },
+ "tour-testModel-editInMakeCode-content": {
+ "defaultMessage": "Open your project in MakeCode to download the program and your machine learning model to a micro:bit. You can add more blocks to create your own programs using your model.",
+ "description": "Tour step description"
+ },
+ "tour-testModel-estimatedAction-content": {
+ "defaultMessage": "The action the model estimates you are currently doing is shown above the micro:bit icon for that action.",
+ "description": "Tour step description"
+ },
+ "tour-testModel-makeCodeBlocks-content": {
+ "defaultMessage": "These MakeCode blocks will show icons for each action detected when you transfer your code and model to a micro:bit.",
+ "description": "Tour step description"
+ },
+ "tour-testModel-makeCodeBlocks-title": {
+ "defaultMessage": "Microsoft MakeCode blocks",
+ "description": "Tour step title"
+ },
+ "train-model-intro-description": {
+ "defaultMessage": "Ask the computer to use your training samples to train the machine learning model to recognise different actions.",
+ "description": "Train model step home page description"
+ },
+ "train-model-title": {
+ "defaultMessage": "Train model",
+ "description": "Train model step title"
+ },
+ "unknown": {
+ "defaultMessage": "unknown",
+ "description": "Label for unknown ML event"
+ },
+ "unplug-radio-link-microbit-description": {
+ "defaultMessage": "Unplug the radio link micro:bit from the computer. You will need to reconnect the micro:bit if you want to record more data samples.",
+ "description": "Unplug radio link micro:bit dialog description"
+ },
+ "unplug-radio-link-microbit-label": {
+ "defaultMessage": "animation showing a USB cable being disconnected from the top of a micro:bit",
+ "description": "Unplug radio link micro:bit dialog aria label"
+ },
+ "unplug-radio-link-microbit-title": {
+ "defaultMessage": "Unplug the radio link micro:bit",
+ "description": "Unplug radio link micro:bit dialog title"
+ }
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 0e5d43ab4..f3b9162a6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,80 +1,75 @@
{
- "name": "ml-machine",
+ "name": "ai-creator",
"version": "0.6.0-local",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "ml-machine",
+ "name": "ai-creator",
"version": "0.6.0-local",
+ "hasInstallScript": true,
"license": "MIT",
"dependencies": {
- "@microsoft/applicationinsights-web": "^3.0.0",
- "@sentry/svelte": "^7.100.1",
- "@tensorflow/tfjs": "^4.4.0",
+ "@chakra-ui/icons": "^2.1.1",
+ "@chakra-ui/react": "^2.8.2",
+ "@emotion/react": "^11.11.4",
+ "@emotion/styled": "^11.11.5",
+ "@microbit/makecode-embed": "^0.0.0-alpha.7",
+ "@microbit/microbit-connection": "^0.0.0-alpha.21",
+ "@microbit/ml-header-generator": "^0.4.3",
+ "@tensorflow/tfjs": "^4.20.0",
"@types/w3c-web-serial": "^1.0.6",
"@types/w3c-web-usb": "^1.0.6",
+ "@vitejs/plugin-react": "^4.3.1",
"bowser": "^2.11.0",
- "browser-lang": "^0.2.1",
"chart.js": "^4.2.1",
- "d3": "^7.8.5",
- "dapjs": "^2.3.0",
- "js-cookie": "^3.0.4",
- "postcss": "^8.4.23",
+ "framer-motion": "^10.2.4",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.upperfirst": "^4.3.1",
+ "ml4f": "git://github.com/microsoft/ml4f#v1.10.1",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-icons": "^4.12.0",
+ "react-intl": "^6.6.8",
+ "react-router": "^6.24.0",
+ "react-router-dom": "^6.24.0",
"smoothie": "^1.36.1",
- "svelte-i18n": "^4.0.0",
- "svelte-skeleton": "^1.3.1",
- "svelte-transition": "^0.0.10",
- "three": "^0.152.2",
- "uuid4": "^2.0.3"
+ "zustand": "^4.5.5"
},
"devDependencies": {
- "@babel/preset-env": "^7.23.5",
- "@bulatdashiev/svelte-slider": "^1.0.3",
- "@iconify-json/mdi": "^1.1.63",
- "@iconify-json/ri": "^1.1.17",
- "@melt-ui/pp": "^0.3.0",
- "@melt-ui/svelte": "^0.70.0",
- "@sveltejs/vite-plugin-svelte": "^3.0.1",
- "@testing-library/jest-dom": "^6.2.0",
- "@testing-library/svelte": "^4.0.5",
- "@tsconfig/svelte": "^4.0.1",
- "@types/browser-lang": "^0.1.1",
+ "@chakra-ui/cli": "^2.4.1",
+ "@formatjs/cli": "^6.2.7",
+ "@playwright/test": "^1.42.1",
+ "@testing-library/jest-dom": "^5.14.1",
+ "@testing-library/react": "^14.0.0",
+ "@testing-library/user-event": "^14.0.0",
"@types/d3": "^7.4.1",
- "@types/js-cookie": "^3.0.3",
+ "@types/ejs": "^3.1.5",
+ "@types/lodash.camelcase": "^4.3.9",
+ "@types/lodash.upperfirst": "^4.3.9",
"@types/node": "^18.16.0",
- "@types/three": "^0.152.0",
- "@types/w3c-web-usb": "^1.0.6",
- "@types/web-bluetooth": "^0.0.17",
- "@typescript-eslint/eslint-plugin": "^5.59.0",
- "@typescript-eslint/parser": "^5.59.0",
- "eslint": "^8.43.0",
- "eslint-plugin-svelte": "^2.32.1",
- "jsdom": "^23.2.0",
- "prettier": "^3.1.0",
- "prettier-plugin-svelte": "^3.1.2",
- "svelte": "^4.0.0",
- "svelte-check": "^3.6.2",
- "svelte-preprocess": "^5.0.3",
- "svelte-windicss-preprocess": "^4.2.2",
- "tslib": "^2.5.0",
- "typescript": "^5.0.4",
- "unplugin-icons": "^0.18.1",
- "vite": "^5.0.7",
- "vite-plugin-windicss": "^1.9.3",
- "vitest": "^1.0.4",
+ "@types/react": "^18.3.3",
+ "@types/react-dom": "^18.3.0",
+ "@typescript-eslint/eslint-plugin": "^7.2.0",
+ "@typescript-eslint/parser": "^7.2.0",
+ "@vitejs/plugin-react": "^4.2.1",
+ "cross-env": "^7.0.3",
+ "ejs": "^3.1.9",
+ "eslint": "^8.57.0",
+ "eslint-plugin-react": "^7.34.0",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "eslint-plugin-react-refresh": "^0.4.6",
+ "jsdom": "^24.0.0",
+ "playwright": "^1.42.1",
+ "prettier": "2.8.8",
+ "typescript": "^5.4.2",
+ "vite": "^5.1.5",
+ "vite-plugin-pwa": "^0.19.8",
+ "vite-plugin-svgr": "^4.2.0",
+ "vitest": "^1.3.1",
"vitest-dom": "^0.1.1"
}
},
- "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/@adobe/css-tools": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz",
@@ -85,6 +80,7 @@
"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"
@@ -93,80 +89,43 @@
"node": ">=6.0.0"
}
},
- "node_modules/@antfu/install-pkg": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.3.1.tgz",
- "integrity": "sha512-A3zWY9VeTPnxlMiZtsGHw2lSd3ghwvL8s9RiGOtqvDxhhFfZ781ynsGBa/iUnDJ5zBrmTFQrJDud3TGgRISaxw==",
- "dev": true,
- "dependencies": {
- "execa": "^8.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@antfu/utils": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.3.0.tgz",
- "integrity": "sha512-UU8TLr/EoXdg7OjMp0h9oDoIAVr+Z/oW9cpOxQQyrsz6Qzd2ms/1CdWx8fl2OQdFpxGmq5Vc4TwfLHId6nAZjA==",
- "dev": true,
- "dependencies": {
- "@types/throttle-debounce": "^2.1.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/@asamuzakjp/dom-selector": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.1.tgz",
- "integrity": "sha512-QJAJffmCiymkv6YyQ7voyQb5caCth6jzZsQncYCpHXrJ7RqdYG5y43+is8mnFcYubdOkr7cn1+na9BdFMxqw7w==",
- "dev": true,
- "dependencies": {
- "bidi-js": "^1.0.3",
- "css-tree": "^2.3.1",
- "is-potential-custom-element-name": "^1.0.1"
- }
- },
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dependencies": {
- "@babel/highlight": "^7.23.4",
- "chalk": "^2.4.2"
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
},
"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==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz",
+ "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz",
- "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz",
+ "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==",
"dev": true,
- "peer": 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.23.6",
- "@babel/parser": "^7.23.6",
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.6",
- "@babel/types": "^7.23.6",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.24.7",
+ "@babel/helper-compilation-targets": "^7.24.7",
+ "@babel/helper-module-transforms": "^7.24.7",
+ "@babel/helpers": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/template": "^7.24.7",
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
@@ -182,15 +141,13 @@
}
},
"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,
- "peer": true,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz",
+ "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==",
"dependencies": {
- "@babel/types": "^7.23.6",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
+ "@babel/types": "^7.24.7",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
},
"engines": {
@@ -222,13 +179,13 @@
}
},
"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==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz",
+ "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.23.5",
- "@babel/helper-validator-option": "^7.23.5",
+ "@babel/compat-data": "^7.24.7",
+ "@babel/helper-validator-option": "^7.24.7",
"browserslist": "^4.22.2",
"lru-cache": "^5.1.1",
"semver": "^6.3.1"
@@ -294,34 +251,34 @@
}
},
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz",
+ "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==",
+ "dependencies": {
+ "@babel/types": "^7.24.7"
+ },
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
+ "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
"dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
+ "@babel/template": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
+ "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -340,28 +297,28 @@
}
},
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
+ "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
"dependencies": {
- "@babel/types": "^7.22.15"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"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==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz",
+ "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==",
"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"
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-module-imports": "^7.24.7",
+ "@babel/helper-simple-access": "^7.24.7",
+ "@babel/helper-split-export-declaration": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -383,9 +340,9 @@
}
},
"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==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz",
+ "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -426,12 +383,13 @@
}
},
"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==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
+ "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/traverse": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
@@ -450,39 +408,36 @@
}
},
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
+ "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
"dependencies": {
- "@babel/types": "^7.22.5"
+ "@babel/types": "^7.24.7"
},
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz",
+ "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==",
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"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==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz",
+ "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
@@ -503,39 +458,36 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz",
- "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz",
+ "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==",
"dev": true,
- "peer": true,
"dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.23.6",
- "@babel/types": "^7.23.6"
+ "@babel/template": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"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,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.20",
+ "@babel/helper-validator-identifier": "^7.24.7",
"chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
- "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
- "dev": true,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz",
+ "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -1441,6 +1393,36 @@
"@babel/core": "^7.0.0-0"
}
},
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz",
+ "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz",
+ "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/plugin-transform-regenerator": {
"version": "7.23.3",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz",
@@ -1729,7 +1711,6 @@
"version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz",
"integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==",
- "dev": true,
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@@ -1740,38 +1721,34 @@
"node_modules/@babel/runtime/node_modules/regenerator-runtime": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
- "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
- "dev": true
+ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
},
"node_modules/@babel/template": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
- "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
- "dev": true,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz",
+ "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==",
"dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/parser": "^7.22.15",
- "@babel/types": "^7.22.15"
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/types": "^7.24.7"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz",
- "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==",
- "dev": true,
- "peer": 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.23.6",
- "@babel/types": "^7.23.6",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz",
+ "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.24.7",
+ "@babel/helper-environment-visitor": "^7.24.7",
+ "@babel/helper-function-name": "^7.24.7",
+ "@babel/helper-hoist-variables": "^7.24.7",
+ "@babel/helper-split-export-declaration": "^7.24.7",
+ "@babel/parser": "^7.24.7",
+ "@babel/types": "^7.24.7",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -1780,32 +1757,169 @@
}
},
"node_modules/@babel/types": {
- "version": "7.23.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz",
- "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==",
- "dev": true,
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz",
+ "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==",
"dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
+ "@babel/helper-string-parser": "^7.24.7",
+ "@babel/helper-validator-identifier": "^7.24.7",
"to-fast-properties": "^2.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
- "node_modules/@bulatdashiev/svelte-slider": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@bulatdashiev/svelte-slider/-/svelte-slider-1.0.3.tgz",
- "integrity": "sha512-GkVyqIjzQnqy0FQIm8wqRLIOFQBQ/Ewd381Y7KwABsSwiSu0eMYO0/8s4q/wlMDDb2/+U66rXlalaUokUfw8Vg==",
- "dev": true
+ "node_modules/@chakra-ui/accordion": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/accordion/-/accordion-2.3.1.tgz",
+ "integrity": "sha512-FSXRm8iClFyU+gVaXisOSEw0/4Q+qZbFRiuhIAkVU6Boj0FxAMrlo9a8AV5TuF77rgaHytCdHk0Ng+cyUijrag==",
+ "dependencies": {
+ "@chakra-ui/descendant": "3.1.0",
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
},
- "node_modules/@esbuild/android-arm": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.9.tgz",
- "integrity": "sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==",
+ "node_modules/@chakra-ui/alert": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/alert/-/alert-2.2.2.tgz",
+ "integrity": "sha512-jHg4LYMRNOJH830ViLuicjb3F+v6iriE/2G5T+Sd0Hna04nukNJ1MxUmBPE+vI22me2dIflfelu2v9wdB6Pojw==",
+ "dependencies": {
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/spinner": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/anatomy": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.2.2.tgz",
+ "integrity": "sha512-MV6D4VLRIHr4PkW4zMyqfrNS1mPlCTiCXwvYGtDFQYr+xHFfonhAuf9WjsSc0nyp2m0OdkSLnzmVKkZFLo25Tg=="
+ },
+ "node_modules/@chakra-ui/avatar": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/avatar/-/avatar-2.3.0.tgz",
+ "integrity": "sha512-8gKSyLfygnaotbJbDMHDiJoF38OHXUYVme4gGxZ1fLnQEdPVEaIWfH+NndIjOM0z8S+YEFnT9KyGMUtvPrBk3g==",
+ "dependencies": {
+ "@chakra-ui/image": "2.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/breadcrumb": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/breadcrumb/-/breadcrumb-2.2.0.tgz",
+ "integrity": "sha512-4cWCG24flYBxjruRi4RJREWTGF74L/KzI2CognAW/d/zWR0CjiScuJhf37Am3LFbCySP6WSoyBOtTIoTA4yLEA==",
+ "dependencies": {
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/breakpoint-utils": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz",
+ "integrity": "sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ }
+ },
+ "node_modules/@chakra-ui/button": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/button/-/button-2.1.0.tgz",
+ "integrity": "sha512-95CplwlRKmmUXkdEp/21VkEWgnwcx2TOBG6NfYlsuLBDHSLlo5FKIiE2oSi4zXc4TLcopGcWPNcm/NDaSC5pvA==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/spinner": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/card": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/card/-/card-2.2.0.tgz",
+ "integrity": "sha512-xUB/k5MURj4CtPAhdSoXZidUbm8j3hci9vnc+eZJVDqhDOShNlD6QeniQNRPRys4lWAQLCbFcrwL29C8naDi6g==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/checkbox": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/checkbox/-/checkbox-2.3.2.tgz",
+ "integrity": "sha512-85g38JIXMEv6M+AcyIGLh7igNtfpAN6KGQFYxY9tBj0eWvWk4NKQxvqqyVta0bSAyIl1rixNIIezNpNWk2iO4g==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/visually-hidden": "2.2.0",
+ "@zag-js/focus-visible": "0.16.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/cli": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/cli/-/cli-2.4.1.tgz",
+ "integrity": "sha512-GZZuHUA1cXJWpmYNiVTLPihvY4VhIssRl+AXgw/0IbeodTMop3jWlIioPKLAQeXu5CwvRA6iESyGjnu1V8Zykg==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": "^3.5.3",
+ "cli-check-node": "^1.3.4",
+ "cli-handle-unhandled": "^1.1.1",
+ "cli-welcome": "^2.2.2",
+ "commander": "^9.3.0",
+ "esbuild": "^0.17.18",
+ "prettier": "^2.8.8"
+ },
+ "bin": {
+ "chakra-cli": "bin/index.js"
+ }
+ },
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/android-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
+ "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
"cpu": [
"arm"
],
+ "dev": true,
"optional": true,
"os": [
"android"
@@ -1814,13 +1928,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/android-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz",
- "integrity": "sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/android-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
+ "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"android"
@@ -1829,13 +1944,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/android-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.9.tgz",
- "integrity": "sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/android-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
+ "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"android"
@@ -1844,13 +1960,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz",
- "integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
+ "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"darwin"
@@ -1859,13 +1976,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz",
- "integrity": "sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/darwin-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
+ "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"darwin"
@@ -1874,13 +1992,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz",
- "integrity": "sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
+ "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"freebsd"
@@ -1889,13 +2008,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz",
- "integrity": "sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
+ "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"freebsd"
@@ -1904,13 +2024,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-arm": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz",
- "integrity": "sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-arm": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
+ "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
"cpu": [
"arm"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -1919,13 +2040,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz",
- "integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
+ "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -1934,13 +2056,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz",
- "integrity": "sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
+ "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
"cpu": [
"ia32"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -1949,13 +2072,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz",
- "integrity": "sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-loong64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
+ "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
"cpu": [
"loong64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -1964,13 +2088,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz",
- "integrity": "sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
+ "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
"cpu": [
"mips64el"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -1979,13 +2104,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz",
- "integrity": "sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
+ "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
"cpu": [
"ppc64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -1994,13 +2120,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz",
- "integrity": "sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
+ "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
"cpu": [
"riscv64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -2009,13 +2136,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz",
- "integrity": "sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-s390x": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
+ "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
"cpu": [
"s390x"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -2024,13 +2152,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/linux-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz",
- "integrity": "sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/linux-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
+ "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"linux"
@@ -2039,13 +2168,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz",
- "integrity": "sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"netbsd"
@@ -2054,13 +2184,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz",
- "integrity": "sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
+ "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"openbsd"
@@ -2069,13 +2200,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz",
- "integrity": "sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/sunos-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
+ "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"sunos"
@@ -2084,13 +2216,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz",
- "integrity": "sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/win32-arm64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
+ "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
"cpu": [
"arm64"
],
+ "dev": true,
"optional": true,
"os": [
"win32"
@@ -2099,13 +2232,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz",
- "integrity": "sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/win32-ia32": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
+ "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
"cpu": [
"ia32"
],
+ "dev": true,
"optional": true,
"os": [
"win32"
@@ -2114,13 +2248,14 @@
"node": ">=12"
}
},
- "node_modules/@esbuild/win32-x64": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz",
- "integrity": "sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==",
+ "node_modules/@chakra-ui/cli/node_modules/@esbuild/win32-x64": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
+ "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
"cpu": [
"x64"
],
+ "dev": true,
"optional": true,
"os": [
"win32"
@@ -2129,680 +2264,1268 @@
"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==",
+ "node_modules/@chakra-ui/cli/node_modules/commander": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+ "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"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": "^12.20.0 || >=14"
}
},
- "node_modules/@eslint-community/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "node_modules/@chakra-ui/cli/node_modules/esbuild": {
+ "version": "0.17.19",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz",
+ "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
"dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
"engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.17.19",
+ "@esbuild/android-arm64": "0.17.19",
+ "@esbuild/android-x64": "0.17.19",
+ "@esbuild/darwin-arm64": "0.17.19",
+ "@esbuild/darwin-x64": "0.17.19",
+ "@esbuild/freebsd-arm64": "0.17.19",
+ "@esbuild/freebsd-x64": "0.17.19",
+ "@esbuild/linux-arm": "0.17.19",
+ "@esbuild/linux-arm64": "0.17.19",
+ "@esbuild/linux-ia32": "0.17.19",
+ "@esbuild/linux-loong64": "0.17.19",
+ "@esbuild/linux-mips64el": "0.17.19",
+ "@esbuild/linux-ppc64": "0.17.19",
+ "@esbuild/linux-riscv64": "0.17.19",
+ "@esbuild/linux-s390x": "0.17.19",
+ "@esbuild/linux-x64": "0.17.19",
+ "@esbuild/netbsd-x64": "0.17.19",
+ "@esbuild/openbsd-x64": "0.17.19",
+ "@esbuild/sunos-x64": "0.17.19",
+ "@esbuild/win32-arm64": "0.17.19",
+ "@esbuild/win32-ia32": "0.17.19",
+ "@esbuild/win32-x64": "0.17.19"
+ }
+ },
+ "node_modules/@chakra-ui/clickable": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/clickable/-/clickable-2.1.0.tgz",
+ "integrity": "sha512-flRA/ClPUGPYabu+/GLREZVZr9j2uyyazCAUHAdrTUEdDYCr31SVGhgh7dgKdtq23bOvAQJpIJjw/0Bs0WvbXw==",
+ "dependencies": {
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "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,
+ "node_modules/@chakra-ui/close-button": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/close-button/-/close-button-2.1.1.tgz",
+ "integrity": "sha512-gnpENKOanKexswSVpVz7ojZEALl2x5qjLYNqSQGbxz+aP9sOXPfUS56ebyBrre7T7exuWGiFeRwnM0oVeGPaiw==",
"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"
+ "@chakra-ui/icon": "3.2.0"
},
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "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,
+ "node_modules/@chakra-ui/color-mode": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.2.0.tgz",
+ "integrity": "sha512-niTEA8PALtMWRI9wJ4LL0CSBDo8NBfLNp4GD6/0hstcm3IlbBHTVKxN6HwSaoNYfphDQLxCjT4yG+0BJA5tFpg==",
"dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@eslint/js": {
- "version": "8.55.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz",
- "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node_modules/@chakra-ui/control-box": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/control-box/-/control-box-2.1.0.tgz",
+ "integrity": "sha512-gVrRDyXFdMd8E7rulL0SKeoljkLQiPITFnsyMO8EFHNZ+AHt5wK4LIguYVEq88APqAGZGfHFWXr79RYrNiE3Mg==",
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@floating-ui/core": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
- "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==",
- "dev": true,
+ "node_modules/@chakra-ui/counter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/counter/-/counter-2.1.0.tgz",
+ "integrity": "sha512-s6hZAEcWT5zzjNz2JIWUBzRubo9la/oof1W7EKZVVfPYHERnl5e16FmBC79Yfq8p09LQ+aqFKm/etYoJMMgghw==",
"dependencies": {
- "@floating-ui/utils": "^0.2.0"
+ "@chakra-ui/number-utils": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@floating-ui/dom": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz",
- "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==",
- "dev": true,
+ "node_modules/@chakra-ui/css-reset": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/css-reset/-/css-reset-2.3.0.tgz",
+ "integrity": "sha512-cQwwBy5O0jzvl0K7PLTLgp8ijqLPKyuEMiDXwYzl95seD3AoeuoCLyzZcJtVqaUZ573PiBdAbY/IlZcwDOItWg==",
+ "peerDependencies": {
+ "@emotion/react": ">=10.0.35",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/descendant": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/descendant/-/descendant-3.1.0.tgz",
+ "integrity": "sha512-VxCIAir08g5w27klLyi7PVo8BxhW4tgU/lxQyujkmi4zx7hT9ZdrcQLAted/dAa+aSIZ14S1oV0Q9lGjsAdxUQ==",
"dependencies": {
- "@floating-ui/core": "^1.5.3",
- "@floating-ui/utils": "^0.2.0"
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@floating-ui/utils": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
- "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==",
- "dev": true
+ "node_modules/@chakra-ui/dom-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/dom-utils/-/dom-utils-2.1.0.tgz",
+ "integrity": "sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ=="
},
- "node_modules/@formatjs/ecma402-abstract": {
- "version": "1.18.0",
- "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.0.tgz",
- "integrity": "sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA==",
+ "node_modules/@chakra-ui/editable": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/editable/-/editable-3.1.0.tgz",
+ "integrity": "sha512-j2JLrUL9wgg4YA6jLlbU88370eCRyor7DZQD9lzpY95tSOXpTljeg3uF9eOmDnCs6fxp3zDWIfkgMm/ExhcGTg==",
"dependencies": {
- "@formatjs/intl-localematcher": "0.5.2",
- "tslib": "^2.4.0"
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-focus-on-pointer-down": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@formatjs/fast-memoize": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz",
- "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==",
+ "node_modules/@chakra-ui/event-utils": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz",
+ "integrity": "sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw=="
+ },
+ "node_modules/@chakra-ui/focus-lock": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/focus-lock/-/focus-lock-2.1.0.tgz",
+ "integrity": "sha512-EmGx4PhWGjm4dpjRqM4Aa+rCWBxP+Rq8Uc/nAVnD4YVqkEhBkrPTpui2lnjsuxqNaZ24fIAZ10cF1hlpemte/w==",
"dependencies": {
- "tslib": "^2.4.0"
+ "@chakra-ui/dom-utils": "2.1.0",
+ "react-focus-lock": "^2.9.4"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@formatjs/icu-messageformat-parser": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.3.tgz",
- "integrity": "sha512-X/jy10V9S/vW+qlplqhMUxR8wErQ0mmIYSq4mrjpjDl9mbuGcCILcI1SUYkL5nlM4PJqpc0KOS0bFkkJNPxYRw==",
+ "node_modules/@chakra-ui/form-control": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/form-control/-/form-control-2.2.0.tgz",
+ "integrity": "sha512-wehLC1t4fafCVJ2RvJQT2jyqsAwX7KymmiGqBu7nQoQz8ApTkGABWpo/QwDh3F/dBLrouHDoOvGmYTqft3Mirw==",
"dependencies": {
- "@formatjs/ecma402-abstract": "1.18.0",
- "@formatjs/icu-skeleton-parser": "1.7.0",
- "tslib": "^2.4.0"
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@formatjs/icu-skeleton-parser": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.7.0.tgz",
- "integrity": "sha512-Cfdo/fgbZzpN/jlN/ptQVe0lRHora+8ezrEeg2RfrNjyp+YStwBy7cqDY8k5/z2LzXg6O0AdzAV91XS0zIWv+A==",
+ "node_modules/@chakra-ui/hooks": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.2.1.tgz",
+ "integrity": "sha512-RQbTnzl6b1tBjbDPf9zGRo9rf/pQMholsOudTxjy4i9GfTfz6kgp5ValGjQm2z7ng6Z31N1cnjZ1AlSzQ//ZfQ==",
"dependencies": {
- "@formatjs/ecma402-abstract": "1.18.0",
- "tslib": "^2.4.0"
+ "@chakra-ui/react-utils": "2.0.12",
+ "@chakra-ui/utils": "2.0.15",
+ "compute-scroll-into-view": "3.0.3",
+ "copy-to-clipboard": "3.3.3"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@formatjs/intl-localematcher": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.2.tgz",
- "integrity": "sha512-txaaE2fiBMagLrR4jYhxzFO6wEdEG4TPMqrzBAcbr4HFUYzH/YC+lg6OIzKCHm8WgDdyQevxbAAV1OgcXctuGw==",
+ "node_modules/@chakra-ui/icon": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/icon/-/icon-3.2.0.tgz",
+ "integrity": "sha512-xxjGLvlX2Ys4H0iHrI16t74rG9EBcpFvJ3Y3B7KMQTrnW34Kf7Da/UC8J67Gtx85mTHW020ml85SVPKORWNNKQ==",
"dependencies": {
- "tslib": "^2.4.0"
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.13",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
- "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
- "dev": true,
+ "node_modules/@chakra-ui/icons": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/icons/-/icons-2.1.1.tgz",
+ "integrity": "sha512-3p30hdo4LlRZTT5CwoAJq3G9fHI0wDc0pBaMHj4SUn0yomO+RcDRlzhdXqdr5cVnzax44sqXJVnf3oQG0eI+4g==",
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
+ "@chakra-ui/icon": "3.2.0"
},
- "engines": {
- "node": ">=10.10.0"
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "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"
+ "node_modules/@chakra-ui/image": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/image/-/image-2.1.0.tgz",
+ "integrity": "sha512-bskumBYKLiLMySIWDGcz0+D9Th0jPvmX6xnRMs4o92tT3Od/bW26lahmV2a2Op2ItXeCmRMY+XxJH5Gy1i46VA==",
+ "dependencies": {
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
- "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
- "dev": true
- },
- "node_modules/@iconify-json/mdi": {
- "version": "1.1.63",
- "resolved": "https://registry.npmjs.org/@iconify-json/mdi/-/mdi-1.1.63.tgz",
- "integrity": "sha512-b07dRM5LYdwJqd/lm+1+JDNDNSWHvpZ7ujb73oJxx3lmK1J0giDS0BSc4yia0hixNV0Z2q/4GyxAu/A8XqDnbg==",
- "dev": true,
+ "node_modules/@chakra-ui/input": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/input/-/input-2.1.2.tgz",
+ "integrity": "sha512-GiBbb3EqAA8Ph43yGa6Mc+kUPjh4Spmxp1Pkelr8qtudpc3p2PJOOebLpd90mcqw8UePPa+l6YhhPtp6o0irhw==",
"dependencies": {
- "@iconify/types": "*"
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@iconify-json/ri": {
- "version": "1.1.17",
- "resolved": "https://registry.npmjs.org/@iconify-json/ri/-/ri-1.1.17.tgz",
- "integrity": "sha512-FN6dynUF7GjVsDU9twvzreN+3gpWiJwpD7FJelHFVPjHNW7U4CDAnw4mEWLaqscB7npJVXLidYKdI03Mh0apTQ==",
- "dev": true,
+ "node_modules/@chakra-ui/layout": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/layout/-/layout-2.3.1.tgz",
+ "integrity": "sha512-nXuZ6WRbq0WdgnRgLw+QuxWAHuhDtVX8ElWqcTK+cSMFg/52eVP47czYBE5F35YhnoW2XBwfNoNgZ7+e8Z01Rg==",
"dependencies": {
- "@iconify/types": "*"
+ "@chakra-ui/breakpoint-utils": "2.0.8",
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@iconify/json": {
- "version": "1.1.432",
- "resolved": "https://registry.npmjs.org/@iconify/json/-/json-1.1.432.tgz",
- "integrity": "sha512-ZcQKCnJXmeKDKxSu4vOFCYkCv8sjX1OASTMQpzqVzt3ivBBDudAYyXJlO4hgk0X4B2R0IMHRNvRgCAYkKDa2eQ==",
- "dev": true
+ "node_modules/@chakra-ui/lazy-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz",
+ "integrity": "sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg=="
},
- "node_modules/@iconify/types": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
- "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==",
- "dev": true
+ "node_modules/@chakra-ui/live-region": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/live-region/-/live-region-2.1.0.tgz",
+ "integrity": "sha512-ZOxFXwtaLIsXjqnszYYrVuswBhnIHHP+XIgK1vC6DePKtyK590Wg+0J0slDwThUAd4MSSIUa/nNX84x1GMphWw==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
},
- "node_modules/@iconify/utils": {
- "version": "2.1.13",
- "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.13.tgz",
- "integrity": "sha512-6uWvJIo715xYRy1KmCCyZYW0YYkLjaojEExoEkxpOHKhi9cyHW8hVKo+m8zrxzNVSqjUx9OuVRa2BWXeXfkp5A==",
- "dev": true,
+ "node_modules/@chakra-ui/media-query": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/media-query/-/media-query-3.3.0.tgz",
+ "integrity": "sha512-IsTGgFLoICVoPRp9ykOgqmdMotJG0CnPsKvGQeSFOB/dZfIujdVb14TYxDU4+MURXry1MhJ7LzZhv+Ml7cr8/g==",
"dependencies": {
- "@antfu/install-pkg": "^0.1.1",
- "@antfu/utils": "^0.7.5",
- "@iconify/types": "^2.0.0",
- "debug": "^4.3.4",
- "kolorist": "^1.8.0",
- "local-pkg": "^0.4.3"
+ "@chakra-ui/breakpoint-utils": "2.0.8",
+ "@chakra-ui/react-env": "3.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/node_modules/@antfu/install-pkg": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz",
- "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==",
- "dev": true,
+ "node_modules/@chakra-ui/menu": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/menu/-/menu-2.2.1.tgz",
+ "integrity": "sha512-lJS7XEObzJxsOwWQh7yfG4H8FzFPRP5hVPN/CL+JzytEINCSBvsCDHrYPQGp7jzpCi8vnTqQQGQe0f8dwnXd2g==",
+ "dependencies": {
+ "@chakra-ui/clickable": "2.1.0",
+ "@chakra-ui/descendant": "3.1.0",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/popper": "3.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-animation-state": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-disclosure": "2.1.0",
+ "@chakra-ui/react-use-focus-effect": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-outside-click": "2.2.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/modal": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/modal/-/modal-2.3.1.tgz",
+ "integrity": "sha512-TQv1ZaiJMZN+rR9DK0snx/OPwmtaGH1HbZtlYt4W4s6CzyK541fxLRTjIXfEzIGpvNW+b6VFuFjbcR78p4DEoQ==",
"dependencies": {
- "execa": "^5.1.1",
- "find-up": "^5.0.0"
+ "@chakra-ui/close-button": "2.1.1",
+ "@chakra-ui/focus-lock": "2.1.0",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/transition": "2.1.0",
+ "aria-hidden": "^1.2.3",
+ "react-remove-scroll": "^2.5.6"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
}
},
- "node_modules/@iconify/utils/node_modules/@antfu/utils": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
- "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node_modules/@chakra-ui/number-input": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.1.2.tgz",
+ "integrity": "sha512-pfOdX02sqUN0qC2ysuvgVDiws7xZ20XDIlcNhva55Jgm095xjm8eVdIBfNm3SFbSUNxyXvLTW/YQanX74tKmuA==",
+ "dependencies": {
+ "@chakra-ui/counter": "2.1.0",
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/react-use-event-listener": "2.1.0",
+ "@chakra-ui/react-use-interval": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/node_modules/execa": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
- "dev": true,
+ "node_modules/@chakra-ui/number-utils": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz",
+ "integrity": "sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg=="
+ },
+ "node_modules/@chakra-ui/object-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz",
+ "integrity": "sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ=="
+ },
+ "node_modules/@chakra-ui/pin-input": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/pin-input/-/pin-input-2.1.0.tgz",
+ "integrity": "sha512-x4vBqLStDxJFMt+jdAHHS8jbh294O53CPQJoL4g228P513rHylV/uPscYUHrVJXRxsHfRztQO9k45jjTYaPRMw==",
"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"
+ "@chakra-ui/descendant": "3.1.0",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
},
- "engines": {
- "node": ">=10"
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/popover": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/popover/-/popover-2.2.1.tgz",
+ "integrity": "sha512-K+2ai2dD0ljvJnlrzesCDT9mNzLifE3noGKZ3QwLqd/K34Ym1W/0aL1ERSynrcG78NKoXS54SdEzkhCZ4Gn/Zg==",
+ "dependencies": {
+ "@chakra-ui/close-button": "2.1.1",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/popper": "3.1.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-animation-state": "2.1.0",
+ "@chakra-ui/react-use-disclosure": "2.1.0",
+ "@chakra-ui/react-use-focus-effect": "2.1.0",
+ "@chakra-ui/react-use-focus-on-pointer-down": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
},
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/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"
+ "node_modules/@chakra-ui/popper": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/popper/-/popper-3.1.0.tgz",
+ "integrity": "sha512-ciDdpdYbeFG7og6/6J8lkTFxsSvwTdMLFkpVylAF6VNC22jssiWfquj2eyD4rJnzkRFPvIWJq8hvbfhsm+AjSg==",
+ "dependencies": {
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@popperjs/core": "^2.9.3"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/node_modules/human-signals": {
+ "node_modules/@chakra-ui/portal": {
"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"
+ "resolved": "https://registry.npmjs.org/@chakra-ui/portal/-/portal-2.1.0.tgz",
+ "integrity": "sha512-9q9KWf6SArEcIq1gGofNcFPSWEyl+MfJjEUg/un1SMlQjaROOh3zYr+6JAwvcORiX7tyHosnmWC3d3wI2aPSQg==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
}
},
- "node_modules/@iconify/utils/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"
+ "node_modules/@chakra-ui/progress": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/progress/-/progress-2.2.0.tgz",
+ "integrity": "sha512-qUXuKbuhN60EzDD9mHR7B67D7p/ZqNS2Aze4Pbl1qGGZfulPW0PY8Rof32qDtttDQBkzQIzFGE8d9QpAemToIQ==",
+ "dependencies": {
+ "@chakra-ui/react-context": "2.1.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/node_modules/local-pkg": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
- "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
- "dev": true,
- "engines": {
- "node": ">=14"
+ "node_modules/@chakra-ui/provider": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/provider/-/provider-2.4.2.tgz",
+ "integrity": "sha512-w0Tef5ZCJK1mlJorcSjItCSbyvVuqpvyWdxZiVQmE6fvSJR83wZof42ux0+sfWD+I7rHSfj+f9nzhNaEWClysw==",
+ "dependencies": {
+ "@chakra-ui/css-reset": "2.3.0",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/react-env": "3.1.0",
+ "@chakra-ui/system": "2.6.2",
+ "@chakra-ui/utils": "2.0.15"
},
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/radio": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/radio/-/radio-2.1.2.tgz",
+ "integrity": "sha512-n10M46wJrMGbonaghvSRnZ9ToTv/q76Szz284gv4QUWvyljQACcGrXIONUnQ3BIwbOfkRqSk7Xl/JgZtVfll+w==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@zag-js/focus-visible": "0.16.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.8.2.tgz",
+ "integrity": "sha512-Hn0moyxxyCDKuR9ywYpqgX8dvjqwu9ArwpIb9wHNYjnODETjLwazgNIliCVBRcJvysGRiV51U2/JtJVrpeCjUQ==",
+ "dependencies": {
+ "@chakra-ui/accordion": "2.3.1",
+ "@chakra-ui/alert": "2.2.2",
+ "@chakra-ui/avatar": "2.3.0",
+ "@chakra-ui/breadcrumb": "2.2.0",
+ "@chakra-ui/button": "2.1.0",
+ "@chakra-ui/card": "2.2.0",
+ "@chakra-ui/checkbox": "2.3.2",
+ "@chakra-ui/close-button": "2.1.1",
+ "@chakra-ui/control-box": "2.1.0",
+ "@chakra-ui/counter": "2.1.0",
+ "@chakra-ui/css-reset": "2.3.0",
+ "@chakra-ui/editable": "3.1.0",
+ "@chakra-ui/focus-lock": "2.1.0",
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/hooks": "2.2.1",
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/image": "2.1.0",
+ "@chakra-ui/input": "2.1.2",
+ "@chakra-ui/layout": "2.3.1",
+ "@chakra-ui/live-region": "2.1.0",
+ "@chakra-ui/media-query": "3.3.0",
+ "@chakra-ui/menu": "2.2.1",
+ "@chakra-ui/modal": "2.3.1",
+ "@chakra-ui/number-input": "2.1.2",
+ "@chakra-ui/pin-input": "2.1.0",
+ "@chakra-ui/popover": "2.2.1",
+ "@chakra-ui/popper": "3.1.0",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/progress": "2.2.0",
+ "@chakra-ui/provider": "2.4.2",
+ "@chakra-ui/radio": "2.1.2",
+ "@chakra-ui/react-env": "3.1.0",
+ "@chakra-ui/select": "2.1.2",
+ "@chakra-ui/skeleton": "2.1.0",
+ "@chakra-ui/skip-nav": "2.1.0",
+ "@chakra-ui/slider": "2.1.0",
+ "@chakra-ui/spinner": "2.1.0",
+ "@chakra-ui/stat": "2.1.1",
+ "@chakra-ui/stepper": "2.3.1",
+ "@chakra-ui/styled-system": "2.9.2",
+ "@chakra-ui/switch": "2.1.2",
+ "@chakra-ui/system": "2.6.2",
+ "@chakra-ui/table": "2.1.0",
+ "@chakra-ui/tabs": "3.0.0",
+ "@chakra-ui/tag": "3.1.1",
+ "@chakra-ui/textarea": "2.1.2",
+ "@chakra-ui/theme": "3.3.1",
+ "@chakra-ui/theme-utils": "2.0.21",
+ "@chakra-ui/toast": "7.0.2",
+ "@chakra-ui/tooltip": "2.3.1",
+ "@chakra-ui/transition": "2.1.0",
+ "@chakra-ui/utils": "2.0.15",
+ "@chakra-ui/visually-hidden": "2.2.0"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-children-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz",
+ "integrity": "sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==",
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/node_modules/mimic-fn": {
+ "node_modules/@chakra-ui/react-context": {
"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"
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-context/-/react-context-2.1.0.tgz",
+ "integrity": "sha512-iahyStvzQ4AOwKwdPReLGfDesGG+vWJfEsn0X/NoGph/SkN+HXtv2sCfYFFR9k7bb+Kvc6YfpLlSuLvKMHi2+w==",
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/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,
+ "node_modules/@chakra-ui/react-env": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-env/-/react-env-3.1.0.tgz",
+ "integrity": "sha512-Vr96GV2LNBth3+IKzr/rq1IcnkXv+MLmwjQH6C8BRtn3sNskgDFD5vLkVXcEhagzZMCh8FR3V/bzZPojBOyNhw==",
"dependencies": {
- "path-key": "^3.0.0"
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0"
},
- "engines": {
- "node": ">=8"
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/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,
+ "node_modules/@chakra-ui/react-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.7.tgz",
+ "integrity": "sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-animation-state": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.1.0.tgz",
+ "integrity": "sha512-CFZkQU3gmDBwhqy0vC1ryf90BVHxVN8cTLpSyCpdmExUEtSEInSCGMydj2fvn7QXsz/za8JNdO2xxgJwxpLMtg==",
"dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
+ "@chakra-ui/dom-utils": "2.1.0",
+ "@chakra-ui/react-use-event-listener": "2.1.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@iconify/utils/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/@iconify/utils/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/@chakra-ui/react-use-callback-ref": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.1.0.tgz",
+ "integrity": "sha512-efnJrBtGDa4YaxDzDE90EnKD3Vkh5a1t3w7PhnRQmsphLy3g2UieasoKTlT2Hn118TwDjIv5ZjHJW6HbzXA9wQ==",
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@internationalized/date": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.1.tgz",
- "integrity": "sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==",
- "dev": true,
+ "node_modules/@chakra-ui/react-use-controllable-state": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.1.0.tgz",
+ "integrity": "sha512-QR/8fKNokxZUs4PfxjXuwl0fj/d71WPrmLJvEpCTkHjnzu7LnYvzoe2wB867IdooQJL0G1zBxl0Dq+6W1P3jpg==",
"dependencies": {
- "@swc/helpers": "^0.5.0"
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@jest/schemas": {
- "version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
- "dev": true,
+ "node_modules/@chakra-ui/react-use-disclosure": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.1.0.tgz",
+ "integrity": "sha512-Ax4pmxA9LBGMyEZJhhUZobg9C0t3qFE4jVF1tGBsrLDcdBeLR9fwOogIPY9Hf0/wqSlAryAimICbr5hkpa5GSw==",
"dependencies": {
- "@sinclair/typebox": "^0.27.8"
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
},
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "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==",
+ "node_modules/@chakra-ui/react-use-event-listener": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.1.0.tgz",
+ "integrity": "sha512-U5greryDLS8ISP69DKDsYcsXRtAdnTQT+jjIlRYZ49K/XhUR/AqVZCK5BkR1spTDmO9H8SPhgeNKI70ODuDU/Q==",
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
},
- "engines": {
- "node": ">=6.0.0"
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "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==",
- "engines": {
- "node": ">=6.0.0"
+ "node_modules/@chakra-ui/react-use-focus-effect": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.1.0.tgz",
+ "integrity": "sha512-xzVboNy7J64xveLcxTIJ3jv+lUJKDwRM7Szwn9tNzUIPD94O3qwjV7DDCUzN2490nSYDF4OBMt/wuDBtaR3kUQ==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.1.0",
+ "@chakra-ui/react-use-event-listener": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "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==",
- "engines": {
- "node": ">=6.0.0"
+ "node_modules/@chakra-ui/react-use-focus-on-pointer-down": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.1.0.tgz",
+ "integrity": "sha512-2jzrUZ+aiCG/cfanrolsnSMDykCAbv9EK/4iUyZno6BYb3vziucmvgKuoXbMPAzWNtwUwtuMhkby8rc61Ue+Lg==",
+ "dependencies": {
+ "@chakra-ui/react-use-event-listener": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "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/@chakra-ui/react-use-interval": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-interval/-/react-use-interval-2.1.0.tgz",
+ "integrity": "sha512-8iWj+I/+A0J08pgEXP1J1flcvhLBHkk0ln7ZvGIyXiEyM6XagOTJpwNhiu+Bmk59t3HoV/VyvyJTa+44sEApuw==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
},
- "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==",
+ "node_modules/@chakra-ui/react-use-latest-ref": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.1.0.tgz",
+ "integrity": "sha512-m0kxuIYqoYB0va9Z2aW4xP/5b7BzlDeWwyXCH6QpT2PpW3/281L3hLCm1G0eOUcdVlayqrQqOeD6Mglq+5/xoQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-merge-refs": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.1.0.tgz",
+ "integrity": "sha512-lERa6AWF1cjEtWSGjxWTaSMvneccnAVH4V4ozh8SYiN9fSPZLlSG3kNxfNzdFvMEhM7dnP60vynF7WjGdTgQbQ==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-outside-click": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.2.0.tgz",
+ "integrity": "sha512-PNX+s/JEaMneijbgAM4iFL+f3m1ga9+6QK0E5Yh4s8KZJQ/bLwZzdhMz8J/+mL+XEXQ5J0N8ivZN28B82N1kNw==",
"dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
+ },
+ "peerDependencies": {
+ "react": ">=18"
}
},
- "node_modules/@kurkle/color": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
- "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
+ "node_modules/@chakra-ui/react-use-pan-event": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.1.0.tgz",
+ "integrity": "sha512-xmL2qOHiXqfcj0q7ZK5s9UjTh4Gz0/gL9jcWPA6GVf+A0Od5imEDa/Vz+533yQKWiNSm1QGrIj0eJAokc7O4fg==",
+ "dependencies": {
+ "@chakra-ui/event-utils": "2.0.8",
+ "@chakra-ui/react-use-latest-ref": "2.1.0",
+ "framesync": "6.1.2"
+ },
+ "peerDependencies": {
+ "react": ">=18"
+ }
},
- "node_modules/@melt-ui/pp": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@melt-ui/pp/-/pp-0.3.0.tgz",
- "integrity": "sha512-b07Bdh8l2KcwKVCXOY+SoBw1dk9eWvQfMSi6SoacpRVyVmmfpi0kV4oGt3HYF0tUCB3sEmVicxse50ZzZxEzEA==",
- "dev": true,
+ "node_modules/@chakra-ui/react-use-previous": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-previous/-/react-use-previous-2.1.0.tgz",
+ "integrity": "sha512-pjxGwue1hX8AFcmjZ2XfrQtIJgqbTF3Qs1Dy3d1krC77dEsiCUbQ9GzOBfDc8pfd60DrB5N2tg5JyHbypqh0Sg==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-safe-layout-effect": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.1.0.tgz",
+ "integrity": "sha512-Knbrrx/bcPwVS1TorFdzrK/zWA8yuU/eaXDkNj24IrKoRlQrSBFarcgAEzlCHtzuhufP3OULPkELTzz91b0tCw==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-size": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-size/-/react-use-size-2.1.0.tgz",
+ "integrity": "sha512-tbLqrQhbnqOjzTaMlYytp7wY8BW1JpL78iG7Ru1DlV4EWGiAmXFGvtnEt9HftU0NJ0aJyjgymkxfVGI55/1Z4A==",
"dependencies": {
- "estree-walker": "^3.0.3",
- "magic-string": "^0.30.5"
+ "@zag-js/element-size": "0.10.5"
},
- "engines": {
- "pnpm": ">=8.6.3"
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-use-timeout": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-timeout/-/react-use-timeout-2.1.0.tgz",
+ "integrity": "sha512-cFN0sobKMM9hXUhyCofx3/Mjlzah6ADaEl/AXl5Y+GawB5rgedgAcu2ErAgarEkwvsKdP6c68CKjQ9dmTQlJxQ==",
+ "dependencies": {
+ "@chakra-ui/react-use-callback-ref": "2.1.0"
},
"peerDependencies": {
- "@melt-ui/svelte": ">= 0.29.0",
- "svelte": "^3.55.0 || ^4.0.0 || ^5.0.0-next.1"
+ "react": ">=18"
}
},
- "node_modules/@melt-ui/svelte": {
- "version": "0.70.0",
- "resolved": "https://registry.npmjs.org/@melt-ui/svelte/-/svelte-0.70.0.tgz",
- "integrity": "sha512-ni14892MHJMAxSl2cz1pcgfnLR7fee1nNDJmx47hV19ewxSs8eQ8iguPrfx1ONtgjbp2YYVZhlpERi7szd30cA==",
- "dev": true,
+ "node_modules/@chakra-ui/react-use-update-effect": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.1.0.tgz",
+ "integrity": "sha512-ND4Q23tETaR2Qd3zwCKYOOS1dfssojPLJMLvUtUbW5M9uW1ejYWgGUobeAiOVfSplownG8QYMmHTP86p/v0lbA==",
+ "peerDependencies": {
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/react-utils": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz",
+ "integrity": "sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==",
"dependencies": {
- "@floating-ui/core": "^1.3.1",
- "@floating-ui/dom": "^1.4.5",
- "@internationalized/date": "^3.5.0",
- "dequal": "^2.0.3",
- "focus-trap": "^7.5.2",
- "nanoid": "^5.0.4"
+ "@chakra-ui/utils": "2.0.15"
},
"peerDependencies": {
- "svelte": ">=3 <5"
+ "react": ">=18"
}
},
- "node_modules/@melt-ui/svelte/node_modules/nanoid": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.4.tgz",
- "integrity": "sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.js"
+ "node_modules/@chakra-ui/select": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/select/-/select-2.1.2.tgz",
+ "integrity": "sha512-ZwCb7LqKCVLJhru3DXvKXpZ7Pbu1TDZ7N0PdQ0Zj1oyVLJyrpef1u9HR5u0amOpqcH++Ugt0f5JSmirjNlctjA==",
+ "dependencies": {
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/shared-utils": "2.0.5"
},
- "engines": {
- "node": "^18 || >=20"
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-analytics-js": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-analytics-js/-/applicationinsights-analytics-js-3.0.7.tgz",
- "integrity": "sha512-HOcFA4JJUTz+KOqVQoE5g1ExL7Wm+sL2czLKQq1hDkmU4PeO4Oq/pi9SeR6iHDQpXCenMTvAkzvZ9A41ZKIOQA==",
+ "node_modules/@chakra-ui/shared-utils": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz",
+ "integrity": "sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q=="
+ },
+ "node_modules/@chakra-ui/skeleton": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/skeleton/-/skeleton-2.1.0.tgz",
+ "integrity": "sha512-JNRuMPpdZGd6zFVKjVQ0iusu3tXAdI29n4ZENYwAJEMf/fN0l12sVeirOxkJ7oEL0yOx2AgEYFSKdbcAgfUsAQ==",
"dependencies": {
- "@microsoft/applicationinsights-common": "3.0.7",
- "@microsoft/applicationinsights-core-js": "3.0.7",
- "@microsoft/applicationinsights-shims": "3.0.1",
- "@microsoft/dynamicproto-js": "^2.0.2",
- "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ "@chakra-ui/media-query": "3.3.0",
+ "@chakra-ui/react-use-previous": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
},
"peerDependencies": {
- "tslib": "*"
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-cfgsync-js": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-cfgsync-js/-/applicationinsights-cfgsync-js-3.0.7.tgz",
- "integrity": "sha512-lp+FP5mg35KO1LuCss2wEOR3dYTFLeDbBkqIoQ9TnJje7Yt3gNKHANl9/b8nMmJyL9u2Lp0pc3wzM+InfO5xHw==",
+ "node_modules/@chakra-ui/skip-nav": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/skip-nav/-/skip-nav-2.1.0.tgz",
+ "integrity": "sha512-Hk+FG+vadBSH0/7hwp9LJnLjkO0RPGnx7gBJWI4/SpoJf3e4tZlWYtwGj0toYY4aGKl93jVghuwGbDBEMoHDug==",
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/slider": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/slider/-/slider-2.1.0.tgz",
+ "integrity": "sha512-lUOBcLMCnFZiA/s2NONXhELJh6sY5WtbRykPtclGfynqqOo47lwWJx+VP7xaeuhDOPcWSSecWc9Y1BfPOCz9cQ==",
"dependencies": {
- "@microsoft/applicationinsights-common": "3.0.7",
- "@microsoft/applicationinsights-core-js": "3.0.7",
- "@microsoft/applicationinsights-shims": "3.0.1",
- "@microsoft/dynamicproto-js": "^2.0.2",
- "@nevware21/ts-async": ">= 0.3.0 < 2.x",
- "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ "@chakra-ui/number-utils": "2.0.7",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-callback-ref": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-latest-ref": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-pan-event": "2.1.0",
+ "@chakra-ui/react-use-size": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0"
},
"peerDependencies": {
- "tslib": "*"
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-channel-js": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.0.7.tgz",
- "integrity": "sha512-3y8ct8V2bGo7QaYVrfQcWZeOci2tUZhXkme3k7nKa2P7upSX/1d+dPF12EelxrtWVLxtfCQJkk+2W4M1AyejGQ==",
+ "node_modules/@chakra-ui/spinner": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/spinner/-/spinner-2.1.0.tgz",
+ "integrity": "sha512-hczbnoXt+MMv/d3gE+hjQhmkzLiKuoTo42YhUG7Bs9OSv2lg1fZHW1fGNRFP3wTi6OIbD044U1P9HK+AOgFH3g==",
"dependencies": {
- "@microsoft/applicationinsights-common": "3.0.7",
- "@microsoft/applicationinsights-core-js": "3.0.7",
- "@microsoft/applicationinsights-shims": "3.0.1",
- "@microsoft/dynamicproto-js": "^2.0.2",
- "@nevware21/ts-async": ">= 0.3.0 < 2.x",
- "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ "@chakra-ui/shared-utils": "2.0.5"
},
"peerDependencies": {
- "tslib": "*"
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-common": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.0.7.tgz",
- "integrity": "sha512-boumvLA7LZu0NmwT9ThpTAI64BNYUlOkFNcjUbYeKNEaE6CBPGX/z25XXlYu+j4hHldDaCn9zC1LuN7AuoMJSA==",
+ "node_modules/@chakra-ui/stat": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/stat/-/stat-2.1.1.tgz",
+ "integrity": "sha512-LDn0d/LXQNbAn2KaR3F1zivsZCewY4Jsy1qShmfBMKwn6rI8yVlbvu6SiA3OpHS0FhxbsZxQI6HefEoIgtqY6Q==",
"dependencies": {
- "@microsoft/applicationinsights-core-js": "3.0.7",
- "@microsoft/applicationinsights-shims": "3.0.1",
- "@microsoft/dynamicproto-js": "^2.0.2",
- "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
},
"peerDependencies": {
- "tslib": "*"
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-core-js": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.0.7.tgz",
- "integrity": "sha512-sVnnVW4fWXzZdtUTVjuwH3xGa1cj+tW7r72voMZzyuNOZ41fBOCK9AqoV0nKP5VCgNjySwn6Rpbw82I4TKKosQ==",
+ "node_modules/@chakra-ui/stepper": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/stepper/-/stepper-2.3.1.tgz",
+ "integrity": "sha512-ky77lZbW60zYkSXhYz7kbItUpAQfEdycT0Q4bkHLxfqbuiGMf8OmgZOQkOB9uM4v0zPwy2HXhe0vq4Dd0xa55Q==",
"dependencies": {
- "@microsoft/applicationinsights-shims": "3.0.1",
- "@microsoft/dynamicproto-js": "^2.0.2",
- "@nevware21/ts-async": ">= 0.3.0 < 2.x",
- "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
},
"peerDependencies": {
- "tslib": "*"
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-dependencies-js": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-dependencies-js/-/applicationinsights-dependencies-js-3.0.7.tgz",
- "integrity": "sha512-nylC373IWXHUoz3FS9LclMIvGvX/KEeFFCPzZ0i1vjEsBwIB4LJ/5XwvtEk4F/kAXPZr6wFNoxecMhS9nKOfNg==",
+ "node_modules/@chakra-ui/styled-system": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.9.2.tgz",
+ "integrity": "sha512-To/Z92oHpIE+4nk11uVMWqo2GGRS86coeMmjxtpnErmWRdLcp1WVCVRAvn+ZwpLiNR+reWFr2FFqJRsREuZdAg==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5",
+ "csstype": "^3.1.2",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/switch": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/switch/-/switch-2.1.2.tgz",
+ "integrity": "sha512-pgmi/CC+E1v31FcnQhsSGjJnOE2OcND4cKPyTE+0F+bmGm48Q/b5UmKD9Y+CmZsrt/7V3h8KNczowupfuBfIHA==",
"dependencies": {
- "@microsoft/applicationinsights-common": "3.0.7",
- "@microsoft/applicationinsights-core-js": "3.0.7",
- "@microsoft/applicationinsights-shims": "3.0.1",
- "@microsoft/dynamicproto-js": "^2.0.2",
- "@nevware21/ts-async": ">= 0.3.0 < 2.x",
- "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ "@chakra-ui/checkbox": "2.3.2",
+ "@chakra-ui/shared-utils": "2.0.5"
},
"peerDependencies": {
- "tslib": "*"
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-properties-js": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-properties-js/-/applicationinsights-properties-js-3.0.7.tgz",
- "integrity": "sha512-vWSs16AJ7bsZxsT34Cv81d/5+SjjniNxNhI+XNzKSBnjhxITrhmRTEbhBbYQAP9118qQsEYW9liQBeLnxg6QSg==",
+ "node_modules/@chakra-ui/system": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.6.2.tgz",
+ "integrity": "sha512-EGtpoEjLrUu4W1fHD+a62XR+hzC5YfsWm+6lO0Kybcga3yYEij9beegO0jZgug27V+Rf7vns95VPVP6mFd/DEQ==",
"dependencies": {
- "@microsoft/applicationinsights-common": "3.0.7",
- "@microsoft/applicationinsights-core-js": "3.0.7",
- "@microsoft/applicationinsights-shims": "3.0.1",
- "@microsoft/dynamicproto-js": "^2.0.2",
- "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ "@chakra-ui/color-mode": "2.2.0",
+ "@chakra-ui/object-utils": "2.1.0",
+ "@chakra-ui/react-utils": "2.0.12",
+ "@chakra-ui/styled-system": "2.9.2",
+ "@chakra-ui/theme-utils": "2.0.21",
+ "@chakra-ui/utils": "2.0.15",
+ "react-fast-compare": "3.2.2"
},
"peerDependencies": {
- "tslib": "*"
+ "@emotion/react": "^11.0.0",
+ "@emotion/styled": "^11.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-shims": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz",
- "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==",
+ "node_modules/@chakra-ui/table": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/table/-/table-2.1.0.tgz",
+ "integrity": "sha512-o5OrjoHCh5uCLdiUb0Oc0vq9rIAeHSIRScc2ExTC9Qg/uVZl2ygLrjToCaKfaaKl1oQexIeAcZDKvPG8tVkHyQ==",
"dependencies": {
- "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/applicationinsights-web": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web/-/applicationinsights-web-3.0.7.tgz",
- "integrity": "sha512-UfX/Fl4Fe2Q72/MXJLCb5MBwTGdMBXmB/JW+eF2dDt6zDZa2OOe8u7daGXjh2ewFdBqb4feb02PDCSDg+nsBeA==",
+ "node_modules/@chakra-ui/tabs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/tabs/-/tabs-3.0.0.tgz",
+ "integrity": "sha512-6Mlclp8L9lqXmsGWF5q5gmemZXOiOYuh0SGT/7PgJVNPz3LXREXlXg2an4MBUD8W5oTkduCX+3KTMCwRrVrDYw==",
"dependencies": {
- "@microsoft/applicationinsights-analytics-js": "3.0.7",
- "@microsoft/applicationinsights-cfgsync-js": "3.0.7",
- "@microsoft/applicationinsights-channel-js": "3.0.7",
- "@microsoft/applicationinsights-common": "3.0.7",
- "@microsoft/applicationinsights-core-js": "3.0.7",
- "@microsoft/applicationinsights-dependencies-js": "3.0.7",
- "@microsoft/applicationinsights-properties-js": "3.0.7",
- "@microsoft/applicationinsights-shims": "3.0.1",
- "@microsoft/dynamicproto-js": "^2.0.2",
- "@nevware21/ts-async": ">= 0.3.0 < 2.x",
- "@nevware21/ts-utils": ">= 0.10.1 < 2.x"
+ "@chakra-ui/clickable": "2.1.0",
+ "@chakra-ui/descendant": "3.1.0",
+ "@chakra-ui/lazy-utils": "2.0.5",
+ "@chakra-ui/react-children-utils": "2.0.6",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-controllable-state": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/react-use-safe-layout-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
},
"peerDependencies": {
- "tslib": "*"
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@microsoft/dynamicproto-js": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.2.tgz",
- "integrity": "sha512-MB8trWaFREpmb037k/d0bB7T2BP7Ai24w1e1tbz3ASLB0/lwphsq3Nq8S9I5AsI5vs4zAQT+SB5nC5/dLYTiOg==",
+ "node_modules/@chakra-ui/tag": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/tag/-/tag-3.1.1.tgz",
+ "integrity": "sha512-Bdel79Dv86Hnge2PKOU+t8H28nm/7Y3cKd4Kfk9k3lOpUh4+nkSGe58dhRzht59lEqa4N9waCgQiBdkydjvBXQ==",
"dependencies": {
- "@nevware21/ts-utils": ">= 0.9.4 < 2.x"
+ "@chakra-ui/icon": "3.2.0",
+ "@chakra-ui/react-context": "2.1.0"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@nevware21/ts-async": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.4.0.tgz",
- "integrity": "sha512-dbV826TTehQIBIJjh8GDSbwn1Z6+cnkyNbRlpcpdBPH8mROD2zabIUKqWcw9WRdTjjUIm21K+OR4DXWlAyOVTQ==",
+ "node_modules/@chakra-ui/textarea": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/textarea/-/textarea-2.1.2.tgz",
+ "integrity": "sha512-ip7tvklVCZUb2fOHDb23qPy/Fr2mzDOGdkrpbNi50hDCiV4hFX02jdQJdi3ydHZUyVgZVBKPOJ+lT9i7sKA2wA==",
"dependencies": {
- "@nevware21/ts-utils": ">= 0.10.0 < 2.x"
+ "@chakra-ui/form-control": "2.2.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
}
},
- "node_modules/@nevware21/ts-utils": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.10.1.tgz",
- "integrity": "sha512-pMny25NnF2/MJwdqC3Iyjm2pGIXNxni4AROpcqDeWa+td9JMUY4bUS9uU9XW+BoBRqTLUL+WURF9SOd/6OQzRg=="
+ "node_modules/@chakra-ui/theme": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-3.3.1.tgz",
+ "integrity": "sha512-Hft/VaT8GYnItGCBbgWd75ICrIrIFrR7lVOhV/dQnqtfGqsVDlrztbSErvMkoPKt0UgAkd9/o44jmZ6X4U2nZQ==",
+ "dependencies": {
+ "@chakra-ui/anatomy": "2.2.2",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/theme-tools": "2.1.2"
+ },
+ "peerDependencies": {
+ "@chakra-ui/styled-system": ">=2.8.0"
+ }
},
- "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,
+ "node_modules/@chakra-ui/theme-tools": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.1.2.tgz",
+ "integrity": "sha512-Qdj8ajF9kxY4gLrq7gA+Azp8CtFHGO9tWMN2wfF9aQNgG9AuMhPrUzMq9AMQ0MXiYcgNq/FD3eegB43nHVmXVA==",
"dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
+ "@chakra-ui/anatomy": "2.2.2",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "color2k": "^2.0.2"
},
- "engines": {
- "node": ">= 8"
+ "peerDependencies": {
+ "@chakra-ui/styled-system": ">=2.0.0"
}
},
- "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,
+ "node_modules/@chakra-ui/theme-utils": {
+ "version": "2.0.21",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.21.tgz",
+ "integrity": "sha512-FjH5LJbT794r0+VSCXB3lT4aubI24bLLRWB+CuRKHijRvsOg717bRdUN/N1fEmEpFnRVrbewttWh/OQs0EWpWw==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/styled-system": "2.9.2",
+ "@chakra-ui/theme": "3.3.1",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/toast": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/toast/-/toast-7.0.2.tgz",
+ "integrity": "sha512-yvRP8jFKRs/YnkuE41BVTq9nB2v/KDRmje9u6dgDmE5+1bFt3bwjdf9gVbif4u5Ve7F7BGk5E093ARRVtvLvXA==",
+ "dependencies": {
+ "@chakra-ui/alert": "2.2.2",
+ "@chakra-ui/close-button": "2.1.1",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/react-context": "2.1.0",
+ "@chakra-ui/react-use-timeout": "2.1.0",
+ "@chakra-ui/react-use-update-effect": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5",
+ "@chakra-ui/styled-system": "2.9.2",
+ "@chakra-ui/theme": "3.3.1"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": "2.6.2",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/tooltip": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/tooltip/-/tooltip-2.3.1.tgz",
+ "integrity": "sha512-Rh39GBn/bL4kZpuEMPPRwYNnccRCL+w9OqamWHIB3Qboxs6h8cOyXfIdGxjo72lvhu1QI/a4KFqkM3St+WfC0A==",
+ "dependencies": {
+ "@chakra-ui/dom-utils": "2.1.0",
+ "@chakra-ui/popper": "3.1.0",
+ "@chakra-ui/portal": "2.1.0",
+ "@chakra-ui/react-types": "2.0.7",
+ "@chakra-ui/react-use-disclosure": "2.1.0",
+ "@chakra-ui/react-use-event-listener": "2.1.0",
+ "@chakra-ui/react-use-merge-refs": "2.1.0",
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "framer-motion": ">=4.0.0",
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/transition": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/transition/-/transition-2.1.0.tgz",
+ "integrity": "sha512-orkT6T/Dt+/+kVwJNy7zwJ+U2xAZ3EU7M3XCs45RBvUnZDr/u9vdmaM/3D/rOpmQJWgQBwKPJleUXrYWUagEDQ==",
+ "dependencies": {
+ "@chakra-ui/shared-utils": "2.0.5"
+ },
+ "peerDependencies": {
+ "framer-motion": ">=4.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@chakra-ui/utils": {
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.15.tgz",
+ "integrity": "sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==",
+ "dependencies": {
+ "@types/lodash.mergewith": "4.6.7",
+ "css-box-model": "1.2.1",
+ "framesync": "6.1.2",
+ "lodash.mergewith": "4.6.2"
+ }
+ },
+ "node_modules/@chakra-ui/visually-hidden": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@chakra-ui/visually-hidden/-/visually-hidden-2.2.0.tgz",
+ "integrity": "sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ==",
+ "peerDependencies": {
+ "@chakra-ui/system": ">=2.0.0",
+ "react": ">=18"
+ }
+ },
+ "node_modules/@emotion/babel-plugin": {
+ "version": "11.11.0",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz",
+ "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/runtime": "^7.18.3",
+ "@emotion/hash": "^0.9.1",
+ "@emotion/memoize": "^0.8.1",
+ "@emotion/serialize": "^1.1.2",
+ "babel-plugin-macros": "^3.1.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^4.0.0",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+ },
+ "node_modules/@emotion/babel-plugin/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": ">= 8"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "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,
+ "node_modules/@emotion/cache": {
+ "version": "11.11.0",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz",
+ "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==",
"dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
+ "@emotion/memoize": "^0.8.1",
+ "@emotion/sheet": "^1.2.2",
+ "@emotion/utils": "^1.2.1",
+ "@emotion/weak-memoize": "^0.3.1",
+ "stylis": "4.2.0"
+ }
+ },
+ "node_modules/@emotion/hash": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz",
+ "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==",
+ "dependencies": {
+ "@emotion/memoize": "^0.8.1"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+ },
+ "node_modules/@emotion/react": {
+ "version": "11.11.4",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz",
+ "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.11.0",
+ "@emotion/cache": "^11.11.0",
+ "@emotion/serialize": "^1.1.3",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+ "@emotion/utils": "^1.2.1",
+ "@emotion/weak-memoize": "^0.3.1",
+ "hoist-non-react-statics": "^3.3.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/serialize": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz",
+ "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==",
+ "dependencies": {
+ "@emotion/hash": "^0.9.1",
+ "@emotion/memoize": "^0.8.1",
+ "@emotion/unitless": "^0.8.1",
+ "@emotion/utils": "^1.2.1",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@emotion/sheet": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz",
+ "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA=="
+ },
+ "node_modules/@emotion/styled": {
+ "version": "11.11.5",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz",
+ "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.18.3",
+ "@emotion/babel-plugin": "^11.11.0",
+ "@emotion/is-prop-valid": "^1.2.2",
+ "@emotion/serialize": "^1.1.4",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+ "@emotion/utils": "^1.2.1"
},
+ "peerDependencies": {
+ "@emotion/react": "^11.0.0-rc.0",
+ "react": ">=16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+ },
+ "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
+ "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
+ "peerDependencies": {
+ "react": ">=16.8.0"
+ }
+ },
+ "node_modules/@emotion/utils": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
+ "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg=="
+ },
+ "node_modules/@emotion/weak-memoize": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
+ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
+ },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
- "node": ">= 8"
+ "node": ">=12"
}
},
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.0.tgz",
- "integrity": "sha512-+1ge/xmaJpm1KVBuIH38Z94zj9fBD+hp+/5WLaHgyY8XLq1ibxk/zj6dTXaqM2cAbYKq8jYlhHd6k05If1W5xA==",
+ "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"
],
@@ -2810,12 +3533,15 @@
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.0.tgz",
- "integrity": "sha512-im6hUEyQ7ZfoZdNvtwgEJvBWZYauC9KVKq1w58LG2Zfz6zMd8gRrbN+xCVoqA2hv/v6fm9lp5LFGJ3za8EQH3A==",
+ "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"
],
@@ -2823,38 +3549,95 @@
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.0.tgz",
- "integrity": "sha512-u7aTMskN6Dmg1lCT0QJ+tINRt+ntUrvVkhbPfFz4bCwRZvjItx2nJtwJnJRlKMMaQCHRjrNqHRDYvE4mBm3DlQ==",
+ "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": [
- "arm64"
+ "x64"
],
"dev": true,
"optional": true,
"os": [
- "darwin"
- ]
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.0.tgz",
- "integrity": "sha512-8FvEl3w2ExmpcOmX5RJD0yqXcVSOqAJJUJ29Lca29Ik+3zPS1yFimr2fr5JSZ4Z5gt8/d7WqycpgkX9nocijSw==",
+ "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": [
- "x64"
+ "arm64"
],
"dev": true,
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.0.tgz",
- "integrity": "sha512-lHoKYaRwd4gge+IpqJHCY+8Vc3hhdJfU6ukFnnrJasEBUvVlydP8PuwndbWfGkdgSvZhHfSEw6urrlBj0TSSfg==",
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "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"
],
@@ -2862,12 +3645,15 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.0.tgz",
- "integrity": "sha512-JbEPfhndYeWHfOSeh4DOFvNXrj7ls9S/2omijVsao+LBPTPayT1uKcK3dHW3MwDJ7KO11t9m2cVTqXnTKpeaiw==",
+ "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"
],
@@ -2875,462 +3661,557 @@
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.0.tgz",
- "integrity": "sha512-ahqcSXLlcV2XUBM3/f/C6cRoh7NxYA/W7Yzuv4bDU1YscTFw7ay4LmD7l6OS8EMhTNvcrWGkEettL1Bhjf+B+w==",
+ "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": [
- "arm64"
+ "ia32"
],
"dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.0.tgz",
- "integrity": "sha512-uwvOYNtLw8gVtrExKhdFsYHA/kotURUmZYlinH2VcQxNCQJeJXnkmWgw2hI9Xgzhgu7J9QvWiq9TtTVwWMDa+w==",
+ "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": [
- "riscv64"
+ "loong64"
],
"dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.0.tgz",
- "integrity": "sha512-m6pkSwcZZD2LCFHZX/zW2aLIISyzWLU3hrLLzQKMI12+OLEzgruTovAxY5sCZJkipklaZqPy/2bEEBNjp+Y7xg==",
+ "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": [
- "x64"
+ "mips64el"
],
"dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.0.tgz",
- "integrity": "sha512-VFAC1RDRSbU3iOF98X42KaVicAfKf0m0OvIu8dbnqhTe26Kh6Ym9JrDulz7Hbk7/9zGc41JkV02g+p3BivOdAg==",
+ "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": [
- "x64"
+ "ppc64"
],
"dev": true,
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.0.tgz",
- "integrity": "sha512-9jPgMvTKXARz4inw6jezMLA2ihDBvgIU9Ml01hjdVpOcMKyxFBJrn83KVQINnbeqDv0+HdO1c09hgZ8N0s820Q==",
+ "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": [
- "arm64"
+ "riscv64"
],
"dev": true,
"optional": true,
"os": [
- "win32"
- ]
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.0.tgz",
- "integrity": "sha512-WE4pT2kTXQN2bAv40Uog0AsV7/s9nT9HBWXAou8+++MBCnY51QS02KYtm6dQxxosKi1VIz/wZIrTQO5UP2EW+Q==",
+ "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": [
- "ia32"
+ "s390x"
],
"dev": true,
"optional": true,
"os": [
- "win32"
- ]
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.0.tgz",
- "integrity": "sha512-aPP5Q5AqNGuT0tnuEkK/g4mnt3ZhheiXrDIiSVIHN9mcN21OyXDVbEMqmXPE7e2OplNLDkcvV+ZoGJa2ZImFgw==",
+ "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"
],
"dev": true,
"optional": true,
"os": [
- "win32"
- ]
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/@sentry-internal/feedback": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.100.1.tgz",
- "integrity": "sha512-yqcRVnjf+qS+tC4NxOKLJOaSJ+csHmh/dHUzvCTkf5rLsplwXYRnny2r0tqGTQ4tuXMxwgSMKPYwicg81P+xuw==",
- "dependencies": {
- "@sentry/core": "7.100.1",
- "@sentry/types": "7.100.1",
- "@sentry/utils": "7.100.1"
- },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
"node": ">=12"
}
},
- "node_modules/@sentry-internal/replay-canvas": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.100.1.tgz",
- "integrity": "sha512-TnqxqJGhbFhhYRhTG2WLFer+lVieV7mNGeIxFBiw1L4kuj8KGl+C0sknssKyZSRVJFSahhHIosHJGRMkkD//7g==",
- "dependencies": {
- "@sentry/core": "7.100.1",
- "@sentry/replay": "7.100.1",
- "@sentry/types": "7.100.1",
- "@sentry/utils": "7.100.1"
- },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
"node": ">=12"
}
},
- "node_modules/@sentry-internal/tracing": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.100.1.tgz",
- "integrity": "sha512-+u9RRf5eL3StiyiRyAHZmdkAR7GTSGx4Mt4Lmi5NEtCcWlTGZ1QgW2r8ZbhouVmTiJkjhQgYCyej3cojtazeJg==",
- "dependencies": {
- "@sentry/core": "7.100.1",
- "@sentry/types": "7.100.1",
- "@sentry/utils": "7.100.1"
- },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/@sentry/browser": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.100.1.tgz",
- "integrity": "sha512-IxHQ08ixf0bmaWpe4yt1J4UUsOpg02fxax9z3tOQYXw5MSzz5pDXn8M8DFUVJB3wWuyXhHXTub9yD3VIP9fnoA==",
- "dependencies": {
- "@sentry-internal/feedback": "7.100.1",
- "@sentry-internal/replay-canvas": "7.100.1",
- "@sentry-internal/tracing": "7.100.1",
- "@sentry/core": "7.100.1",
- "@sentry/replay": "7.100.1",
- "@sentry/types": "7.100.1",
- "@sentry/utils": "7.100.1"
- },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/@sentry/core": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.100.1.tgz",
- "integrity": "sha512-f+ItUge/o9AjlveQq0ZUbQauKlPH1FIJbC1TRaYLJ4KNfOdrsh8yZ29RmWv0cFJ/e+FGTr603gWpRPObF5rM8Q==",
- "dependencies": {
- "@sentry/types": "7.100.1",
- "@sentry/utils": "7.100.1"
- },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=8"
+ "node": ">=12"
}
},
- "node_modules/@sentry/replay": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.100.1.tgz",
- "integrity": "sha512-B1NFjzGEFaqejxBRdUyEzH8ChXc2kfiqlA/W/Lg0aoWIl2/7nuMk+l4ld9gW5F5bIAXDTVd5vYltb1lWEbpr7w==",
- "dependencies": {
- "@sentry-internal/tracing": "7.100.1",
- "@sentry/core": "7.100.1",
- "@sentry/types": "7.100.1",
- "@sentry/utils": "7.100.1"
- },
+ "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"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
"node": ">=12"
}
},
- "node_modules/@sentry/svelte": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry/svelte/-/svelte-7.100.1.tgz",
- "integrity": "sha512-2oZJNFZYfXeDX05mvBBLtve1KRfCI0DgrxZYe9qbYQIe7snobNSydTK+wIHX/SJeVUz3Z+qyovPqFzjkJPTFnw==",
+ "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": {
- "@sentry/browser": "7.100.1",
- "@sentry/core": "7.100.1",
- "@sentry/types": "7.100.1",
- "@sentry/utils": "7.100.1",
- "magic-string": "^0.30.0"
+ "eslint-visitor-keys": "^3.3.0"
},
"engines": {
- "node": ">=8"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"peerDependencies": {
- "svelte": "3.x || 4.x"
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@sentry/types": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.100.1.tgz",
- "integrity": "sha512-fLM+LedHuKzOd8IhXBqaQuym+AA519MGjeczBa5kGakes/BbAsUMwsNfjsKQedp7Kh44RgYF99jwoRPK2oDrXw==",
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz",
+ "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==",
+ "dev": true,
"engines": {
- "node": ">=8"
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@sentry/utils": {
- "version": "7.100.1",
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.100.1.tgz",
- "integrity": "sha512-Ve6dXr1o6xiBe3VCoJgiutmBKrugryI65EZAbYto5XI+t+PjiLLf9wXtEMF24ZrwImo4Lv3E9Uqza+fWkEbw6A==",
+ "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": {
- "@sentry/types": "7.100.1"
+ "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": ">=8"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@sinclair/typebox": {
- "version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "dev": true
- },
- "node_modules/@sveltejs/vite-plugin-svelte": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.0.1.tgz",
- "integrity": "sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==",
+ "node_modules/@eslint/eslintrc/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": {
- "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0-next.0 || ^2.0.0",
- "debug": "^4.3.4",
- "deepmerge": "^4.3.1",
- "kleur": "^4.1.5",
- "magic-string": "^0.30.5",
- "svelte-hmr": "^0.15.3",
- "vitefu": "^0.2.5"
- },
- "engines": {
- "node": "^18.0.0 || >=20"
- },
- "peerDependencies": {
- "svelte": "^4.0.0 || ^5.0.0-next.0",
- "vite": "^5.0.0"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.0.0.tgz",
- "integrity": "sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==",
+ "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": {
- "debug": "^4.3.4"
+ "type-fest": "^0.20.2"
},
"engines": {
- "node": "^18.0.0 || >=20"
+ "node": ">=8"
},
- "peerDependencies": {
- "@sveltejs/vite-plugin-svelte": "^3.0.0",
- "svelte": "^4.0.0 || ^5.0.0-next.0",
- "vite": "^5.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@swc/helpers": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz",
- "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==",
+ "node_modules/@eslint/eslintrc/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": {
- "tslib": "^2.4.0"
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "node_modules/@tensorflow/tfjs": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-4.15.0.tgz",
- "integrity": "sha512-SdhKYAx/UiMJuKYxf3aXMOuK4j+rwEGRNlwAMIYPYJAFMySdqZ7hC4ZV6mB8D4LAjkgk35y3zOJ/3MWamstKdg==",
- "dependencies": {
- "@tensorflow/tfjs-backend-cpu": "4.15.0",
- "@tensorflow/tfjs-backend-webgl": "4.15.0",
- "@tensorflow/tfjs-converter": "4.15.0",
- "@tensorflow/tfjs-core": "4.15.0",
- "@tensorflow/tfjs-data": "4.15.0",
- "@tensorflow/tfjs-layers": "4.15.0",
- "argparse": "^1.0.10",
- "chalk": "^4.1.0",
- "core-js": "3.29.1",
- "regenerator-runtime": "^0.13.5",
- "yargs": "^16.0.3"
+ "node_modules/@eslint/eslintrc/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"
},
- "bin": {
- "tfjs-custom-module": "dist/tools/custom_module/cli.js"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@tensorflow/tfjs-backend-cpu": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.15.0.tgz",
- "integrity": "sha512-w3ecwXOdp+usf0s8lkLVl7+hCkKJY5Fm4LxqJ2Oy5MeeMNbwka8fDt8xyW5gOf0/gAaeG3qMKkh0lo6rr9fRlw==",
- "dependencies": {
- "@types/seedrandom": "^2.4.28",
- "seedrandom": "^3.0.5"
- },
+ "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": {
- "yarn": ">= 1.3.2"
- },
- "peerDependencies": {
- "@tensorflow/tfjs-core": "4.15.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
- "node_modules/@tensorflow/tfjs-backend-webgl": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.15.0.tgz",
- "integrity": "sha512-FoOva3KjKvWVHAXWAW5Ojboz1IbM1K9i8ggNG7czJgE0La4JHMo814UHSoE6Rc0hkRoOpvDUa+FxsqYOBEhuzQ==",
- "dependencies": {
- "@tensorflow/tfjs-backend-cpu": "4.15.0",
- "@types/offscreencanvas": "~2019.3.0",
- "@types/seedrandom": "^2.4.28",
- "seedrandom": "^3.0.5"
+ "node_modules/@formatjs/cli": {
+ "version": "6.2.12",
+ "resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.2.12.tgz",
+ "integrity": "sha512-bt1NEgkeYN8N9zWcpsPu3fZ57vv+biA+NtIQBlyOZnCp1bcvh+vNTXvmwF4C5qxqDtCylpOIb3yi3Ktgp4v0JQ==",
+ "dev": true,
+ "bin": {
+ "formatjs": "bin/formatjs"
},
"engines": {
- "yarn": ">= 1.3.2"
+ "node": ">= 16"
},
"peerDependencies": {
- "@tensorflow/tfjs-core": "4.15.0"
+ "@glimmer/env": "^0.1.7",
+ "@glimmer/reference": "^0.91.1 || ^0.92.0",
+ "@glimmer/syntax": "^0.92.0",
+ "@glimmer/validator": "^0.92.0",
+ "@vue/compiler-core": "^3.4.0",
+ "content-tag": "^2.0.1",
+ "ember-template-recast": "^6.1.4",
+ "vue": "^3.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@glimmer/env": {
+ "optional": true
+ },
+ "@glimmer/reference": {
+ "optional": true
+ },
+ "@glimmer/syntax": {
+ "optional": true
+ },
+ "@glimmer/validator": {
+ "optional": true
+ },
+ "@vue/compiler-core": {
+ "optional": true
+ },
+ "content-tag": {
+ "optional": true
+ },
+ "ember-template-recast": {
+ "optional": true
+ },
+ "vue": {
+ "optional": true
+ }
}
},
- "node_modules/@tensorflow/tfjs-converter": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.15.0.tgz",
- "integrity": "sha512-694igyzRcJYf/l6F12l3Sz6hw0xPjihlxXEpIpypYieoq/8WBIoDgigMA/gv0NylkJSfPwwuYs7GF2/zKH2Tmg==",
- "peerDependencies": {
- "@tensorflow/tfjs-core": "4.15.0"
+ "node_modules/@formatjs/ecma402-abstract": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz",
+ "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==",
+ "dependencies": {
+ "@formatjs/intl-localematcher": "0.5.4",
+ "tslib": "^2.4.0"
}
},
- "node_modules/@tensorflow/tfjs-core": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.15.0.tgz",
- "integrity": "sha512-0D9olf5cdMNvJKpmY4yiN0Br1pabOyYDwRyBpl02/Hf6MxiOAi+pXqs/Xa1342g9H2CzqeL1oNxz7nRKa71GyA==",
+ "node_modules/@formatjs/fast-memoize": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz",
+ "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==",
"dependencies": {
- "@types/long": "^4.0.1",
- "@types/offscreencanvas": "~2019.7.0",
- "@types/seedrandom": "^2.4.28",
- "@webgpu/types": "0.1.38",
- "long": "4.0.0",
- "node-fetch": "~2.6.1",
- "seedrandom": "^3.0.5"
- },
- "engines": {
- "yarn": ">= 1.3.2"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": {
- "version": "2019.7.3",
- "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz",
- "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A=="
+ "node_modules/@formatjs/icu-messageformat-parser": {
+ "version": "2.7.8",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz",
+ "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/icu-skeleton-parser": "1.8.2",
+ "tslib": "^2.4.0"
+ }
},
- "node_modules/@tensorflow/tfjs-data": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-4.15.0.tgz",
- "integrity": "sha512-9iDWloyW/tfw11UlVhsAan+ekfGDoPYg2yS5f+43ixdwbfe0jWc/azDhIXoJALMfe7TTLmbMsx3A64e43RoeOw==",
+ "node_modules/@formatjs/icu-skeleton-parser": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz",
+ "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==",
"dependencies": {
- "@types/node-fetch": "^2.1.2",
- "node-fetch": "~2.6.1",
- "string_decoder": "^1.3.0"
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@formatjs/intl": {
+ "version": "2.10.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.4.tgz",
+ "integrity": "sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/fast-memoize": "2.2.0",
+ "@formatjs/icu-messageformat-parser": "2.7.8",
+ "@formatjs/intl-displaynames": "6.6.8",
+ "@formatjs/intl-listformat": "7.5.7",
+ "intl-messageformat": "10.5.14",
+ "tslib": "^2.4.0"
},
"peerDependencies": {
- "@tensorflow/tfjs-core": "4.15.0",
- "seedrandom": "^3.0.5"
+ "typescript": "^4.7 || 5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/@tensorflow/tfjs-layers": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-4.15.0.tgz",
- "integrity": "sha512-PwIXB7UtGyKVmIcbonqdtArcBgva8DOxeZqklyvb/zfg17GpWeh2++eUHKSpAl5K0mdO5Y2pL4ssD9p6AQqk9w==",
- "peerDependencies": {
- "@tensorflow/tfjs-core": "4.15.0"
+ "node_modules/@formatjs/intl-displaynames": {
+ "version": "6.6.8",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.6.8.tgz",
+ "integrity": "sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/intl-localematcher": "0.5.4",
+ "tslib": "^2.4.0"
}
},
- "node_modules/@tensorflow/tfjs/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==",
+ "node_modules/@formatjs/intl-listformat": {
+ "version": "7.5.7",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz",
+ "integrity": "sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==",
"dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/intl-localematcher": "0.5.4",
+ "tslib": "^2.4.0"
}
},
- "node_modules/@tensorflow/tfjs/node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/@formatjs/intl-localematcher": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz",
+ "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "tslib": "^2.4.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==",
+ "deprecated": "Use @eslint/config-array instead",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": ">=10.10.0"
}
},
- "node_modules/@tensorflow/tfjs/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==",
+ "node_modules/@humanwhocodes/config-array/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": {
- "color-name": "~1.1.4"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/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": ">=7.0.0"
+ "node": "*"
}
},
- "node_modules/@tensorflow/tfjs/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=="
+ "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/@tensorflow/tfjs/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==",
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true
+ },
+ "node_modules/@jest/expect-utils": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
+ "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
+ "dev": true,
+ "dependencies": {
+ "jest-get-type": "^29.6.3"
+ },
"engines": {
- "node": ">=8"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@tensorflow/tfjs/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==",
+ "node_modules/@jest/schemas": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
+ "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
+ "dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "@sinclair/typebox": "^0.27.8"
},
"engines": {
- "node": ">=8"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@testing-library/dom": {
- "version": "9.3.3",
- "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz",
- "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==",
+ "node_modules/@jest/types": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
+ "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "^7.10.4",
- "@babel/runtime": "^7.12.5",
- "@types/aria-query": "^5.0.1",
- "aria-query": "5.1.3",
- "chalk": "^4.1.0",
- "dom-accessibility-api": "^0.5.9",
- "lz-string": "^1.5.0",
- "pretty-format": "^27.0.2"
+ "@jest/schemas": "^29.6.3",
+ "@types/istanbul-lib-coverage": "^2.0.0",
+ "@types/istanbul-reports": "^3.0.0",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.8",
+ "chalk": "^4.0.0"
},
"engines": {
- "node": ">=14"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@testing-library/dom/node_modules/ansi-styles": {
+ "node_modules/@jest/types/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==",
@@ -3345,7 +4226,7 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/@testing-library/dom/node_modules/chalk": {
+ "node_modules/@jest/types/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
@@ -3361,7 +4242,7 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/@testing-library/dom/node_modules/color-convert": {
+ "node_modules/@jest/types/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==",
@@ -3373,13 +4254,13 @@
"node": ">=7.0.0"
}
},
- "node_modules/@testing-library/dom/node_modules/color-name": {
+ "node_modules/@jest/types/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/@testing-library/dom/node_modules/has-flag": {
+ "node_modules/@jest/types/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==",
@@ -3388,7 +4269,7 @@
"node": ">=8"
}
},
- "node_modules/@testing-library/dom/node_modules/supports-color": {
+ "node_modules/@jest/types/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==",
@@ -3400,2596 +4281,6244 @@
"node": ">=8"
}
},
- "node_modules/@testing-library/jest-dom": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.2.0.tgz",
- "integrity": "sha512-+BVQlJ9cmEn5RDMUS8c2+TU6giLvzaHZ8sU/x0Jj7fk+6/46wPdwlgOPcpxS17CjcanBi/3VmGMqVr2rmbUmNw==",
- "dev": true,
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dependencies": {
- "@adobe/css-tools": "^4.3.2",
- "@babel/runtime": "^7.9.2",
- "aria-query": "^5.0.0",
- "chalk": "^3.0.0",
- "css.escape": "^1.5.1",
- "dom-accessibility-api": "^0.6.3",
- "lodash": "^4.17.15",
- "redent": "^3.0.0"
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
- "node": ">=14",
- "npm": ">=6",
- "yarn": ">=1"
- },
- "peerDependencies": {
- "@jest/globals": ">= 28",
- "@types/jest": ">= 28",
- "jest": ">= 28",
- "vitest": ">= 0.32"
- },
- "peerDependenciesMeta": {
- "@jest/globals": {
- "optional": true
- },
- "@types/jest": {
- "optional": true
- },
- "jest": {
- "optional": true
- },
- "vitest": {
- "optional": true
- }
+ "node": ">=6.0.0"
}
},
- "node_modules/@testing-library/jest-dom/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==",
+ "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==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
"dev": true,
"dependencies": {
- "color-convert": "^2.0.1"
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "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.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@kurkle/color": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
+ "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
+ },
+ "node_modules/@microbit/makecode-embed": {
+ "version": "0.0.0-alpha.7",
+ "resolved": "https://registry.npmjs.org/@microbit/makecode-embed/-/makecode-embed-0.0.0-alpha.7.tgz",
+ "integrity": "sha512-tQPLXfQFRCIMpl80OCyZ4c7UlBiSasZb2gl8hUiFG+Q7Rb9Q8Zan9dQ4dNPueEAzn1Osykhekd9wrYhdnn2FDg==",
+ "dependencies": {
+ "tslib": ">=2.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=20",
+ "npm": ">=10"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "peerDependencies": {
+ "react": ">=18.0.0",
+ "react-dom": ">=18.0.0"
}
},
- "node_modules/@testing-library/jest-dom/node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
+ "node_modules/@microbit/microbit-connection": {
+ "version": "0.0.0-alpha.21",
+ "resolved": "https://registry.npmjs.org/@microbit/microbit-connection/-/microbit-connection-0.0.0-alpha.21.tgz",
+ "integrity": "sha512-qIyGL+yas89w5/sHIvTRIfT+1iDFe19MBzDCWSpYg18Vjv+6pcTdai/2qLvtzYrr6uODvlZJSpaW9LEoSFl1Eg==",
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
+ "@microbit/microbit-universal-hex": "^0.2.2",
+ "@types/web-bluetooth": "^0.0.20",
+ "crelt": "^1.0.6",
+ "dapjs": "github:microbit-matt-hillsdon/dapjs#v2.3.0-microbit.2",
+ "nrf-intel-hex": "^1.4.0"
+ }
+ },
+ "node_modules/@microbit/microbit-universal-hex": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@microbit/microbit-universal-hex/-/microbit-universal-hex-0.2.2.tgz",
+ "integrity": "sha512-qyFt8ATgxAyPkNz9Yado4HXEeCctwP/8L1/v2hFLeVUqw/HFqVqV4piJbqRMmyOefMcQ9OyVPhLXjtbKn9063Q==",
"engines": {
- "node": ">=8"
+ "node": ">=8.5",
+ "npm": ">=6.0",
+ "yarn": "^1.0"
+ },
+ "peerDependencies": {
+ "tslib": ">=1.11.1"
}
},
- "node_modules/@testing-library/jest-dom/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==",
+ "node_modules/@microbit/ml-header-generator": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@microbit/ml-header-generator/-/ml-header-generator-0.4.3.tgz",
+ "integrity": "sha512-aMdo074VvHr4Ol1ctx8zvvaqX/FjOBD7bv2I+CLyV051OeZ24PdYB6FMf5nH6ULJVyUgKGNjIadAxRbieaPauA=="
+ },
+ "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": {
- "color-name": "~1.1.4"
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">= 8"
}
},
- "node_modules/@testing-library/jest-dom/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/@testing-library/jest-dom/node_modules/dom-accessibility-api": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz",
- "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
- "dev": true
- },
- "node_modules/@testing-library/jest-dom/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==",
+ "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": ">= 8"
}
},
- "node_modules/@testing-library/jest-dom/node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "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": ">= 8"
}
},
- "node_modules/@testing-library/jest-dom/node_modules/redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "node_modules/@playwright/test": {
+ "version": "1.45.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.0.tgz",
+ "integrity": "sha512-TVYsfMlGAaxeUllNkywbwek67Ncf8FRGn8ZlRdO291OL3NjG9oMbfVhyP82HQF0CZLMrYsvesqoUekxdWuF9Qw==",
"dev": true,
"dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
+ "playwright": "1.45.0"
+ },
+ "bin": {
+ "playwright": "cli.js"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/@testing-library/jest-dom/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==",
+ "node_modules/@popperjs/core": {
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@remix-run/router": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.17.0.tgz",
+ "integrity": "sha512-2D6XaHEVvkCn682XBnipbJjgZUU7xjLtA4dGJRBVUKpEaDYOZMENZoZjAOSb7qirxt5RupjzZxz4fK2FO+EFPw==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@rollup/plugin-node-resolve": {
+ "version": "15.2.3",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz",
+ "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==",
"dev": true,
"dependencies": {
- "has-flag": "^4.0.0"
+ "@rollup/pluginutils": "^5.0.1",
+ "@types/resolve": "1.20.2",
+ "deepmerge": "^4.2.2",
+ "is-builtin-module": "^3.2.1",
+ "is-module": "^1.0.0",
+ "resolve": "^1.22.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.78.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
}
},
- "node_modules/@testing-library/svelte": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-4.0.5.tgz",
- "integrity": "sha512-P7X3mpYv/My4hBZfxVxTFV5KcA+EoWfRCguWP7WQdYj6HMdg/L+LiwG4ocvLe+hupedrC7dwcy85JlxKplJp2g==",
+ "node_modules/@rollup/plugin-terser": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
+ "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
"dev": true,
"dependencies": {
- "@testing-library/dom": "^9.3.1"
+ "serialize-javascript": "^6.0.1",
+ "smob": "^1.0.0",
+ "terser": "^5.17.4"
},
"engines": {
- "node": ">= 10"
+ "node": ">=14.0.0"
},
"peerDependencies": {
- "svelte": "^3 || ^4"
+ "rollup": "^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
}
},
- "node_modules/@tsconfig/svelte": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-4.0.1.tgz",
- "integrity": "sha512-B+XlGpmuAQzJqDoBATNCvEPqQg0HkO7S8pM14QDI5NsmtymzRexQ1N+nX2H6RTtFbuFgaZD4I8AAi8voGg0GLg==",
- "dev": true
- },
- "node_modules/@tweenjs/tween.js": {
- "version": "18.6.4",
- "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.4.tgz",
- "integrity": "sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==",
- "dev": true
- },
- "node_modules/@types/aria-query": {
- "version": "5.0.4",
- "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
- "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
- "dev": true
- },
- "node_modules/@types/browser-lang": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@types/browser-lang/-/browser-lang-0.1.2.tgz",
- "integrity": "sha512-F6UrLn++11o967g8+G4c0mILIuSuyhpE9N989T4Rr+sgHqYpdrAbPgp3KOPPf4AA2A09dQDUB8/3K1GBG9Daeg==",
- "dev": true
- },
- "node_modules/@types/d3": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
- "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
+ "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/d3-array": "*",
- "@types/d3-axis": "*",
- "@types/d3-brush": "*",
- "@types/d3-chord": "*",
- "@types/d3-color": "*",
- "@types/d3-contour": "*",
- "@types/d3-delaunay": "*",
- "@types/d3-dispatch": "*",
- "@types/d3-drag": "*",
- "@types/d3-dsv": "*",
- "@types/d3-ease": "*",
- "@types/d3-fetch": "*",
- "@types/d3-force": "*",
- "@types/d3-format": "*",
- "@types/d3-geo": "*",
- "@types/d3-hierarchy": "*",
- "@types/d3-interpolate": "*",
- "@types/d3-path": "*",
- "@types/d3-polygon": "*",
- "@types/d3-quadtree": "*",
- "@types/d3-random": "*",
- "@types/d3-scale": "*",
- "@types/d3-scale-chromatic": "*",
- "@types/d3-selection": "*",
- "@types/d3-shape": "*",
- "@types/d3-time": "*",
- "@types/d3-time-format": "*",
- "@types/d3-timer": "*",
- "@types/d3-transition": "*",
- "@types/d3-zoom": "*"
+ "@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/@types/d3-array": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
- "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==",
- "dev": true
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
+ "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ]
},
- "node_modules/@types/d3-axis": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
- "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz",
+ "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@types/d3-selection": "*"
- }
+ "optional": true,
+ "os": [
+ "android"
+ ]
},
- "node_modules/@types/d3-brush": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
- "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz",
+ "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "@types/d3-selection": "*"
- }
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
},
- "node_modules/@types/d3-chord": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz",
+ "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz",
+ "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz",
+ "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz",
+ "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz",
+ "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz",
+ "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz",
+ "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz",
+ "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
+ "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz",
+ "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz",
+ "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz",
+ "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz",
+ "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@sinclair/typebox": {
+ "version": "0.27.8",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
+ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
+ "dev": true
+ },
+ "node_modules/@surma/rollup-plugin-off-main-thread": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz",
+ "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==",
+ "dev": true,
+ "dependencies": {
+ "ejs": "^3.1.6",
+ "json5": "^2.2.0",
+ "magic-string": "^0.25.0",
+ "string.prototype.matchall": "^4.0.6"
+ }
+ },
+ "node_modules/@surma/rollup-plugin-off-main-thread/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==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz",
+ "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz",
+ "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz",
+ "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz",
+ "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz",
+ "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz",
+ "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz",
+ "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-plugin-transform-svg-component": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz",
+ "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/babel-preset": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz",
+ "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==",
+ "dev": true,
+ "dependencies": {
+ "@svgr/babel-plugin-add-jsx-attribute": "8.0.0",
+ "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0",
+ "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0",
+ "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0",
+ "@svgr/babel-plugin-svg-dynamic-title": "8.0.0",
+ "@svgr/babel-plugin-svg-em-dimensions": "8.0.0",
+ "@svgr/babel-plugin-transform-react-native-svg": "8.1.0",
+ "@svgr/babel-plugin-transform-svg-component": "8.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@svgr/core": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz",
+ "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.21.3",
+ "@svgr/babel-preset": "8.1.0",
+ "camelcase": "^6.2.0",
+ "cosmiconfig": "^8.1.3",
+ "snake-case": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/core/node_modules/cosmiconfig": {
+ "version": "8.3.6",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
+ "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@svgr/hast-util-to-babel-ast": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz",
+ "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.21.3",
+ "entities": "^4.4.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ }
+ },
+ "node_modules/@svgr/plugin-jsx": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz",
+ "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.21.3",
+ "@svgr/babel-preset": "8.1.0",
+ "@svgr/hast-util-to-babel-ast": "8.0.0",
+ "svg-parser": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/gregberge"
+ },
+ "peerDependencies": {
+ "@svgr/core": "*"
+ }
+ },
+ "node_modules/@tensorflow/tfjs": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-4.20.0.tgz",
+ "integrity": "sha512-+ZLfJq2jyIOE2/+yKPoyD/gfy3RZypbfMrlzvBDgodTK5jnexprihhX38hxilh9HPWvWQXJqiUjKJP5ECCikrw==",
+ "dependencies": {
+ "@tensorflow/tfjs-backend-cpu": "4.20.0",
+ "@tensorflow/tfjs-backend-webgl": "4.20.0",
+ "@tensorflow/tfjs-converter": "4.20.0",
+ "@tensorflow/tfjs-core": "4.20.0",
+ "@tensorflow/tfjs-data": "4.20.0",
+ "@tensorflow/tfjs-layers": "4.20.0",
+ "argparse": "^1.0.10",
+ "chalk": "^4.1.0",
+ "core-js": "3.29.1",
+ "regenerator-runtime": "^0.13.5",
+ "yargs": "^16.0.3"
+ },
+ "bin": {
+ "tfjs-custom-module": "dist/tools/custom_module/cli.js"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-backend-cpu": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.20.0.tgz",
+ "integrity": "sha512-1QRQ6AqAa/VB8JOArf5nY3Dc/QQHXbfuxgdIdQhKrABEHgvlaWt2Vv696UhIlVl75YoNY+vWlCwBdGQIKYfFGw==",
+ "dependencies": {
+ "@types/seedrandom": "^2.4.28",
+ "seedrandom": "^3.0.5"
+ },
+ "engines": {
+ "yarn": ">= 1.3.2"
+ },
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.20.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-backend-webgl": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.20.0.tgz",
+ "integrity": "sha512-M03fJonJGxm2u3SCzRNA2JLh0gxaAye64SEmGAXOehizowxy42l+lMsPWU8xU7r7mN6PEilBNkuKAf5YJ7Xumg==",
+ "dependencies": {
+ "@tensorflow/tfjs-backend-cpu": "4.20.0",
+ "@types/offscreencanvas": "~2019.3.0",
+ "@types/seedrandom": "^2.4.28",
+ "seedrandom": "^3.0.5"
+ },
+ "engines": {
+ "yarn": ">= 1.3.2"
+ },
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.20.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-converter": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.20.0.tgz",
+ "integrity": "sha512-UJ2ntQ1TNtVHB5qGMwB0j306bs3KH1E1HKJ9Dxvrc6PUaivOV+CPKqmbidOFG5LylXeRC36JBdhe+gVT2nFHNw==",
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.20.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-core": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.20.0.tgz",
+ "integrity": "sha512-m/cc9qDc63al9UhdbXRUYTLGfJJlhuN5tylAX/2pJMLj32c8a6ThGDJYoKzpf32n5g3MQGYLchjClDxeGdXMPQ==",
+ "dependencies": {
+ "@types/long": "^4.0.1",
+ "@types/offscreencanvas": "~2019.7.0",
+ "@types/seedrandom": "^2.4.28",
+ "@webgpu/types": "0.1.38",
+ "long": "4.0.0",
+ "node-fetch": "~2.6.1",
+ "seedrandom": "^3.0.5"
+ },
+ "engines": {
+ "yarn": ">= 1.3.2"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": {
+ "version": "2019.7.3",
+ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz",
+ "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A=="
+ },
+ "node_modules/@tensorflow/tfjs-data": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-4.20.0.tgz",
+ "integrity": "sha512-k6S8joXhoXkatcoT6mYCxBzRCsnrLfnl6xjLe46SnXO0oEEy4Vuzbmp5Ydl1uU2hHr73zL91EdAC1k8Hng/+oA==",
+ "dependencies": {
+ "@types/node-fetch": "^2.1.2",
+ "node-fetch": "~2.6.1",
+ "string_decoder": "^1.3.0"
+ },
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.20.0",
+ "seedrandom": "^3.0.5"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-layers": {
+ "version": "4.20.0",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-4.20.0.tgz",
+ "integrity": "sha512-SCHZH29Vyw+Y9eoaJHiaNo6yqM9vD3XCKncoczonRRywejm3FFqddg1AuWAfSE9XoNPE21o9PsknvKLl/Uh+Cg==",
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": "4.20.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-vis": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-vis/-/tfjs-vis-1.5.1.tgz",
+ "integrity": "sha512-oNithKiR7VZaE+xUvz6Leww4TYEPhKi8j5xnEYvT3j7brK2Njdvril7UgFtZ8EYZBdeX6XNim5Eu3/23gTQ1dA==",
+ "dependencies": {
+ "d3-format": "~1.3.0",
+ "d3-selection": "~1.3.0",
+ "glamor": "~2.20.40",
+ "preact": "~8.2.9",
+ "vega": "5.20.0",
+ "vega-embed": "6.17.0",
+ "vega-lite": "4.13.1"
+ },
+ "peerDependencies": {
+ "@tensorflow/tfjs-core": ">= 1.0.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs-vis/node_modules/d3-format": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.3.2.tgz",
+ "integrity": "sha512-Z18Dprj96ExragQ0DeGi+SYPQ7pPfRMtUXtsg/ChVIKNBCzjO8XYJvRTC1usblx52lqge56V5ect+frYTQc8WQ=="
+ },
+ "node_modules/@tensorflow/tfjs-vis/node_modules/d3-selection": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.2.tgz",
+ "integrity": "sha512-OoXdv1nZ7h2aKMVg3kaUFbLLK5jXUFAMLD/Tu5JA96mjf8f2a9ZUESGY+C36t8R1WFeWk/e55hy54Ml2I62CRQ=="
+ },
+ "node_modules/@tensorflow/tfjs/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@tensorflow/tfjs/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "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/@tensorflow/tfjs/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==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@tensorflow/tfjs/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=="
+ },
+ "node_modules/@tensorflow/tfjs/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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@tensorflow/tfjs/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==",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/dom": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.2.0.tgz",
+ "integrity": "sha512-CytIvb6tVOADRngTHGWNxH8LPgO/3hi/BdCEHOf7Qd2GvZVClhVP0Wo/QHzWhpki49Bk0b4VT6xpt3fx8HTSIw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^5.0.1",
+ "aria-query": "5.3.0",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.5.0",
+ "pretty-format": "^27.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@testing-library/dom/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,
+ "peer": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@testing-library/dom/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,
+ "peer": 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/@testing-library/dom/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,
+ "peer": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@testing-library/dom/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,
+ "peer": true
+ },
+ "node_modules/@testing-library/dom/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,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/dom/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,
+ "peer": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/jest-dom": {
+ "version": "5.17.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz",
+ "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==",
+ "dev": true,
+ "dependencies": {
+ "@adobe/css-tools": "^4.0.1",
+ "@babel/runtime": "^7.9.2",
+ "@types/testing-library__jest-dom": "^5.9.1",
+ "aria-query": "^5.0.0",
+ "chalk": "^3.0.0",
+ "css.escape": "^1.5.1",
+ "dom-accessibility-api": "^0.5.6",
+ "lodash": "^4.17.15",
+ "redent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "node_modules/@testing-library/jest-dom/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/@testing-library/jest-dom/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/jest-dom/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/@testing-library/jest-dom/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/@testing-library/jest-dom/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/@testing-library/jest-dom/node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/jest-dom/node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dev": true,
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@testing-library/jest-dom/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/@testing-library/react": {
+ "version": "14.3.1",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.3.1.tgz",
+ "integrity": "sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@testing-library/dom": "^9.0.0",
+ "@types/react-dom": "^18.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ }
+ },
+ "node_modules/@testing-library/react/node_modules/@testing-library/dom": {
+ "version": "9.3.4",
+ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz",
+ "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/runtime": "^7.12.5",
+ "@types/aria-query": "^5.0.1",
+ "aria-query": "5.1.3",
+ "chalk": "^4.1.0",
+ "dom-accessibility-api": "^0.5.9",
+ "lz-string": "^1.5.0",
+ "pretty-format": "^27.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@testing-library/react/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/@testing-library/react/node_modules/aria-query": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
+ "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+ "dev": true,
+ "dependencies": {
+ "deep-equal": "^2.0.5"
+ }
+ },
+ "node_modules/@testing-library/react/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/@testing-library/react/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/@testing-library/react/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/@testing-library/react/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/@testing-library/react/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/@testing-library/user-event": {
+ "version": "14.5.2",
+ "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz",
+ "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ },
+ "peerDependencies": {
+ "@testing-library/dom": ">=7.21.4"
+ }
+ },
+ "node_modules/@types/aria-query": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
+ "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
+ "dev": true
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
+ "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/clone": {
+ "version": "0.1.30",
+ "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz",
+ "integrity": "sha512-vcxBr+ybljeSiasmdke1cQ9ICxoEwaBgM1OQ/P5h4MPj/kRyLcDl5L8PrftlbyV1kBbJIs3M3x1A1+rcWd4mEA=="
+ },
+ "node_modules/@types/d3": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
+ "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-array": "*",
+ "@types/d3-axis": "*",
+ "@types/d3-brush": "*",
+ "@types/d3-chord": "*",
+ "@types/d3-color": "*",
+ "@types/d3-contour": "*",
+ "@types/d3-delaunay": "*",
+ "@types/d3-dispatch": "*",
+ "@types/d3-drag": "*",
+ "@types/d3-dsv": "*",
+ "@types/d3-ease": "*",
+ "@types/d3-fetch": "*",
+ "@types/d3-force": "*",
+ "@types/d3-format": "*",
+ "@types/d3-geo": "*",
+ "@types/d3-hierarchy": "*",
+ "@types/d3-interpolate": "*",
+ "@types/d3-path": "*",
+ "@types/d3-polygon": "*",
+ "@types/d3-quadtree": "*",
+ "@types/d3-random": "*",
+ "@types/d3-scale": "*",
+ "@types/d3-scale-chromatic": "*",
+ "@types/d3-selection": "*",
+ "@types/d3-shape": "*",
+ "@types/d3-time": "*",
+ "@types/d3-time-format": "*",
+ "@types/d3-timer": "*",
+ "@types/d3-transition": "*",
+ "@types/d3-zoom": "*"
+ }
+ },
+ "node_modules/@types/d3-array": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
+ "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==",
+ "dev": true
+ },
+ "node_modules/@types/d3-axis": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
+ "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-brush": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
+ "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-chord": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
"integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==",
"dev": true
},
- "node_modules/@types/d3-color": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
- "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
+ "node_modules/@types/d3-color": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
+ "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
+ "dev": true
+ },
+ "node_modules/@types/d3-contour": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
+ "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-array": "*",
+ "@types/geojson": "*"
+ }
+ },
+ "node_modules/@types/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
+ "dev": true
+ },
+ "node_modules/@types/d3-dispatch": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz",
+ "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==",
+ "dev": true
+ },
+ "node_modules/@types/d3-drag": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
+ "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-dsv": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
+ "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
+ "dev": true
+ },
+ "node_modules/@types/d3-ease": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
+ "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
+ "dev": true
+ },
+ "node_modules/@types/d3-fetch": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
+ "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-dsv": "*"
+ }
+ },
+ "node_modules/@types/d3-force": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz",
+ "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==",
+ "dev": true
+ },
+ "node_modules/@types/d3-format": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
+ "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
+ "dev": true
+ },
+ "node_modules/@types/d3-geo": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
+ "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/geojson": "*"
+ }
+ },
+ "node_modules/@types/d3-hierarchy": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.6.tgz",
+ "integrity": "sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw==",
+ "dev": true
+ },
+ "node_modules/@types/d3-interpolate": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
+ "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-color": "*"
+ }
+ },
+ "node_modules/@types/d3-path": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.2.tgz",
+ "integrity": "sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==",
+ "dev": true
+ },
+ "node_modules/@types/d3-polygon": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
+ "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
+ "dev": true
+ },
+ "node_modules/@types/d3-quadtree": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
+ "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
+ "dev": true
+ },
+ "node_modules/@types/d3-random": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
+ "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
+ "dev": true
+ },
+ "node_modules/@types/d3-scale": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
+ "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-time": "*"
+ }
+ },
+ "node_modules/@types/d3-scale-chromatic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz",
+ "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==",
+ "dev": true
+ },
+ "node_modules/@types/d3-selection": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz",
+ "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==",
+ "dev": true
+ },
+ "node_modules/@types/d3-shape": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
+ "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-path": "*"
+ }
+ },
+ "node_modules/@types/d3-time": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
+ "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==",
+ "dev": true
+ },
+ "node_modules/@types/d3-time-format": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
+ "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
+ "dev": true
+ },
+ "node_modules/@types/d3-timer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
+ "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
+ "dev": true
+ },
+ "node_modules/@types/d3-transition": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz",
+ "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/d3-zoom": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
+ "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
+ "dev": true,
+ "dependencies": {
+ "@types/d3-interpolate": "*",
+ "@types/d3-selection": "*"
+ }
+ },
+ "node_modules/@types/ejs": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz",
+ "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==",
+ "dev": true
+ },
+ "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/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@types/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-IyNhGHu71jH1jCXTHmafuoAAdsbBON3kDh7u/UUhLmjYgN5TYB54e1R8ckTCiIevl2UuZaCsi9XRxineY5yUjw==",
+ "deprecated": "This is a stub types definition. fast-json-stable-stringify provides its own type definitions, so you do not need this installed.",
+ "dependencies": {
+ "fast-json-stable-stringify": "*"
+ }
+ },
+ "node_modules/@types/geojson": {
+ "version": "7946.0.13",
+ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz",
+ "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==",
+ "dev": true
+ },
+ "node_modules/@types/hoist-non-react-statics": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz",
+ "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==",
+ "dependencies": {
+ "@types/react": "*",
+ "hoist-non-react-statics": "^3.3.0"
+ }
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/jest": {
+ "version": "29.5.12",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz",
+ "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==",
+ "dev": true,
+ "dependencies": {
+ "expect": "^29.0.0",
+ "pretty-format": "^29.0.0"
+ }
+ },
+ "node_modules/@types/jest/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@types/jest/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@types/jest/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "dev": true
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.17.5",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.5.tgz",
+ "integrity": "sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw=="
+ },
+ "node_modules/@types/lodash.camelcase": {
+ "version": "4.3.9",
+ "resolved": "https://registry.npmjs.org/@types/lodash.camelcase/-/lodash.camelcase-4.3.9.tgz",
+ "integrity": "sha512-ys9/hGBfsKxzmFI8hckII40V0ASQ83UM2pxfQRghHAwekhH4/jWtjz/3/9YDy7ZpUd/H0k2STSqmPR28dnj7Zg==",
+ "dev": true,
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/lodash.mergewith": {
+ "version": "4.6.7",
+ "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz",
+ "integrity": "sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==",
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/lodash.upperfirst": {
+ "version": "4.3.9",
+ "resolved": "https://registry.npmjs.org/@types/lodash.upperfirst/-/lodash.upperfirst-4.3.9.tgz",
+ "integrity": "sha512-bYhT1QEsk9/ggrFjK86Pb5bnKJgTBbpVA77Ygbb1aW1oiWJNGRbVjSlQ9We/ihB9vVpX5WqDJvbISXlukGR+dQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/long": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
+ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
+ },
+ "node_modules/@types/node": {
+ "version": "18.19.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz",
+ "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/@types/node-fetch": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz",
+ "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==",
+ "dependencies": {
+ "@types/node": "*",
+ "form-data": "^4.0.0"
+ }
+ },
+ "node_modules/@types/node-hid": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/@types/node-hid/-/node-hid-1.3.4.tgz",
+ "integrity": "sha512-0ootpsYetN9vjqkDSwm/cA4fk/9yGM/PO0X8SLPE/BzXlUaBelImMWMymtF9QEoEzxY0pnhcROIJM0CNSUqO8w==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/offscreencanvas": {
+ "version": "2019.3.0",
+ "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz",
+ "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q=="
+ },
+ "node_modules/@types/parse-json": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
+ },
+ "node_modules/@types/prop-types": {
+ "version": "15.7.12",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz",
+ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q=="
+ },
+ "node_modules/@types/react": {
+ "version": "18.3.3",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz",
+ "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "18.3.0",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz",
+ "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==",
+ "dev": true,
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
+ "node_modules/@types/resolve": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
+ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
+ "dev": true
+ },
+ "node_modules/@types/seedrandom": {
+ "version": "2.4.34",
+ "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.34.tgz",
+ "integrity": "sha512-ytDiArvrn/3Xk6/vtylys5tlY6eo7Ane0hvcx++TKo6RxQXuVfW0AF/oeWqAj9dN29SyhtawuXstgmPlwNcv/A=="
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "dev": true
+ },
+ "node_modules/@types/testing-library__jest-dom": {
+ "version": "5.14.9",
+ "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz",
+ "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==",
+ "dev": true,
+ "dependencies": {
+ "@types/jest": "*"
+ }
+ },
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "dev": true
+ },
+ "node_modules/@types/usb": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@types/usb/-/usb-1.5.4.tgz",
+ "integrity": "sha512-NOUza/8yuswu6RoECQyPHEjA34qpDaeONQ72fm+bCnnN2DJjDePAY+NsmV17H88oIlq4JlJ2mD5Kh5d6R2MwTQ==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/w3c-web-serial": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/w3c-web-serial/-/w3c-web-serial-1.0.6.tgz",
+ "integrity": "sha512-5IlDdQ2C56sCVwc7CUlqT9Axxw+0V/FbWRbErklYIzZ5mKL9s4l7epXHygn+4X7L2nmAPnVvRl55XUVo0760Rg=="
+ },
+ "node_modules/@types/w3c-web-usb": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/@types/w3c-web-usb/-/w3c-web-usb-1.0.10.tgz",
+ "integrity": "sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ=="
+ },
+ "node_modules/@types/web-bluetooth": {
+ "version": "0.0.20",
+ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz",
+ "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow=="
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.32",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
+ "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
+ "dev": true,
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz",
+ "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "7.14.1",
+ "@typescript-eslint/type-utils": "7.14.1",
+ "@typescript-eslint/utils": "7.14.1",
+ "@typescript-eslint/visitor-keys": "7.14.1",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.3.1",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.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/parser": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz",
+ "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "7.14.1",
+ "@typescript-eslint/types": "7.14.1",
+ "@typescript-eslint/typescript-estree": "7.14.1",
+ "@typescript-eslint/visitor-keys": "7.14.1",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.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.14.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz",
+ "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.14.1",
+ "@typescript-eslint/visitor-keys": "7.14.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz",
+ "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "7.14.1",
+ "@typescript-eslint/utils": "7.14.1",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.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.14.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz",
+ "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==",
+ "dev": true,
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz",
+ "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.14.1",
+ "@typescript-eslint/visitor-keys": "7.14.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^1.3.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.6.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
+ "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz",
+ "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@typescript-eslint/scope-manager": "7.14.1",
+ "@typescript-eslint/types": "7.14.1",
+ "@typescript-eslint/typescript-estree": "7.14.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.14.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz",
+ "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.14.1",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.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/@vitejs/plugin-react": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz",
+ "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.24.5",
+ "@babel/plugin-transform-react-jsx-self": "^7.24.5",
+ "@babel/plugin-transform-react-jsx-source": "^7.24.1",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.14.2"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0"
+ }
+ },
+ "node_modules/@vitest/expect": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz",
+ "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==",
+ "dev": true,
+ "dependencies": {
+ "@vitest/spy": "1.6.0",
+ "@vitest/utils": "1.6.0",
+ "chai": "^4.3.10"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/runner": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.0.tgz",
+ "integrity": "sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==",
+ "dev": true,
+ "dependencies": {
+ "@vitest/utils": "1.6.0",
+ "p-limit": "^5.0.0",
+ "pathe": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/runner/node_modules/p-limit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz",
+ "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vitest/runner/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vitest/snapshot": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.0.tgz",
+ "integrity": "sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==",
+ "dev": true,
+ "dependencies": {
+ "magic-string": "^0.30.5",
+ "pathe": "^1.1.1",
+ "pretty-format": "^29.7.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/snapshot/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@vitest/snapshot/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@vitest/snapshot/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "dev": true
+ },
+ "node_modules/@vitest/spy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz",
+ "integrity": "sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==",
+ "dev": true,
+ "dependencies": {
+ "tinyspy": "^2.2.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/utils": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz",
+ "integrity": "sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==",
+ "dev": true,
+ "dependencies": {
+ "diff-sequences": "^29.6.3",
+ "estree-walker": "^3.0.3",
+ "loupe": "^2.3.7",
+ "pretty-format": "^29.7.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/utils/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@vitest/utils/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/@vitest/utils/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "dev": true,
+ "dependencies": {
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@vitest/utils/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "dev": true
+ },
+ "node_modules/@webgpu/types": {
+ "version": "0.1.38",
+ "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.38.tgz",
+ "integrity": "sha512-7LrhVKz2PRh+DD7+S+PVaFd5HxaWQvoMqBbsV9fNJO1pjUs1P8bM2vQVNfk+3URTqbuTI7gkXi0rfsN0IadoBA=="
+ },
+ "node_modules/@zag-js/dom-query": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-0.16.0.tgz",
+ "integrity": "sha512-Oqhd6+biWyKnhKwFFuZrrf6lxBz2tX2pRQe6grUnYwO6HJ8BcbqZomy2lpOdr+3itlaUqx+Ywj5E5ZZDr/LBfQ=="
+ },
+ "node_modules/@zag-js/element-size": {
+ "version": "0.10.5",
+ "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.10.5.tgz",
+ "integrity": "sha512-uQre5IidULANvVkNOBQ1tfgwTQcGl4hliPSe69Fct1VfYb2Fd0jdAcGzqQgPhfrXFpR62MxLPB7erxJ/ngtL8w=="
+ },
+ "node_modules/@zag-js/focus-visible": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.16.0.tgz",
+ "integrity": "sha512-a7U/HSopvQbrDU4GLerpqiMcHKEkQkNPeDZJWz38cw/6Upunh41GjHetq5TB84hxyCaDzJ6q2nEdNoBQfC0FKA==",
+ "dependencies": {
+ "@zag-js/dom-query": "0.16.0"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.2",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
+ "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "8.3.3",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz",
+ "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.11.0"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
+ "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "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==",
+ "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==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "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/aria-hidden": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz",
+ "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==",
+ "dependencies": {
+ "tslib": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
+ "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+ "dev": true,
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
+ "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-flat-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz",
+ "integrity": "sha512-hfJmKupmQN0lwi0xG6FQ5U8Rd97RnIERplymOv/qpq8AoNKPPAnxJadjFA23FNWm88wykh9HmpLJUUwUtNU/iw==",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/array-includes": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
+ "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array.prototype.findlast": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
+ "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flat": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
+ "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.flatmap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
+ "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.toreversed": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz",
+ "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-shim-unscopables": "^1.0.0"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
+ "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.5",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.2.1",
+ "get-intrinsic": "^1.2.3",
+ "is-array-buffer": "^3.0.4",
+ "is-shared-array-buffer": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+ },
+ "node_modules/assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
+ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
+ "dev": true
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/at-least-node": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/babel-plugin-macros": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+ "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "cosmiconfig": "^7.0.0",
+ "resolve": "^1.19.0"
+ },
+ "engines": {
+ "node": ">=10",
+ "npm": ">=6"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz",
+ "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.4.4",
+ "semver": "^6.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.8.7",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz",
+ "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.4.4",
+ "core-js-compat": "^3.33.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz",
+ "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.4.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ }
+ },
+ "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/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bowser": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
+ "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
+ },
+ "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/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
+ "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+ "dev": 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.30001565",
+ "electron-to-chromium": "^1.4.601",
+ "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-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==",
+ "dev": true
+ },
+ "node_modules/builtin-modules": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
+ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cac": {
+ "version": "6.7.14",
+ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
+ "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "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.30001570",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
+ "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==",
+ "dev": 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/chai": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz",
+ "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==",
+ "dev": true,
+ "dependencies": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.3",
+ "deep-eql": "^4.1.3",
+ "get-func-name": "^2.0.2",
+ "loupe": "^2.3.6",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chart.js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.1.tgz",
+ "integrity": "sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==",
+ "dependencies": {
+ "@kurkle/color": "^0.3.0"
+ },
+ "engines": {
+ "pnpm": ">=7"
+ }
+ },
+ "node_modules/check-error": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
+ "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+ "dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "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"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
+ "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clear-any-console": {
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/clear-any-console/-/clear-any-console-1.16.2.tgz",
+ "integrity": "sha512-OL/7wZpNy9x0GBSzz3poWja84Nr7iaH8aYNsJ5Uet2BVLj6Lm1zvWpZN/yH46Vv3ae7YfHmLLMmfHj911fshJg==",
+ "dev": true
+ },
+ "node_modules/cli-check-node": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/cli-check-node/-/cli-check-node-1.3.4.tgz",
+ "integrity": "sha512-iLGgQXm82iP8eH3R67qbOWs5qqUOLmNnMy5Lzl/RybcMh3y+H2zWU5POzuQ6oDUOdz4XWuxcFhP75szqd6frLg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^3.0.0",
+ "log-symbols": "^3.0.0"
+ }
+ },
+ "node_modules/cli-check-node/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/cli-check-node/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-check-node/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/cli-check-node/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/cli-check-node/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/cli-check-node/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/cli-handle-error": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/cli-handle-error/-/cli-handle-error-4.4.0.tgz",
+ "integrity": "sha512-RyBCnKlc7xVr79cKb9RfBq+4fjwQeX8HKeNzIPnI/W+DWWIUUKh2ur576DpwJ3kZt2UGHlIAOF7N9txy+mgZsA==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^3.0.0",
+ "log-symbols": "^3.0.0"
+ }
+ },
+ "node_modules/cli-handle-error/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/cli-handle-error/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-handle-error/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/cli-handle-error/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/cli-handle-error/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/cli-handle-error/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/cli-handle-unhandled": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cli-handle-unhandled/-/cli-handle-unhandled-1.1.1.tgz",
+ "integrity": "sha512-Em91mJvU7VdgT2MxQpyY633vW1tDzRjPDbii6ZjEBHHLLh0xDoVkFt/wjvi9nSvJcz9rJmvtJSK8KL/hvF0Stg==",
+ "dev": true,
+ "dependencies": {
+ "cli-handle-error": "^4.1.0"
+ }
+ },
+ "node_modules/cli-welcome": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/cli-welcome/-/cli-welcome-2.2.3.tgz",
+ "integrity": "sha512-hxaOpahLk5PAYJj4tOcv8vaNMaBQHeMzeLQTAHq2EoGGTKVYV/MPCSlg5EEsKZ7y8WDGS2ScQtnITw02ZNukMQ==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "clear-any-console": "^1.16.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "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==",
+ "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=="
+ },
+ "node_modules/color2k": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz",
+ "integrity": "sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog=="
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/common-tags": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+ "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.0.3.tgz",
+ "integrity": "sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A=="
+ },
+ "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/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/copy-to-clipboard": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz",
+ "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==",
+ "dependencies": {
+ "toggle-selection": "^1.0.6"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.29.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.1.tgz",
+ "integrity": "sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==",
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.34.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz",
+ "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.22.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+ "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
+ "dependencies": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.2.1",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.10.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/crelt": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
+ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="
+ },
+ "node_modules/cross-env": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
+ "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.1"
+ },
+ "bin": {
+ "cross-env": "src/bin/cross-env.js",
+ "cross-env-shell": "src/bin/cross-env-shell.js"
+ },
+ "engines": {
+ "node": ">=10.14",
+ "npm": ">=6",
+ "yarn": ">=1"
+ }
+ },
+ "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-random-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/css-box-model": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz",
+ "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==",
+ "dependencies": {
+ "tiny-invariant": "^1.0.6"
+ }
+ },
+ "node_modules/css-in-js-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz",
+ "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==",
+ "dependencies": {
+ "hyphenate-style-name": "^1.0.2",
+ "isobject": "^3.0.1"
+ }
+ },
+ "node_modules/css.escape": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
+ "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
+ "dev": true
+ },
+ "node_modules/cssstyle": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz",
+ "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==",
+ "dev": true,
+ "dependencies": {
+ "rrweb-cssom": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "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/d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "dependencies": {
+ "internmap": "1 - 2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dsv": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
+ "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+ "dependencies": {
+ "commander": "7",
+ "iconv-lite": "0.6",
+ "rw": "1"
+ },
+ "bin": {
+ "csv2json": "bin/dsv2json.js",
+ "csv2tsv": "bin/dsv2dsv.js",
+ "dsv2dsv": "bin/dsv2dsv.js",
+ "dsv2json": "bin/dsv2json.js",
+ "json2csv": "bin/json2dsv.js",
+ "json2dsv": "bin/json2dsv.js",
+ "json2tsv": "bin/json2dsv.js",
+ "tsv2csv": "bin/dsv2dsv.js",
+ "tsv2json": "bin/dsv2json.js"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-geo-projection": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-3.0.0.tgz",
+ "integrity": "sha512-1JE+filVbkEX2bT25dJdQ05iA4QHvUwev6o0nIQHOSrNlHCAKfVss/U10vEM3pA4j5v7uQoFdQ4KLbx9BlEbWA==",
+ "dependencies": {
+ "commander": "2",
+ "d3-array": "1 - 2",
+ "d3-geo": "1.12.0 - 2",
+ "resolve": "^1.1.10"
+ },
+ "bin": {
+ "geo2svg": "bin/geo2svg",
+ "geograticule": "bin/geograticule",
+ "geoproject": "bin/geoproject",
+ "geoquantize": "bin/geoquantize",
+ "geostitch": "bin/geostitch"
+ }
+ },
+ "node_modules/d3-geo-projection/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=="
+ },
+ "node_modules/d3-geo-projection/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
+ }
+ },
+ "node_modules/d3-geo-projection/node_modules/d3-geo": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz",
+ "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==",
+ "dependencies": {
+ "d3-array": "^2.5.0"
+ }
+ },
+ "node_modules/d3-geo-projection/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "dependencies": {
+ "d3-color": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "dependencies": {
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-scale-chromatic": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
+ "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==",
+ "dependencies": {
+ "d3-color": "1 - 3",
+ "d3-interpolate": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "dependencies": {
+ "d3-path": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "dependencies": {
+ "d3-array": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "dependencies": {
+ "d3-time": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/dapjs": {
+ "version": "2.3.0-microbit.2",
+ "resolved": "git+ssh://git@github.com/microbit-matt-hillsdon/dapjs.git#4529bf7a8dcb124b0a7be2bd87a5655557796456",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node-hid": "^1.2.0",
+ "@types/usb": "^1.5.1",
+ "@types/w3c-web-usb": "^1.0.10"
+ },
+ "engines": {
+ "node": ">=8.14.0"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
+ "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
+ "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
+ "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
+ "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
+ "dev": true
+ },
+ "node_modules/deep-eql": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
+ "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/deep-equal": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
+ "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.5",
+ "es-get-iterator": "^1.1.3",
+ "get-intrinsic": "^1.2.2",
+ "is-arguments": "^1.1.1",
+ "is-array-buffer": "^3.0.2",
+ "is-date-object": "^1.0.5",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "isarray": "^2.0.5",
+ "object-is": "^1.1.5",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "side-channel": "^1.0.4",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "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/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/detect-node-es": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
+ },
+ "node_modules/diff-sequences": {
+ "version": "29.6.3",
+ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
+ "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+ "dev": true,
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "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/dom-accessibility-api": {
+ "version": "0.5.16",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
+ "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
+ "dev": true
+ },
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/ejs": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+ "dev": true,
+ "dependencies": {
+ "jake": "^10.8.5"
+ },
+ "bin": {
+ "ejs": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.613",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.613.tgz",
+ "integrity": "sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==",
"dev": true
},
- "node_modules/@types/d3-contour": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
- "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/encoding": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
+ "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.23.3",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
+ "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "dev": true,
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "arraybuffer.prototype.slice": "^1.0.3",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "data-view-buffer": "^1.0.1",
+ "data-view-byte-length": "^1.0.1",
+ "data-view-byte-offset": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "es-set-tostringtag": "^2.0.3",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.6",
+ "get-intrinsic": "^1.2.4",
+ "get-symbol-description": "^1.0.2",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.0.7",
+ "is-array-buffer": "^3.0.4",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.1",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.3",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.13",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.13.1",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.5",
+ "regexp.prototype.flags": "^1.5.2",
+ "safe-array-concat": "^1.1.2",
+ "safe-regex-test": "^1.0.3",
+ "string.prototype.trim": "^1.2.9",
+ "string.prototype.trimend": "^1.0.8",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.6",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.15"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-get-iterator": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+ "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "has-symbols": "^1.0.3",
+ "is-arguments": "^1.1.1",
+ "is-map": "^2.0.2",
+ "is-set": "^2.0.2",
+ "is-string": "^1.0.7",
+ "isarray": "^2.0.5",
+ "stop-iteration-iterator": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-iterator-helpers": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz",
+ "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-set-tostringtag": "^2.0.3",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.0.3",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "iterator.prototype": "^1.1.2",
+ "safe-array-concat": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
+ "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "dev": true,
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
+ "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.2.4",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-shim-unscopables": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
+ "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.19.12",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
+ "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
+ "dev": true,
+ "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/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "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==",
+ "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-plugin-react": {
+ "version": "7.34.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz",
+ "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==",
"dev": true,
"dependencies": {
- "@types/d3-array": "*",
- "@types/geojson": "*"
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
+ "array.prototype.flatmap": "^1.3.2",
+ "array.prototype.toreversed": "^1.1.2",
+ "array.prototype.tosorted": "^1.1.4",
+ "doctrine": "^2.1.0",
+ "es-iterator-helpers": "^1.0.19",
+ "estraverse": "^5.3.0",
+ "jsx-ast-utils": "^2.4.1 || ^3.0.0",
+ "minimatch": "^3.1.2",
+ "object.entries": "^1.1.8",
+ "object.fromentries": "^2.0.8",
+ "object.hasown": "^1.1.4",
+ "object.values": "^1.2.0",
+ "prop-types": "^15.8.1",
+ "resolve": "^2.0.0-next.5",
+ "semver": "^6.3.1",
+ "string.prototype.matchall": "^4.0.11"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
}
},
- "node_modules/@types/d3-delaunay": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
- "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
- "dev": true
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz",
+ "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
+ }
},
- "node_modules/@types/d3-dispatch": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz",
- "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==",
- "dev": true
+ "node_modules/eslint-plugin-react-refresh": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz",
+ "integrity": "sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==",
+ "dev": true,
+ "peerDependencies": {
+ "eslint": ">=7"
+ }
},
- "node_modules/@types/d3-drag": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
- "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
+ "node_modules/eslint-plugin-react/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": {
- "@types/d3-selection": "*"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/@types/d3-dsv": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
- "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
- "dev": true
- },
- "node_modules/@types/d3-ease": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
- "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
- "dev": true
- },
- "node_modules/@types/d3-fetch": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
- "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
+ "node_modules/eslint-plugin-react/node_modules/doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
"dependencies": {
- "@types/d3-dsv": "*"
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/@types/d3-force": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz",
- "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==",
- "dev": true
- },
- "node_modules/@types/d3-format": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
- "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
- "dev": true
- },
- "node_modules/@types/d3-geo": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
- "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
+ "node_modules/eslint-plugin-react/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": {
- "@types/geojson": "*"
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "node_modules/@types/d3-hierarchy": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.6.tgz",
- "integrity": "sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw==",
- "dev": true
- },
- "node_modules/@types/d3-interpolate": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
- "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
+ "node_modules/eslint-plugin-react/node_modules/resolve": {
+ "version": "2.0.0-next.5",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
+ "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
"dev": true,
"dependencies": {
- "@types/d3-color": "*"
+ "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/@types/d3-path": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.2.tgz",
- "integrity": "sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==",
- "dev": true
- },
- "node_modules/@types/d3-polygon": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
- "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
- "dev": true
- },
- "node_modules/@types/d3-quadtree": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
- "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
- "dev": true
- },
- "node_modules/@types/d3-random": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
- "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
- "dev": true
- },
- "node_modules/@types/d3-scale": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
- "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
+ "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": {
- "@types/d3-time": "*"
+ "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/@types/d3-scale-chromatic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz",
- "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==",
- "dev": true
- },
- "node_modules/@types/d3-selection": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz",
- "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==",
- "dev": true
+ "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/@types/d3-shape": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
- "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
+ "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": {
- "@types/d3-path": "*"
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/@types/d3-time": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
- "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==",
- "dev": true
- },
- "node_modules/@types/d3-time-format": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
- "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
- "dev": true
- },
- "node_modules/@types/d3-timer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
- "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
- "dev": true
+ "node_modules/eslint/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/@types/d3-transition": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz",
- "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==",
+ "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": {
- "@types/d3-selection": "*"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/@types/d3-zoom": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
- "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
+ "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": {
- "@types/d3-interpolate": "*",
- "@types/d3-selection": "*"
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
}
},
- "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/geojson": {
- "version": "7946.0.13",
- "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz",
- "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==",
- "dev": true
- },
- "node_modules/@types/js-cookie": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz",
- "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==",
- "dev": true
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "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/@types/long": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
- "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
- },
- "node_modules/@types/node": {
- "version": "18.19.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz",
- "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==",
- "dependencies": {
- "undici-types": "~5.26.4"
+ "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/@types/node-fetch": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz",
- "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==",
+ "node_modules/eslint/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": {
- "@types/node": "*",
- "form-data": "^4.0.0"
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
}
},
- "node_modules/@types/node-hid": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/@types/node-hid/-/node-hid-1.3.4.tgz",
- "integrity": "sha512-0ootpsYetN9vjqkDSwm/cA4fk/9yGM/PO0X8SLPE/BzXlUaBelImMWMymtF9QEoEzxY0pnhcROIJM0CNSUqO8w==",
+ "node_modules/eslint/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": {
- "@types/node": "*"
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@types/offscreencanvas": {
- "version": "2019.3.0",
- "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz",
- "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q=="
- },
- "node_modules/@types/pug": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz",
- "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==",
- "dev": true
- },
- "node_modules/@types/seedrandom": {
- "version": "2.4.34",
- "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.34.tgz",
- "integrity": "sha512-ytDiArvrn/3Xk6/vtylys5tlY6eo7Ane0hvcx++TKo6RxQXuVfW0AF/oeWqAj9dN29SyhtawuXstgmPlwNcv/A=="
- },
- "node_modules/@types/semver": {
- "version": "7.5.6",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
- "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
- "dev": true
- },
- "node_modules/@types/stats.js": {
- "version": "0.17.3",
- "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz",
- "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==",
- "dev": true
+ "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/@types/three": {
- "version": "0.152.1",
- "resolved": "https://registry.npmjs.org/@types/three/-/three-0.152.1.tgz",
- "integrity": "sha512-PMOCQnx9JRmq+2OUGTPoY9h1hTWD2L7/nmuW/SyNq1Vbq3Lwt3MNdl3wYSa4DvLTGv62NmIXD9jYdAOwohwJyw==",
+ "node_modules/eslint/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": {
- "@tweenjs/tween.js": "~18.6.4",
- "@types/stats.js": "*",
- "@types/webxr": "*",
- "fflate": "~0.6.9",
- "lil-gui": "~0.17.0"
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
}
},
- "node_modules/@types/throttle-debounce": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz",
- "integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==",
- "dev": true
- },
- "node_modules/@types/usb": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/@types/usb/-/usb-1.5.4.tgz",
- "integrity": "sha512-NOUza/8yuswu6RoECQyPHEjA34qpDaeONQ72fm+bCnnN2DJjDePAY+NsmV17H88oIlq4JlJ2mD5Kh5d6R2MwTQ==",
+ "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": {
- "@types/node": "*"
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/@types/w3c-web-serial": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/w3c-web-serial/-/w3c-web-serial-1.0.6.tgz",
- "integrity": "sha512-5IlDdQ2C56sCVwc7CUlqT9Axxw+0V/FbWRbErklYIzZ5mKL9s4l7epXHygn+4X7L2nmAPnVvRl55XUVo0760Rg=="
- },
- "node_modules/@types/w3c-web-usb": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/@types/w3c-web-usb/-/w3c-web-usb-1.0.10.tgz",
- "integrity": "sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ=="
- },
- "node_modules/@types/web-bluetooth": {
- "version": "0.0.17",
- "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
- "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==",
- "dev": true
- },
- "node_modules/@types/webxr": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.10.tgz",
- "integrity": "sha512-n3u5sqXQJhf1CS68mw3Wf16FQ4cRPNBBwdYLFzq3UddiADOim1Pn3Y6PBdDilz1vOJF3ybLxJ8ZEDlLIzrOQZg==",
- "dev": true
+ "node_modules/eslint/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-eslint/eslint-plugin": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
+ "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": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/type-utils": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "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": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "url": "https://opencollective.com/eslint"
}
},
- "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==",
+ "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": {
- "yallist": "^4.0.0"
+ "estraverse": "^5.1.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=0.10"
}
},
- "node_modules/@typescript-eslint/eslint-plugin/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==",
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=4.0"
}
},
- "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==",
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/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==",
"dev": true
},
- "node_modules/@typescript-eslint/parser": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
+ "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "debug": "^4.3.4"
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^8.0.1",
+ "human-signals": "^5.0.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^3.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "node_modules/expect": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
+ "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0"
+ "@jest/expect-utils": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "jest-matcher-utils": "^29.7.0",
+ "jest-message-util": "^29.7.0",
+ "jest-util": "^29.7.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/@typescript-eslint/type-utils": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
+ "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=="
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
+ "@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": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "node": ">=8.6.0"
}
},
- "node_modules/@typescript-eslint/types": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "node_modules/fast-json-patch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz",
+ "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ=="
+ },
+ "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=="
+ },
+ "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.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "dependencies": {
+ "reusify": "^1.0.4"
}
},
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "node_modules/fbjs": {
+ "version": "0.8.18",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz",
+ "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==",
+ "dependencies": {
+ "core-js": "^1.0.0",
+ "isomorphic-fetch": "^2.1.1",
+ "loose-envify": "^1.0.0",
+ "object-assign": "^4.1.0",
+ "promise": "^7.1.1",
+ "setimmediate": "^1.0.5",
+ "ua-parser-js": "^0.7.30"
+ }
+ },
+ "node_modules/fbjs/node_modules/core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js."
+ },
+ "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": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "flat-cache": "^3.0.4"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "node": "^10.12.0 || >=12.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==",
+ "node_modules/filelist": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
"dev": true,
"dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
+ "minimatch": "^5.0.1"
}
},
- "node_modules/@typescript-eslint/typescript-estree/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==",
+ "node_modules/filelist/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "brace-expansion": "^2.0.1"
},
"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": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
+ "to-regex-range": "^5.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "node": ">=8"
}
},
- "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==",
+ "node_modules/find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+ },
+ "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": {
- "yallist": "^4.0.0"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@typescript-eslint/utils/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==",
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
},
"engines": {
- "node": ">=10"
+ "node": "^10.12.0 || >=12.0.0"
}
},
- "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==",
+ "node_modules/flatted": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
+ "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
"dev": true
},
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
- "dev": true,
+ "node_modules/focus-lock": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-1.3.5.tgz",
+ "integrity": "sha512-QFaHbhv9WPUeLYBDe/PAuLKJ4Dd9OPvKs9xZBr3yLXnUrDNaVXKu2baDBXe3naPY30hgHYSsf2JW4jzas2mDEQ==",
"dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "eslint-visitor-keys": "^3.3.0"
+ "tslib": "^2.0.3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": ">=10"
}
},
- "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/@vitest/expect": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.0.4.tgz",
- "integrity": "sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==",
+ "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": {
- "@vitest/spy": "1.0.4",
- "@vitest/utils": "1.0.4",
- "chai": "^4.3.10"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "is-callable": "^1.1.3"
}
},
- "node_modules/@vitest/runner": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.0.4.tgz",
- "integrity": "sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==",
- "dev": true,
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": {
- "@vitest/utils": "1.0.4",
- "p-limit": "^5.0.0",
- "pathe": "^1.1.1"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
},
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/@vitest/runner/node_modules/p-limit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz",
- "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==",
- "dev": true,
+ "node_modules/framer-motion": {
+ "version": "10.18.0",
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.18.0.tgz",
+ "integrity": "sha512-oGlDh1Q1XqYPksuTD/usb0I70hq95OUzmL9+6Zd+Hs4XV0oaISBa/UUMSjYiq6m8EUF32132mOJ8xVZS+I0S6w==",
"dependencies": {
- "yocto-queue": "^1.0.0"
+ "tslib": "^2.4.0"
},
- "engines": {
- "node": ">=18"
+ "optionalDependencies": {
+ "@emotion/is-prop-valid": "^0.8.2"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "react": "^18.0.0",
+ "react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "react": {
+ "optional": true
+ },
+ "react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@vitest/runner/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==",
- "dev": true,
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node_modules/framer-motion/node_modules/@emotion/is-prop-valid": {
+ "version": "0.8.8",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz",
+ "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==",
+ "optional": true,
+ "dependencies": {
+ "@emotion/memoize": "0.7.4"
}
},
- "node_modules/@vitest/snapshot": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.0.4.tgz",
- "integrity": "sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==",
+ "node_modules/framer-motion/node_modules/@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
+ "optional": true
+ },
+ "node_modules/framesync": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz",
+ "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==",
+ "dependencies": {
+ "tslib": "2.4.0"
+ }
+ },
+ "node_modules/framesync/node_modules/tslib": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
+ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
+ },
+ "node_modules/fs-extra": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+ "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
"dev": true,
"dependencies": {
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "pretty-format": "^29.7.0"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
},
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/@vitest/snapshot/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "node_modules/fs-extra/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": ">= 10.0.0"
}
},
- "node_modules/@vitest/snapshot/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "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==",
"dev": true,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/@vitest/snapshot/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
- },
- "node_modules/@vitest/spy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.0.4.tgz",
- "integrity": "sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==",
- "dev": true,
- "dependencies": {
- "tinyspy": "^2.2.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==",
"funding": {
- "url": "https://opencollective.com/vitest"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/@vitest/utils": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.0.4.tgz",
- "integrity": "sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==",
+ "node_modules/function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
"dev": true,
"dependencies": {
- "diff-sequences": "^29.6.3",
- "loupe": "^2.3.7",
- "pretty-format": "^29.7.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://opencollective.com/vitest"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/@vitest/utils/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true,
- "engines": {
- "node": ">=10"
- },
"funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/@vitest/utils/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "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,
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/@vitest/utils/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
- },
- "node_modules/@webgpu/types": {
- "version": "0.1.38",
- "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.38.tgz",
- "integrity": "sha512-7LrhVKz2PRh+DD7+S+PVaFd5HxaWQvoMqBbsV9fNJO1pjUs1P8bM2vQVNfk+3URTqbuTI7gkXi0rfsN0IadoBA=="
- },
- "node_modules/@windicss/config": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@windicss/config/-/config-1.9.3.tgz",
- "integrity": "sha512-u8GUjsfC9r5X1AGYhzb1lX3zZj8wqk6SH1DYex8XUGmZ1M2UpvnUPOFi63XFViduspQ6l2xTX84QtG+lUzhEoQ==",
- "dev": true,
- "dependencies": {
- "debug": "^4.3.4",
- "jiti": "^1.18.2",
- "windicss": "^3.5.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
}
},
- "node_modules/@windicss/config/node_modules/windicss": {
- "version": "3.5.6",
- "resolved": "https://registry.npmjs.org/windicss/-/windicss-3.5.6.tgz",
- "integrity": "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==",
+ "node_modules/get-func-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
+ "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
"dev": true,
- "bin": {
- "windicss": "cli/index.js"
- },
"engines": {
- "node": ">= 12"
+ "node": "*"
}
},
- "node_modules/@windicss/plugin-utils": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@windicss/plugin-utils/-/plugin-utils-1.9.3.tgz",
- "integrity": "sha512-3VG5HEGeuIfG/9iTwLyzWWm/aGKNTbtSVkpkAabdRuDP/2lEmf6Hpo4uo5drwE+2O9gXfc6nSYgAwBjotx5CfQ==",
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dev": true,
"dependencies": {
- "@antfu/utils": "^0.7.2",
- "@windicss/config": "1.9.3",
- "debug": "^4.3.4",
- "fast-glob": "^3.2.12",
- "magic-string": "^0.30.0",
- "micromatch": "^4.0.5",
- "windicss": "^3.5.6"
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/@windicss/plugin-utils/node_modules/@antfu/utils": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
- "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node_modules/get-nonce": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
+ "engines": {
+ "node": ">=6"
}
},
- "node_modules/@windicss/plugin-utils/node_modules/windicss": {
- "version": "3.5.6",
- "resolved": "https://registry.npmjs.org/windicss/-/windicss-3.5.6.tgz",
- "integrity": "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==",
+ "node_modules/get-own-enumerable-property-symbols": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
+ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
+ "dev": true
+ },
+ "node_modules/get-stream": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
+ "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"dev": true,
- "bin": {
- "windicss": "cli/index.js"
- },
"engines": {
- "node": ">= 12"
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/acorn": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
- "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
- "bin": {
- "acorn": "bin/acorn"
+ "node_modules/get-symbol-description": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
+ "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4"
},
"engines": {
- "node": ">=0.4.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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/glamor": {
+ "version": "2.20.40",
+ "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz",
+ "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==",
+ "dependencies": {
+ "fbjs": "^0.8.12",
+ "inline-style-prefixer": "^3.0.6",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.5.10",
+ "through": "^2.3.8"
}
},
- "node_modules/acorn-walk": {
- "version": "8.3.1",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz",
- "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==",
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
"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": ">=0.4.0"
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/agent-base": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
- "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
+ "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": {
- "debug": "^4.3.4"
+ "is-glob": "^4.0.1"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 6"
}
},
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "node_modules/glob/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": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "engines": {
- "node": ">=8"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "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==",
+ "node_modules/glob/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": {
- "color-convert": "^1.9.0"
+ "brace-expansion": "^1.1.7"
},
+ "engines": {
+ "node": "*"
+ }
+ },
+ "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==",
"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==",
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
"dev": true,
"dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
},
"engines": {
- "node": ">= 8"
- }
- },
- "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": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/aria-query": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz",
- "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==",
+ "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": {
- "deep-equal": "^2.0.5"
+ "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/array-buffer-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ },
+ "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": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
+ "get-intrinsic": "^1.1.3"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true,
- "engines": {
- "node": "*"
- }
+ "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==",
+ "dev": true
},
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ "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/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==",
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true,
- "engines": {
- "node": ">= 0.4"
- },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/axobject-query": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz",
- "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==",
- "dependencies": {
- "dequal": "^2.0.3"
+ "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==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.7",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz",
- "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==",
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.4.4",
- "semver": "^6.3.1"
+ "es-define-property": "^1.0.0"
},
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.8.7",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz",
- "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==",
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"dev": true,
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.4",
- "core-js-compat": "^3.33.1"
+ "engines": {
+ "node": ">= 0.4"
},
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz",
- "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==",
+ "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,
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.4"
+ "engines": {
+ "node": ">= 0.4"
},
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/balanced-match": {
+ "node_modules/has-tostringtag": {
"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/bidi-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
- "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
"dependencies": {
- "require-from-string": "^2.0.2"
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
- "dev": true,
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
}
},
- "node_modules/bowser": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz",
- "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="
- },
- "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,
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "react-is": "^16.7.0"
}
},
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "node_modules/html-encoding-sniffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "whatwg-encoding": "^3.1.1"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/browser-lang": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/browser-lang/-/browser-lang-0.2.1.tgz",
- "integrity": "sha512-+xmtsTxVZKWrKHoNUQp4Tm7BEXlnMwOMAHZAh1SSot1+n04qHLFIH0K5anX52k5BkcauggbaNlWT8f3bVwDh/Q=="
- },
- "node_modules/browserslist": {
- "version": "4.22.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz",
- "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": 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.30001565",
- "electron-to-chromium": "^1.4.601",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
- },
- "bin": {
- "browserslist": "cli.js"
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
},
"engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ "node": ">= 14"
}
},
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
+ "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
"dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
"engines": {
- "node": "*"
+ "node": ">= 14"
}
},
- "node_modules/cac": {
- "version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
+ "node_modules/human-signals": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
+ "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=16.17.0"
}
},
- "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,
+ "node_modules/hyphenate-style-name": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz",
+ "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw=="
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dependencies": {
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.1",
- "set-function-length": "^1.1.1"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "node_modules/idb": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
+ "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==",
+ "dev": true
+ },
+ "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": ">=6"
+ "node": ">= 4"
}
},
- "node_modules/caniuse-lite": {
- "version": "1.0.30001570",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
- "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==",
+ "node_modules/immutable": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
+ "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
"dev": 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"
- }
- ]
+ "optional": true,
+ "peer": true
},
- "node_modules/chai": {
- "version": "4.3.10",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz",
- "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==",
- "dev": 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==",
"dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.3",
- "deep-eql": "^4.1.3",
- "get-func-name": "^2.0.2",
- "loupe": "^2.3.6",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.8"
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "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==",
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
"engines": {
- "node": ">=4"
+ "node": ">=0.8.19"
}
},
- "node_modules/chart.js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.1.tgz",
- "integrity": "sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==",
- "dependencies": {
- "@kurkle/color": "^0.3.0"
- },
+ "node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
"engines": {
- "pnpm": ">=7"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/check-error": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
- "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+ "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==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dev": true,
"dependencies": {
- "get-func-name": "^2.0.2"
- },
- "engines": {
- "node": "*"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/inline-style-prefixer": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz",
+ "integrity": "sha512-ne8XIyyqkRaNJ1JfL1NYzNdCNxq+MCBQhC8NgOQlzNm2vv3XxlP0VSLQUbSRCF6KPEoveCVEpayHoHzcMyZsMQ==",
"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"
+ "bowser": "^1.7.3",
+ "css-in-js-utils": "^2.0.0"
}
},
- "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==",
+ "node_modules/inline-style-prefixer/node_modules/bowser": {
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz",
+ "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ=="
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
+ "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
"dev": true,
"dependencies": {
- "is-glob": "^4.0.1"
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.0",
+ "side-channel": "^1.0.4"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 0.4"
}
},
- "node_modules/cli-color": {
+ "node_modules/internmap": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz",
- "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==",
- "dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.61",
- "es6-iterator": "^2.0.3",
- "memoizee": "^0.4.15",
- "timers-ext": "^0.1.7"
- },
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
"engines": {
- "node": ">=0.10"
+ "node": ">=12"
}
},
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "node_modules/intl-messageformat": {
+ "version": "10.5.14",
+ "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz",
+ "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==",
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/fast-memoize": "2.2.0",
+ "@formatjs/icu-messageformat-parser": "2.7.8",
+ "tslib": "^2.4.0"
}
},
- "node_modules/code-red": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
- "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
+ "node_modules/invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15",
- "@types/estree": "^1.0.1",
- "acorn": "^8.10.0",
- "estree-walker": "^3.0.3",
- "periscopic": "^3.1.0"
+ "loose-envify": "^1.0.0"
}
},
- "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==",
+ "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": {
- "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/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dependencies": {
- "delayed-stream": "~1.0.0"
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "node_modules/is-array-buffer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
+ "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1"
+ },
"engines": {
- "node": ">= 10"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
},
- "node_modules/convert-source-map": {
+ "node_modules/is-async-function": {
"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==",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
+ "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
"dev": true,
- "peer": true
- },
- "node_modules/core-js": {
- "version": "3.29.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.29.1.tgz",
- "integrity": "sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==",
- "hasInstallScript": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/core-js-compat": {
- "version": "3.34.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz",
- "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==",
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
"dependencies": {
- "browserslist": "^4.22.2"
+ "has-bigints": "^1.0.1"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
+ "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==",
"dev": true,
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "binary-extensions": "^2.0.0"
},
"engines": {
- "node": ">= 8"
+ "node": ">=8"
}
},
- "node_modules/css-tree": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
- "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
"dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/css.escape": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz",
- "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==",
- "dev": true
+ "node_modules/is-builtin-module": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz",
+ "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==",
+ "dev": true,
+ "dependencies": {
+ "builtin-modules": "^3.3.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "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==",
+ "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.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
+ "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
"dev": true,
- "bin": {
- "cssesc": "bin/cssesc"
+ "dependencies": {
+ "is-typed-array": "^1.1.13"
},
"engines": {
- "node": ">=4"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/cssstyle": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz",
- "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==",
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
"dependencies": {
- "rrweb-cssom": "^0.6.0"
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": ">=18"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
- "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
- "dependencies": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
- }
- },
- "node_modules/d3": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz",
- "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==",
- "dependencies": {
- "d3-array": "3",
- "d3-axis": "3",
- "d3-brush": "3",
- "d3-chord": "3",
- "d3-color": "3",
- "d3-contour": "4",
- "d3-delaunay": "6",
- "d3-dispatch": "3",
- "d3-drag": "3",
- "d3-dsv": "3",
- "d3-ease": "3",
- "d3-fetch": "3",
- "d3-force": "3",
- "d3-format": "3",
- "d3-geo": "3",
- "d3-hierarchy": "3",
- "d3-interpolate": "3",
- "d3-path": "3",
- "d3-polygon": "3",
- "d3-quadtree": "3",
- "d3-random": "3",
- "d3-scale": "4",
- "d3-scale-chromatic": "3",
- "d3-selection": "3",
- "d3-shape": "3",
- "d3-time": "3",
- "d3-time-format": "4",
- "d3-timer": "3",
- "d3-transition": "3",
- "d3-zoom": "3"
- },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=0.10.0"
}
},
- "node_modules/d3-array": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
- "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "node_modules/is-finalizationregistry": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
+ "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
+ "dev": true,
"dependencies": {
- "internmap": "1 - 2"
+ "call-bind": "^1.0.2"
},
- "engines": {
- "node": ">=12"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-axis": {
+ "node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
- "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"engines": {
- "node": ">=12"
+ "node": ">=8"
}
},
- "node_modules/d3-brush": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
- "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
+ "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": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "3",
- "d3-transition": "3"
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-chord": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
- "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
"dependencies": {
- "d3-path": "1 - 3"
+ "is-extglob": "^2.1.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=0.10.0"
}
},
- "node_modules/d3-color": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
- "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-contour": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
- "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
- "dependencies": {
- "d3-array": "^3.2.0"
+ "node_modules/is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
+ "dev": true
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
},
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=0.12.0"
}
},
- "node_modules/d3-delaunay": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
- "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
"dependencies": {
- "delaunator": "5"
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-dispatch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
- "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
+ "node_modules/is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
+ "dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=0.10.0"
}
},
- "node_modules/d3-drag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
- "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-selection": "3"
- },
+ "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": ">=12"
+ "node": ">=8"
}
},
- "node_modules/d3-dsv": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
- "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
"dependencies": {
- "commander": "7",
- "iconv-lite": "0.6",
- "rw": "1"
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
},
- "bin": {
- "csv2json": "bin/dsv2json.js",
- "csv2tsv": "bin/dsv2dsv.js",
- "dsv2dsv": "bin/dsv2dsv.js",
- "dsv2json": "bin/dsv2json.js",
- "json2csv": "bin/json2dsv.js",
- "json2dsv": "bin/json2dsv.js",
- "json2tsv": "bin/json2dsv.js",
- "tsv2csv": "bin/dsv2dsv.js",
- "tsv2json": "bin/dsv2json.js"
+ "engines": {
+ "node": ">= 0.4"
},
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-regexp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+ "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
+ "dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=0.10.0"
}
},
- "node_modules/d3-ease": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
- "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-fetch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
- "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "dev": true,
"dependencies": {
- "d3-dsv": "1 - 3"
+ "call-bind": "^1.0.7"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-force": {
+ "node_modules/is-stream": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
- "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
"dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-quadtree": "1 - 3",
- "d3-timer": "1 - 3"
+ "has-tostringtag": "^1.0.0"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-format": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
- "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-geo": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
- "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
+ "node_modules/is-typed-array": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
+ "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
+ "dev": true,
"dependencies": {
- "d3-array": "2.5.0 - 3"
+ "which-typed-array": "^1.1.14"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-hierarchy": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
- "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-interpolate": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
- "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
+ "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "dev": true,
"dependencies": {
- "d3-color": "1 - 3"
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4"
},
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/d3-path": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
- "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
- "engines": {
- "node": ">=12"
- }
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
},
- "node_modules/d3-polygon": {
+ "node_modules/isobject": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
- "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
"engines": {
- "node": ">=12"
+ "node": ">=0.10.0"
}
},
- "node_modules/d3-quadtree": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
- "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
- "engines": {
- "node": ">=12"
+ "node_modules/isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==",
+ "dependencies": {
+ "node-fetch": "^1.0.1",
+ "whatwg-fetch": ">=0.10.0"
}
},
- "node_modules/d3-random": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
- "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
+ "node_modules/isomorphic-fetch/node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"engines": {
- "node": ">=12"
+ "node": ">=0.10.0"
}
},
- "node_modules/d3-scale": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
- "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "node_modules/isomorphic-fetch/node_modules/node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"dependencies": {
- "d3-array": "2.10.0 - 3",
- "d3-format": "1 - 3",
- "d3-interpolate": "1.2.0 - 3",
- "d3-time": "2.1.1 - 3",
- "d3-time-format": "2 - 4"
- },
- "engines": {
- "node": ">=12"
+ "encoding": "^0.1.11",
+ "is-stream": "^1.0.1"
}
},
- "node_modules/d3-scale-chromatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
- "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
+ "node_modules/iterator.prototype": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
+ "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
+ "dev": true,
"dependencies": {
- "d3-color": "1 - 3",
- "d3-interpolate": "1 - 3"
- },
- "engines": {
- "node": ">=12"
+ "define-properties": "^1.2.1",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "reflect.getprototypeof": "^1.0.4",
+ "set-function-name": "^2.0.1"
}
},
- "node_modules/d3-selection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
- "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
+ "node_modules/jake": {
+ "version": "10.9.1",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz",
+ "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==",
+ "dev": true,
+ "dependencies": {
+ "async": "^3.2.3",
+ "chalk": "^4.0.2",
+ "filelist": "^1.0.4",
+ "minimatch": "^3.1.2"
+ },
+ "bin": {
+ "jake": "bin/cli.js"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=10"
}
},
- "node_modules/d3-shape": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
- "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "node_modules/jake/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": {
- "d3-path": "^3.1.0"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=12"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/d3-time": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
- "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "node_modules/jake/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": {
- "d3-array": "2 - 3"
- },
- "engines": {
- "node": ">=12"
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
}
},
- "node_modules/d3-time-format": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
- "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "node_modules/jake/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": {
- "d3-time": "1 - 3"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=12"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/d3-timer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
- "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
+ "node_modules/jake/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": ">=12"
+ "node": ">=7.0.0"
}
},
- "node_modules/d3-transition": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
- "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
- "dependencies": {
- "d3-color": "1 - 3",
- "d3-dispatch": "1 - 3",
- "d3-ease": "1 - 3",
- "d3-interpolate": "1 - 3",
- "d3-timer": "1 - 3"
- },
+ "node_modules/jake/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/jake/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": ">=12"
- },
- "peerDependencies": {
- "d3-selection": "2 - 3"
+ "node": ">=8"
}
},
- "node_modules/d3-zoom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
- "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
+ "node_modules/jake/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": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "2 - 3",
- "d3-transition": "2 - 3"
+ "brace-expansion": "^1.1.7"
},
"engines": {
- "node": ">=12"
+ "node": "*"
}
},
- "node_modules/dapjs": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/dapjs/-/dapjs-2.3.0.tgz",
- "integrity": "sha512-quanzq7+2xnqgGqqYgARz9o3iBcZ3Ir5r5mTA7WPsjrp9ilEqqCToSFGTL+8HuGP35dUIL7O+yMBloYHhHgZDA==",
+ "node_modules/jake/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": {
- "@types/node-hid": "^1.2.0",
- "@types/usb": "^1.5.1",
- "@types/w3c-web-usb": "^1.0.4"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=8.14.0"
+ "node": ">=8"
}
},
- "node_modules/data-urls": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
- "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
+ "node_modules/jest-diff": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
+ "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
"dev": true,
"dependencies": {
- "whatwg-mimetype": "^4.0.0",
- "whatwg-url": "^14.0.0"
+ "chalk": "^4.0.0",
+ "diff-sequences": "^29.6.3",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
},
"engines": {
- "node": ">=18"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "node_modules/jest-diff/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": {
- "ms": "2.1.2"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=6.0"
+ "node": ">=8"
},
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
- "dev": true
- },
- "node_modules/deep-eql": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
- "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
+ "node_modules/jest-diff/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": {
- "type-detect": "^4.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/deep-equal": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz",
- "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+ "node_modules/jest-diff/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": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.5",
- "es-get-iterator": "^1.1.3",
- "get-intrinsic": "^1.2.2",
- "is-arguments": "^1.1.1",
- "is-array-buffer": "^3.0.2",
- "is-date-object": "^1.0.5",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "isarray": "^2.0.5",
- "object-is": "^1.1.5",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.1",
- "side-channel": "^1.0.4",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.13"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=7.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==",
+ "node_modules/jest-diff/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/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "node_modules/jest-diff/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": ">=0.10.0"
+ "node": ">=8"
}
},
- "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==",
+ "node_modules/jest-diff/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dev": true,
"dependencies": {
- "get-intrinsic": "^1.2.1",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.0"
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "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==",
+ "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
- "dependencies": {
- "define-data-property": "^1.0.1",
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
"engines": {
- "node": ">= 0.4"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/defu": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/defu/-/defu-5.0.1.tgz",
- "integrity": "sha512-EPS1carKg+dkEVy3qNTqIdp2qV7mUP08nIsupfwQpz++slCVRw7qbQyWvSTig+kFPwz2XXp5/kIIkH+CwrJKkQ==",
+ "node_modules/jest-diff/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"dev": true
},
- "node_modules/delaunator": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
- "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
- "dependencies": {
- "robust-predicates": "^3.0.0"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/dequal": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/detect-indent": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
- "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
+ "node_modules/jest-diff/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/diff-sequences": {
+ "node_modules/jest-get-type": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
+ "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
"dev": true,
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "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==",
+ "node_modules/jest-matcher-utils": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
+ "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
"dev": true,
"dependencies": {
- "path-type": "^4.0.0"
+ "chalk": "^4.0.0",
+ "jest-diff": "^29.7.0",
+ "jest-get-type": "^29.6.3",
+ "pretty-format": "^29.7.0"
},
"engines": {
- "node": ">=8"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "node_modules/jest-matcher-utils/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": {
- "esutils": "^2.0.2"
+ "color-convert": "^2.0.1"
},
"engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-accessibility-api": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
- "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
- "dev": true
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.613",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.613.tgz",
- "integrity": "sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==",
- "dev": true
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
- },
- "node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
+ "node": ">=8"
},
"funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/es-get-iterator": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
- "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+ "node_modules/jest-matcher-utils/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": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "has-symbols": "^1.0.3",
- "is-arguments": "^1.1.1",
- "is-map": "^2.0.2",
- "is-set": "^2.0.2",
- "is-string": "^1.0.7",
- "isarray": "^2.0.5",
- "stop-iteration-iterator": "^1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/es5-ext": {
- "version": "0.10.62",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
- "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
- "hasInstallScript": true,
+ "node_modules/jest-matcher-utils/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": {
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.3",
- "next-tick": "^1.1.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
- "dependencies": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
+ "node": ">=7.0.0"
}
},
- "node_modules/es6-promise": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
- "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==",
+ "node_modules/jest-matcher-utils/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/es6-symbol": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
- "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
- "dependencies": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
+ "node_modules/jest-matcher-utils/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/es6-weak-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
- "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "node_modules/jest-matcher-utils/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
+ "dev": true,
"dependencies": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
- }
- },
- "node_modules/esbuild": {
- "version": "0.19.9",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.9.tgz",
- "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==",
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
},
"engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.19.9",
- "@esbuild/android-arm64": "0.19.9",
- "@esbuild/android-x64": "0.19.9",
- "@esbuild/darwin-arm64": "0.19.9",
- "@esbuild/darwin-x64": "0.19.9",
- "@esbuild/freebsd-arm64": "0.19.9",
- "@esbuild/freebsd-x64": "0.19.9",
- "@esbuild/linux-arm": "0.19.9",
- "@esbuild/linux-arm64": "0.19.9",
- "@esbuild/linux-ia32": "0.19.9",
- "@esbuild/linux-loong64": "0.19.9",
- "@esbuild/linux-mips64el": "0.19.9",
- "@esbuild/linux-ppc64": "0.19.9",
- "@esbuild/linux-riscv64": "0.19.9",
- "@esbuild/linux-s390x": "0.19.9",
- "@esbuild/linux-x64": "0.19.9",
- "@esbuild/netbsd-x64": "0.19.9",
- "@esbuild/openbsd-x64": "0.19.9",
- "@esbuild/sunos-x64": "0.19.9",
- "@esbuild/win32-arm64": "0.19.9",
- "@esbuild/win32-ia32": "0.19.9",
- "@esbuild/win32-x64": "0.19.9"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "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==",
+ "node_modules/jest-matcher-utils/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "dev": true
+ },
+ "node_modules/jest-matcher-utils/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": ">=0.8.0"
+ "node": ">=8"
}
},
- "node_modules/eslint": {
- "version": "8.55.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz",
- "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==",
+ "node_modules/jest-message-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
+ "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
"dev": true,
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.55.0",
- "@humanwhocodes/config-array": "^0.11.13",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
+ "@babel/code-frame": "^7.12.13",
+ "@jest/types": "^29.6.3",
+ "@types/stack-utils": "^2.0.0",
"chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.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"
+ "graceful-fs": "^4.2.9",
+ "micromatch": "^4.0.4",
+ "pretty-format": "^29.7.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/eslint-compat-utils": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz",
- "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==",
+ "node_modules/jest-message-util/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": ">=12"
+ "node": ">=8"
},
- "peerDependencies": {
- "eslint": ">=6.0.0"
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/eslint-plugin-svelte": {
- "version": "2.35.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.35.1.tgz",
- "integrity": "sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==",
+ "node_modules/jest-message-util/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": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@jridgewell/sourcemap-codec": "^1.4.14",
- "debug": "^4.3.1",
- "eslint-compat-utils": "^0.1.2",
- "esutils": "^2.0.3",
- "known-css-properties": "^0.29.0",
- "postcss": "^8.4.5",
- "postcss-load-config": "^3.1.4",
- "postcss-safe-parser": "^6.0.0",
- "postcss-selector-parser": "^6.0.11",
- "semver": "^7.5.3",
- "svelte-eslint-parser": ">=0.33.0 <1.0.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
"engines": {
- "node": "^14.17.0 || >=16.0.0"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/ota-meshi"
- },
- "peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0-0",
- "svelte": "^3.37.0 || ^4.0.0"
- },
- "peerDependenciesMeta": {
- "svelte": {
- "optional": true
- }
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/eslint-plugin-svelte/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==",
+ "node_modules/jest-message-util/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": {
- "yallist": "^4.0.0"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">=10"
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/jest-message-util/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/jest-message-util/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-plugin-svelte/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==",
+ "node_modules/jest-message-util/node_modules/pretty-format": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
+ "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dev": true,
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "@jest/schemas": "^29.6.3",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^18.0.0"
},
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "dev": true,
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/eslint-plugin-svelte/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "node_modules/jest-message-util/node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"dev": true
},
- "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==",
+ "node_modules/jest-message-util/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": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=8"
}
},
- "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==",
+ "node_modules/jest-util": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
+ "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
"dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "@types/node": "*",
+ "chalk": "^4.0.0",
+ "ci-info": "^3.2.0",
+ "graceful-fs": "^4.2.9",
+ "picomatch": "^2.2.3"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
- "node_modules/eslint/node_modules/ansi-styles": {
+ "node_modules/jest-util/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==",
@@ -6004,7 +10533,7 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/eslint/node_modules/chalk": {
+ "node_modules/jest-util/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
@@ -6020,7 +10549,7 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/eslint/node_modules/color-convert": {
+ "node_modules/jest-util/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==",
@@ -6032,601 +10561,732 @@
"node": ">=7.0.0"
}
},
- "node_modules/eslint/node_modules/color-name": {
+ "node_modules/jest-util/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": {
+ "node_modules/jest-util/node_modules/has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"engines": {
- "node": ">=10"
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-util/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"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/eslint/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==",
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/js-yaml/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/jsdom": {
+ "version": "24.1.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.0.tgz",
+ "integrity": "sha512-6gpM7pRXCwIOKxX47cgOyvyQDN/Eh0f1MeKySBV2xGdKtqJBLj8P25eY3EVCWo2mglDDzozR2r2MW4T+JiNUZA==",
+ "dev": true,
+ "dependencies": {
+ "cssstyle": "^4.0.1",
+ "data-urls": "^5.0.0",
+ "decimal.js": "^10.4.3",
+ "form-data": "^4.0.0",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.4",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.10",
+ "parse5": "^7.1.2",
+ "rrweb-cssom": "^0.7.0",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.1.4",
+ "w3c-xmlserializer": "^5.0.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^3.1.1",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0",
+ "ws": "^8.17.0",
+ "xml-name-validator": "^5.0.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=18"
},
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "peerDependencies": {
+ "canvas": "^2.11.2"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
}
},
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "node_modules/jsdom/node_modules/rrweb-cssom": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz",
+ "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==",
+ "dev": true
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "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": "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=="
+ },
+ "node_modules/json-schema": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json-stringify-pretty-compact": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz",
+ "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA=="
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
"engines": {
- "node": ">=4.0"
+ "node": ">=6"
}
},
- "node_modules/eslint/node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+ "dev": true
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": {
- "type-fest": "^0.20.2"
+ "universalify": "^2.0.0"
},
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonfile/node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 10.0.0"
}
},
- "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==",
+ "node_modules/jsonpointer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
+ "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
- "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==",
+ "node_modules/jsx-ast-utils": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
+ "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
+ "dev": true,
+ "dependencies": {
+ "array-includes": "^3.1.6",
+ "array.prototype.flat": "^1.3.1",
+ "object.assign": "^4.1.4",
+ "object.values": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "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/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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": {
- "has-flag": "^4.0.0"
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
},
"engines": {
- "node": ">=8"
+ "node": ">= 0.8.0"
}
},
- "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==",
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
+ "node_modules/local-pkg": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
+ "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
"dev": true,
"dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "mlly": "^1.4.2",
+ "pkg-types": "^1.0.3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=14"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/antfu"
}
},
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "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": {
- "estraverse": "^5.1.0"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": ">=0.10"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
},
- "node_modules/esrecurse": {
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "dev": true
+ },
+ "node_modules/lodash.camelcase": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "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/lodash.mergewith": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ=="
+ },
+ "node_modules/lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "dev": true
+ },
+ "node_modules/lodash.upperfirst": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz",
+ "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg=="
+ },
+ "node_modules/log-symbols": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
+ "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
"dev": true,
"dependencies": {
- "estraverse": "^5.2.0"
+ "chalk": "^2.4.2"
},
"engines": {
- "node": ">=4.0"
+ "node": ">=8"
}
},
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
+ "node_modules/long": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
+ "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
}
},
- "node_modules/estree-walker": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
- "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "node_modules/loupe": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
+ "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
+ "dev": true,
"dependencies": {
- "@types/estree": "^1.0.0"
+ "get-func-name": "^2.0.1"
}
},
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "dependencies": {
+ "tslib": "^2.0.3"
}
},
- "node_modules/event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "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": {
- "d": "1",
- "es5-ext": "~0.10.14"
+ "yallist": "^3.0.2"
}
},
- "node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "node_modules/lz-string": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
"dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": ">=16.17"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "bin": {
+ "lz-string": "bin/bin.js"
}
},
- "node_modules/ext": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
- "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "node_modules/magic-string": {
+ "version": "0.30.10",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
+ "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
+ "dev": true,
"dependencies": {
- "type": "^2.7.2"
+ "@jridgewell/sourcemap-codec": "^1.4.15"
}
},
- "node_modules/ext/node_modules/type": {
- "version": "2.7.2",
- "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
- "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
- },
- "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==",
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true
},
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "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,
- "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": ">= 8"
}
},
- "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==",
+ "node_modules/micromatch": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dev": true,
"dependencies": {
- "is-glob": "^4.0.1"
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
},
"engines": {
- "node": ">= 6"
+ "node": ">=8.6"
}
},
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
}
},
- "node_modules/fflate": {
- "version": "0.6.10",
- "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz",
- "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==",
- "dev": true
- },
- "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,
+ "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==",
"dependencies": {
- "flat-cache": "^3.0.4"
+ "mime-db": "1.52.0"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">= 0.6"
}
},
- "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==",
+ "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,
- "dependencies": {
- "to-regex-range": "^5.0.1"
+ "engines": {
+ "node": ">=12"
},
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
- "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==",
+ "node_modules/minimatch": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
+ "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dev": true,
"dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
+ "brace-expansion": "^2.0.1"
},
"engines": {
- "node": ">=10"
+ "node": ">=16 || 14 >=14.17"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
- "dev": true,
+ "node_modules/ml4f": {
+ "version": "1.10.1",
+ "resolved": "git+ssh://git@github.com/microsoft/ml4f.git#ec901a2378827139c4e422ecc196fc4759d397ca",
+ "license": "MIT",
"dependencies": {
- "flatted": "^3.2.9",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
+ "@tensorflow/tfjs": "^4.10.0",
+ "@tensorflow/tfjs-vis": "^1.5.1",
+ "commander": "^6.1.0"
},
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "bin": {
+ "ml4f": "ml4f"
}
},
- "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/focus-trap": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz",
- "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==",
- "dev": true,
- "dependencies": {
- "tabbable": "^6.2.0"
+ "node_modules/ml4f/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "engines": {
+ "node": ">= 6"
}
},
- "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==",
+ "node_modules/mlly": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz",
+ "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==",
"dev": true,
"dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/form-data": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
+ "acorn": "^8.10.0",
+ "pathe": "^1.1.1",
+ "pkg-types": "^1.0.3",
+ "ufo": "^1.3.0"
}
},
- "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/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/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
"engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
- "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/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/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
"dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
}
},
- "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,
- "peer": true,
+ "node_modules/node-fetch": {
+ "version": "2.6.13",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz",
+ "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
"engines": {
- "node": ">=6.9.0"
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
}
},
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
+ "node_modules/node-fetch/node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
- "node_modules/get-func-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
- "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
+ "node_modules/node-fetch/node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
- "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,
+ "node_modules/node-fetch/node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"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"
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
}
},
- "node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "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==",
+ "dev": true
+ },
+ "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==",
"dev": true,
"engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "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": {
- "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"
+ "path-key": "^4.0.0"
},
"engines": {
- "node": "*"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "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==",
+ "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,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
"engines": {
- "node": ">=10.13.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "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,
+ "node_modules/nrf-intel-hex": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/nrf-intel-hex/-/nrf-intel-hex-1.4.0.tgz",
+ "integrity": "sha512-q3+GGRIpe0VvCjUP1zaqW5rk6IpCZzhD0lu7Sguo1bgWwFcA9kZRjsaKUb0jBQMnefyOl5o0BBGAxvqMqYx8Sg==",
"engines": {
- "node": ">=4"
+ "node": ">=6.0.0"
}
},
- "node_modules/globalyzer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
- "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q=="
+ "node_modules/nwsapi": {
+ "version": "2.2.10",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz",
+ "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==",
+ "dev": true
},
- "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"
- },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
- "node_modules/globrex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
- "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "node_modules/object-inspect": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
"dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3"
+ "engines": {
+ "node": ">= 0.4"
},
"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==",
- "dev": true
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "node_modules/object-is": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+ "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
+ "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": ">=4"
+ "node": ">= 0.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==",
+ "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": {
- "get-intrinsic": "^1.2.2"
+ "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/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==",
+ "node_modules/object.entries": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
+ "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
"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==",
+ "node_modules/object.fromentries": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
+ "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
+ },
"engines": {
"node": ">= 0.4"
},
@@ -6634,13 +11294,15 @@
"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==",
+ "node_modules/object.hasown": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz",
+ "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==",
"dev": true,
"dependencies": {
- "has-symbols": "^1.0.2"
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -6649,456 +11311,709 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
+ "node_modules/object.values": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
+ "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.2"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/html-encoding-sniffer": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
- "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
+ "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": {
- "whatwg-encoding": "^3.1.1"
+ "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": ">=18"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/http-proxy-agent": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
- "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
"dependencies": {
- "agent-base": "^7.1.0",
- "debug": "^4.3.4"
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 0.8.0"
}
},
- "node_modules/https-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
+ "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": {
- "agent-base": "^7.0.2",
- "debug": "4"
+ "yocto-queue": "^0.1.0"
},
"engines": {
- "node": ">= 14"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/human-signals": {
+ "node_modules/p-locate": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "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": ">=16.17.0"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "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==",
"dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "dev": true,
+ "dependencies": {
+ "entities": "^4.4.0"
},
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "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==",
+ "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/ignore": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
- "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+ "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": ">= 4"
+ "node": ">=8"
}
},
- "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==",
+ "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=="
+ },
+ "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==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz",
+ "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==",
+ "dev": true
+ },
+ "node_modules/pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
+ "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
+ "dev": true,
+ "dependencies": {
+ "jsonc-parser": "^3.2.0",
+ "mlly": "^1.2.0",
+ "pathe": "^1.1.0"
+ }
+ },
+ "node_modules/playwright": {
+ "version": "1.45.0",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.0.tgz",
+ "integrity": "sha512-4z3ac3plDfYzGB6r0Q3LF8POPR20Z8D0aXcxbJvmfMgSSq1hkcgvFRXJk9rUq5H/MJ0Ktal869hhOdI/zUTeLA==",
"dev": true,
"dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
+ "playwright-core": "1.45.0"
+ },
+ "bin": {
+ "playwright": "cli.js"
},
"engines": {
- "node": ">=6"
+ "node": ">=18"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
}
},
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "node_modules/playwright-core": {
+ "version": "1.45.0",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.0.tgz",
+ "integrity": "sha512-lZmHlFQ0VYSpAs43dRq1/nJ9G/6SiTI7VPqidld9TDefL9tX87bTKExWZZUF5PeRyqtXqd8fQi2qmfIedkwsNQ==",
"dev": true,
+ "bin": {
+ "playwright-core": "cli.js"
+ },
"engines": {
- "node": ">=0.8.19"
+ "node": ">=18"
}
},
- "node_modules/indent-string": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
- "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "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==",
+ "node_modules/possible-typed-array-names": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
+ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
"dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "engines": {
+ "node": ">= 0.4"
}
},
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/internal-slot": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz",
- "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
+ "node_modules/postcss": {
+ "version": "8.4.38",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
+ "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
"dev": true,
+ "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": {
- "get-intrinsic": "^1.2.2",
- "hasown": "^2.0.0",
- "side-channel": "^1.0.4"
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.2.0"
},
"engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/internmap": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
- "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
- "engines": {
- "node": ">=12"
+ "node": "^10 || ^12 || >=14"
}
},
- "node_modules/intl-messageformat": {
- "version": "10.5.8",
- "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.8.tgz",
- "integrity": "sha512-NRf0jpBWV0vd671G5b06wNofAN8tp7WWDogMZyaU8GUAsmbouyvgwmFJI7zLjfAMpm3zK+vSwRP3jzaoIcMbaA==",
- "dependencies": {
- "@formatjs/ecma402-abstract": "1.18.0",
- "@formatjs/fast-memoize": "2.2.0",
- "@formatjs/icu-messageformat-parser": "2.7.3",
- "tslib": "^2.4.0"
- }
+ "node_modules/preact": {
+ "version": "8.2.9",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-8.2.9.tgz",
+ "integrity": "sha512-ThuGXBmJS3VsT+jIP+eQufD3L8pRw/PY3FoCys6O9Pu6aF12Pn9zAJDX99TfwRAFOCEKm/P0lwiPTbqKMJp0fA==",
+ "hasInstallScript": true
},
- "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==",
+ "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,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">= 0.8.0"
}
},
- "node_modules/is-array-buffer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "node_modules/prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "node_modules/pretty-bytes": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz",
+ "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==",
"dev": true,
- "dependencies": {
- "has-bigints": "^1.0.1"
+ "engines": {
+ "node": "^14.13.1 || >=16.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "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==",
+ "node_modules/pretty-format": {
+ "version": "27.5.1",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
+ "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
"dev": true,
"dependencies": {
- "binary-extensions": "^2.0.0"
+ "ansi-regex": "^5.0.1",
+ "ansi-styles": "^5.0.0",
+ "react-is": "^17.0.1"
},
"engines": {
- "node": ">=8"
+ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
}
},
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
"engines": {
- "node": ">= 0.4"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "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==",
+ "node_modules/pretty-format/node_modules/react-is": {
+ "version": "17.0.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
+ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
+ "dev": true
+ },
+ "node_modules/promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "dependencies": {
+ "asap": "~2.0.3"
+ }
+ },
+ "node_modules/prop-types": {
+ "version": "15.8.1",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
+ "dependencies": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.13.1"
+ }
+ },
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+ "dev": true
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"dev": true,
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">=6"
}
},
- "node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true
+ },
+ "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==",
"dev": true,
"dependencies": {
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "safe-buffer": "^5.1.0"
}
},
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "loose-envify": "^1.1.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-clientside-effect": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz",
+ "integrity": "sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.13"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependencies": {
+ "react": "^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.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==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
}
},
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "engines": {
- "node": ">=8"
+ "node_modules/react-fast-compare": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz",
+ "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ=="
+ },
+ "node_modules/react-focus-lock": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.12.1.tgz",
+ "integrity": "sha512-lfp8Dve4yJagkHiFrC1bGtib3mF2ktqwPJw4/WGcgPW+pJ/AVQA5X2vI7xgp13FcxFEpYBBHpXai/N2DBNC0Jw==",
+ "dependencies": {
+ "@babel/runtime": "^7.0.0",
+ "focus-lock": "^1.3.5",
+ "prop-types": "^15.6.2",
+ "react-clientside-effect": "^1.2.6",
+ "use-callback-ref": "^1.3.2",
+ "use-sidecar": "^1.1.2"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
+ "node_modules/react-icons": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.12.0.tgz",
+ "integrity": "sha512-IBaDuHiShdZqmfc/TwHu6+d6k2ltNCf3AszxNmjJc1KUfXdEeRJOKyNvLmAHaarhzGmTSVygNdyu8/opXv2gaw==",
+ "peerDependencies": {
+ "react": "*"
+ }
+ },
+ "node_modules/react-intl": {
+ "version": "6.6.8",
+ "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.8.tgz",
+ "integrity": "sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==",
"dependencies": {
- "is-extglob": "^2.1.1"
+ "@formatjs/ecma402-abstract": "2.0.0",
+ "@formatjs/icu-messageformat-parser": "2.7.8",
+ "@formatjs/intl": "2.10.4",
+ "@formatjs/intl-displaynames": "6.6.8",
+ "@formatjs/intl-listformat": "7.5.7",
+ "@types/hoist-non-react-statics": "^3.3.1",
+ "@types/react": "16 || 17 || 18",
+ "hoist-non-react-statics": "^3.3.2",
+ "intl-messageformat": "10.5.14",
+ "tslib": "^2.4.0"
},
- "engines": {
- "node": ">=0.10.0"
+ "peerDependencies": {
+ "react": "^16.6.0 || 17 || 18",
+ "typescript": "^4.7 || 5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/is-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
- "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
- "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==",
+ "node_modules/react-refresh": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
+ "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
"dev": true,
"engines": {
- "node": ">=0.12.0"
+ "node": ">=0.10.0"
}
},
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
+ "node_modules/react-remove-scroll": {
+ "version": "2.5.10",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.10.tgz",
+ "integrity": "sha512-m3zvBRANPBw3qxVVjEIPEQinkcwlFZ4qyomuWVpNJdv4c6MvHfXV0C3L9Jx5rr3HeBHKNRX+1jreB5QloDIJjA==",
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "react-remove-scroll-bar": "^2.3.6",
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.1.0",
+ "use-callback-ref": "^1.3.0",
+ "use-sidecar": "^1.1.2"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=10"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "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,
+ "node_modules/react-remove-scroll-bar": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz",
+ "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==",
+ "dependencies": {
+ "react-style-singleton": "^2.2.1",
+ "tslib": "^2.0.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/is-potential-custom-element-name": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
- "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
- "dev": true
- },
- "node_modules/is-promise": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
- "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
- },
- "node_modules/is-reference": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
- "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
+ "node_modules/react-router": {
+ "version": "6.24.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.24.0.tgz",
+ "integrity": "sha512-sQrgJ5bXk7vbcC4BxQxeNa5UmboFm35we1AFK0VvQaz9g0LzxEIuLOhHIoZ8rnu9BO21ishGeL9no1WB76W/eg==",
"dependencies": {
- "@types/estree": "*"
+ "@remix-run/router": "1.17.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
}
},
- "node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
+ "node_modules/react-router-dom": {
+ "version": "6.24.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.24.0.tgz",
+ "integrity": "sha512-960sKuau6/yEwS8e+NVEidYQb1hNjAYM327gjEyXlc6r3Skf2vtwuJ2l7lssdegD2YjoKG5l8MsVyeTDlVeY8g==",
"dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
+ "@remix-run/router": "1.17.0",
+ "react-router": "6.24.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=14.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-set": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
- "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
}
},
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dev": true,
+ "node_modules/react-style-singleton": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
+ "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==",
"dependencies": {
- "call-bind": "^1.0.2"
+ "get-nonce": "^1.0.0",
+ "invariant": "^2.2.4",
+ "tslib": "^2.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "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==",
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
"dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "dependencies": {
+ "picomatch": "^2.2.1"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=8.10.0"
}
},
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "node_modules/redent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz",
+ "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==",
"dev": true,
"dependencies": {
- "has-tostringtag": "^1.0.0"
+ "indent-string": "^5.0.0",
+ "strip-indent": "^4.0.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "node_modules/redent/node_modules/strip-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
+ "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
"dev": true,
"dependencies": {
- "has-symbols": "^1.0.2"
+ "min-indent": "^1.0.1"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "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==",
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
+ "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
"dev": true,
"dependencies": {
- "which-typed-array": "^1.1.11"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.1",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "globalthis": "^1.0.3",
+ "which-builtin-type": "^1.1.3"
},
"engines": {
"node": ">= 0.4"
@@ -7107,618 +12022,672 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-weakmap": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
- "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
},
- "node_modules/is-weakset": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
- "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.1.1",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
+ "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
+ "regenerate": "^1.4.2"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
},
- "node_modules/jiti": {
- "version": "1.21.0",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
- "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "node_modules/regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
"dev": true,
- "bin": {
- "jiti": "bin/jiti.js"
- }
- },
- "node_modules/js-cookie": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
- "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
- "engines": {
- "node": ">=14"
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
}
},
- "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==",
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
+ "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
"dev": true,
"dependencies": {
- "argparse": "^2.0.1"
+ "call-bind": "^1.0.6",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.1"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/js-yaml/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/jsdom": {
- "version": "23.2.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz",
- "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==",
+ "node_modules/regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
"dev": true,
"dependencies": {
- "@asamuzakjp/dom-selector": "^2.0.1",
- "cssstyle": "^4.0.1",
- "data-urls": "^5.0.0",
- "decimal.js": "^10.4.3",
- "form-data": "^4.0.0",
- "html-encoding-sniffer": "^4.0.0",
- "http-proxy-agent": "^7.0.0",
- "https-proxy-agent": "^7.0.2",
- "is-potential-custom-element-name": "^1.0.1",
- "parse5": "^7.1.2",
- "rrweb-cssom": "^0.6.0",
- "saxes": "^6.0.0",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.1.3",
- "w3c-xmlserializer": "^5.0.0",
- "webidl-conversions": "^7.0.0",
- "whatwg-encoding": "^3.1.1",
- "whatwg-mimetype": "^4.0.0",
- "whatwg-url": "^14.0.0",
- "ws": "^8.16.0",
- "xml-name-validator": "^5.0.0"
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
},
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "canvas": "^2.11.2"
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dev": true,
+ "dependencies": {
+ "jsesc": "~0.5.0"
},
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
+ "bin": {
+ "regjsparser": "bin/parser"
}
},
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
"dev": true,
- "peer": true,
"bin": {
"jsesc": "bin/jsesc"
- },
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "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/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.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==",
- "dev": true
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
- "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==",
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
"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==",
- "dev": true,
- "peer": true,
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
"bin": {
- "json5": "lib/cli.js"
+ "resolve": "bin/resolve"
},
- "engines": {
- "node": ">=6"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/jsonc-parser": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
- "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
- "dev": true
- },
- "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/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==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "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": {
- "node": ">=6"
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
}
},
- "node_modules/known-css-properties": {
- "version": "0.29.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz",
- "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==",
- "dev": true
- },
- "node_modules/kolorist": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
- "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
- "dev": true
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
},
- "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==",
+ "node_modules/rollup": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz",
+ "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==",
"dev": true,
"dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
+ "@types/estree": "1.0.5"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.18.0",
+ "@rollup/rollup-android-arm64": "4.18.0",
+ "@rollup/rollup-darwin-arm64": "4.18.0",
+ "@rollup/rollup-darwin-x64": "4.18.0",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.18.0",
+ "@rollup/rollup-linux-arm-musleabihf": "4.18.0",
+ "@rollup/rollup-linux-arm64-gnu": "4.18.0",
+ "@rollup/rollup-linux-arm64-musl": "4.18.0",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0",
+ "@rollup/rollup-linux-riscv64-gnu": "4.18.0",
+ "@rollup/rollup-linux-s390x-gnu": "4.18.0",
+ "@rollup/rollup-linux-x64-gnu": "4.18.0",
+ "@rollup/rollup-linux-x64-musl": "4.18.0",
+ "@rollup/rollup-win32-arm64-msvc": "4.18.0",
+ "@rollup/rollup-win32-ia32-msvc": "4.18.0",
+ "@rollup/rollup-win32-x64-msvc": "4.18.0",
+ "fsevents": "~2.3.2"
}
},
- "node_modules/lil-gui": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/lil-gui/-/lil-gui-0.17.0.tgz",
- "integrity": "sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==",
+ "node_modules/rrweb-cssom": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz",
+ "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==",
"dev": true
},
- "node_modules/lilconfig": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "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,
- "engines": {
- "node": ">=10"
+ "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/local-pkg": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
- "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
+ "node_modules/rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
+ "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
"dev": true,
"dependencies": {
- "mlly": "^1.4.2",
- "pkg-types": "^1.0.3"
+ "call-bind": "^1.0.7",
+ "get-intrinsic": "^1.2.4",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
},
"engines": {
- "node": ">=14"
+ "node": ">=0.4"
},
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/locate-character": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
- "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="
+ "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==",
+ "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/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==",
+ "node_modules/safe-regex-test": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
+ "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
"dev": true,
"dependencies": {
- "p-locate": "^5.0.0"
+ "call-bind": "^1.0.6",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.1.4"
},
"engines": {
- "node": ">=10"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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-es": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
- "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
- "dev": true
- },
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
- "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/long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
- "node_modules/loupe": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz",
- "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==",
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sass": {
+ "version": "1.77.8",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
+ "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
"dev": true,
+ "optional": true,
+ "peer": true,
"dependencies": {
- "get-func-name": "^2.0.1"
+ "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/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==",
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
"dev": true,
"dependencies": {
- "yallist": "^3.0.2"
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=v12.22.7"
}
},
- "node_modules/lru-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
- "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==",
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
"dependencies": {
- "es5-ext": "~0.10.2"
+ "loose-envify": "^1.1.0"
}
},
- "node_modules/lz-string": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
- "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
+ "node_modules/seedrandom": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
+ "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
+ },
+ "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": {
- "lz-string": "bin/bin.js"
+ "semver": "bin/semver.js"
}
},
- "node_modules/magic-string": {
- "version": "0.30.5",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
- "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "dev": true,
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.15"
- },
- "engines": {
- "node": ">=12"
+ "randombytes": "^2.1.0"
}
},
- "node_modules/mdn-data": {
- "version": "2.0.30",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
- "node_modules/memoizee": {
- "version": "0.4.15",
- "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz",
- "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==",
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
"dependencies": {
- "d": "^1.0.1",
- "es5-ext": "^0.10.53",
- "es6-weak-map": "^2.0.3",
- "event-emitter": "^0.3.5",
- "is-promise": "^2.2.2",
- "lru-queue": "^0.1.0",
- "next-tick": "^1.1.0",
- "timers-ext": "^0.1.7"
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
"dev": true,
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
"engines": {
- "node": ">= 8"
+ "node": ">= 0.4"
}
},
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "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/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": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
+ "shebang-regex": "^3.0.0"
},
"engines": {
- "node": ">=8.6"
+ "node": ">=8"
}
},
- "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==",
+ "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": ">= 0.6"
+ "node": ">=8"
}
},
- "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==",
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dev": true,
"dependencies": {
- "mime-db": "1.52.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
+ "node_modules/siginfo": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
+ "dev": true
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=14"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "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": ">=4"
+ "node": ">=8"
}
},
- "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/smob": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz",
+ "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==",
+ "dev": true
},
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "node_modules/smoothie": {
+ "version": "1.36.1",
+ "resolved": "https://registry.npmjs.org/smoothie/-/smoothie-1.36.1.tgz",
+ "integrity": "sha512-499Vr2od6TicP8s7ykcyTfddh/6n11BB41G9RE7gqQRyfoPIAYotUTzwAxQpAfOdVOb+BvcG2qla+hjyqwe+PA=="
},
- "node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "node_modules/snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
"dev": true,
"dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
}
},
- "node_modules/mlly": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz",
- "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.10.0",
- "pathe": "^1.1.1",
- "pkg-types": "^1.0.3",
- "ufo": "^1.3.0"
+ "node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/mri": {
+ "node_modules/source-map-js": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
- "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "dev": true,
"engines": {
- "node": ">=4"
+ "node": ">=0.10.0"
}
},
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
},
- "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"
- },
+ "node_modules/source-map-support/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==",
+ "dev": true,
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": ">=0.10.0"
}
},
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+ "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",
"dev": true
},
- "node_modules/next-tick": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
- "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
+ "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/node-fetch": {
- "version": "2.6.13",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz",
- "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==",
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "dev": true,
"dependencies": {
- "whatwg-url": "^5.0.0"
+ "escape-string-regexp": "^2.0.0"
},
"engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
+ "node": ">=10"
}
},
- "node_modules/node-fetch/node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
},
- "node_modules/node-fetch/node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ "node_modules/stackback": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
+ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
+ "dev": true
},
- "node_modules/node-fetch/node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "node_modules/std-env": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz",
+ "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==",
+ "dev": true
+ },
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+ "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+ "dev": true,
"dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
+ "internal-slot": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
- "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==",
- "dev": true
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
},
- "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==",
- "dev": true,
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "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==",
+ "node_modules/string.prototype.matchall": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
+ "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
"dev": true,
"dependencies": {
- "path-key": "^4.0.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.7",
+ "regexp.prototype.flags": "^1.5.2",
+ "set-function-name": "^2.0.2",
+ "side-channel": "^1.0.6"
},
"engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
+ "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.0",
+ "es-object-atoms": "^1.0.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">= 0.4"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
+ "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
"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==",
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -7727,81 +12696,152 @@
"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==",
+ "node_modules/stringify-object": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
"dev": true,
+ "dependencies": {
+ "get-own-enumerable-property-symbols": "^3.0.0",
+ "is-obj": "^1.0.1",
+ "is-regexp": "^1.0.0"
+ },
"engines": {
- "node": ">= 0.4"
+ "node": ">=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,
+ "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==",
"dependencies": {
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
+ "ansi-regex": "^5.0.1"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
+ "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "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/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "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==",
+ "node_modules/strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
"dev": true,
"dependencies": {
- "wrappy": "1"
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "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==",
+ "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,
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
"engines": {
- "node": ">=12"
+ "node": ">=8"
},
"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==",
+ "node_modules/strip-literal": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz",
+ "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==",
"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"
+ "js-tokens": "^9.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/strip-literal/node_modules/js-tokens": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz",
+ "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==",
+ "dev": true
+ },
+ "node_modules/stylis": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+ },
+ "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==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=4"
}
},
- "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==",
+ "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==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-parser": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
+ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==",
+ "dev": true
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "node_modules/temp-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
+ "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tempy": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz",
+ "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==",
"dev": true,
"dependencies": {
- "yocto-queue": "^0.1.0"
+ "is-stream": "^2.0.0",
+ "temp-dir": "^2.0.0",
+ "type-fest": "^0.16.0",
+ "unique-string": "^2.0.0"
},
"engines": {
"node": ">=10"
@@ -7810,1635 +12850,1658 @@
"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==",
+ "node_modules/tempy/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,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
"engines": {
- "node": ">=10"
+ "node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "node_modules/terser": {
+ "version": "5.31.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.1.tgz",
+ "integrity": "sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==",
+ "dev": 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/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==",
+ "dev": 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/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ },
+ "node_modules/tiny-invariant": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz",
+ "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="
+ },
+ "node_modules/tinybench": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz",
+ "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==",
+ "dev": true
+ },
+ "node_modules/tinypool": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz",
+ "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/tinyspy": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz",
+ "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "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==",
+ "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==",
"dev": true,
"dependencies": {
- "callsites": "^3.0.0"
+ "is-number": "^7.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=8.0"
}
},
- "node_modules/parse5": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
- "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
- "dev": true,
+ "node_modules/toggle-selection": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
+ "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ=="
+ },
+ "node_modules/topojson-client": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz",
+ "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
"dependencies": {
- "entities": "^4.4.0"
+ "commander": "2"
},
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
+ "bin": {
+ "topo2geo": "bin/topo2geo",
+ "topomerge": "bin/topomerge",
+ "topoquantize": "bin/topoquantize"
}
},
- "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==",
+ "node_modules/topojson-client/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=="
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
"dev": true,
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=6"
}
},
- "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==",
+ "node_modules/tr46": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
+ "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
"dev": true,
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
}
},
- "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==",
+ "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": ">=8"
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
}
},
- "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/tslib": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
},
- "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==",
+ "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": ">=8"
+ "node": ">= 0.8.0"
}
},
- "node_modules/pathe": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz",
- "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==",
- "dev": true
- },
- "node_modules/pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
"dev": true,
"engines": {
- "node": "*"
- }
- },
- "node_modules/periscopic": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
- "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^3.0.0",
- "is-reference": "^3.0.0"
+ "node": ">=4"
}
},
- "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==",
+ "node_modules/type-fest": {
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
+ "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
"dev": true,
"engines": {
- "node": ">=8.6"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/pkg-types": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
- "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
"dev": true,
"dependencies": {
- "jsonc-parser": "^3.2.0",
- "mlly": "^1.2.0",
- "pathe": "^1.1.0"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
- "node_modules/postcss": {
- "version": "8.4.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
- "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
- "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"
- }
- ],
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
+ "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "dev": true,
"dependencies": {
- "nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
},
"engines": {
- "node": "^10 || ^12 || >=14"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/postcss-load-config": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
- "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
+ "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
"dev": true,
"dependencies": {
- "lilconfig": "^2.0.5",
- "yaml": "^1.10.2"
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 0.4"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- "peerDependencies": {
- "postcss": ">=8.0.9",
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "postcss": {
- "optional": true
- },
- "ts-node": {
- "optional": true
- }
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/postcss-safe-parser": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
- "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
+ "node_modules/typed-array-length": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
+ "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-proto": "^1.0.3",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0"
+ },
"engines": {
- "node": ">=12.0"
+ "node": ">= 0.4"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz",
+ "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==",
+ "devOptional": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
},
- "peerDependencies": {
- "postcss": "^8.3.3"
+ "engines": {
+ "node": ">=14.17"
}
},
- "node_modules/postcss-scss": {
- "version": "4.0.9",
- "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz",
- "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==",
- "dev": true,
+ "node_modules/ua-parser-js": {
+ "version": "0.7.38",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz",
+ "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==",
"funding": [
{
"type": "opencollective",
- "url": "https://opencollective.com/postcss/"
+ "url": "https://opencollective.com/ua-parser-js"
},
{
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss-scss"
+ "type": "paypal",
+ "url": "https://paypal.me/faisalman"
},
{
"type": "github",
- "url": "https://github.com/sponsors/ai"
+ "url": "https://github.com/sponsors/faisalman"
}
],
"engines": {
- "node": ">=12.0"
- },
- "peerDependencies": {
- "postcss": "^8.4.29"
+ "node": "*"
}
},
- "node_modules/postcss-selector-parser": {
- "version": "6.0.13",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "node_modules/ufo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz",
+ "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==",
+ "dev": true
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dev": true,
"dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "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==",
+ "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=="
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
"dev": true,
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=4"
}
},
- "node_modules/prettier": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz",
- "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==",
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
"dev": true,
- "bin": {
- "prettier": "bin/prettier.cjs"
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
},
"engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
+ "node": ">=4"
}
},
- "node_modules/prettier-plugin-svelte": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.1.2.tgz",
- "integrity": "sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==",
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
"dev": true,
- "peerDependencies": {
- "prettier": "^3.0.0",
- "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/pretty-format": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz",
- "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
"dev": true,
"dependencies": {
- "ansi-regex": "^5.0.1",
- "ansi-styles": "^5.0.0",
- "react-is": "^17.0.1"
+ "crypto-random-string": "^2.0.0"
},
"engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
+ "node": ">=8"
}
},
- "node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
"dev": true,
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": ">= 4.0.0"
}
},
- "node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "node_modules/upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
"dev": true,
"engines": {
- "node": ">=6"
+ "node": ">=4",
+ "yarn": "*"
}
},
- "node_modules/querystringify": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
- "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
- "dev": true
- },
- "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==",
+ "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==",
"dev": true,
"funding": [
{
- "type": "github",
- "url": "https://github.com/sponsors/feross"
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
},
{
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
},
{
- "type": "consulting",
- "url": "https://feross.org/support"
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
- ]
- },
- "node_modules/react-is": {
- "version": "17.0.2",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
- "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
- "dev": true
- },
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/redent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz",
- "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==",
- "dev": true,
- "dependencies": {
- "indent-string": "^5.0.0",
- "strip-indent": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/redent/node_modules/strip-indent": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz",
- "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==",
- "dev": true,
+ ],
"dependencies": {
- "min-indent": "^1.0.1"
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
},
- "engines": {
- "node": ">=12"
+ "bin": {
+ "update-browserslist-db": "cli.js"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
}
},
- "node_modules/regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true
- },
- "node_modules/regenerate-unicode-properties": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz",
- "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==",
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
"dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
+ "punycode": "^2.1.0"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.13.11",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
- },
- "node_modules/regenerator-transform": {
- "version": "0.15.2",
- "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
- "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
"dev": true,
"dependencies": {
- "@babel/runtime": "^7.8.4"
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
}
},
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
- "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
- "dev": true,
+ "node_modules/use-callback-ref": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz",
+ "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==",
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "set-function-name": "^2.0.0"
+ "tslib": "^2.0.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=10"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "peerDependencies": {
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/regexpu-core": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz",
- "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
- "dev": true,
+ "node_modules/use-sidecar": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz",
+ "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==",
"dependencies": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
+ "detect-node-es": "^1.1.0",
+ "tslib": "^2.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/regjsparser": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
- "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
- "dev": true,
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/vega": {
+ "version": "5.20.0",
+ "resolved": "https://registry.npmjs.org/vega/-/vega-5.20.0.tgz",
+ "integrity": "sha512-L2hDaTH2gz9DFbu7l1B8fR637HzctViuosFCo/Db5aBe93fCJ/w/oJu+vQNfQELzfm9sntkS/+A4u+39xrDCNA==",
+ "dependencies": {
+ "vega-crossfilter": "~4.0.5",
+ "vega-dataflow": "~5.7.3",
+ "vega-encode": "~4.8.3",
+ "vega-event-selector": "~2.0.6",
+ "vega-expression": "~4.0.1",
+ "vega-force": "~4.0.7",
+ "vega-format": "~1.0.4",
+ "vega-functions": "~5.12.0",
+ "vega-geo": "~4.3.8",
+ "vega-hierarchy": "~4.0.9",
+ "vega-label": "~1.0.0",
+ "vega-loader": "~4.4.0",
+ "vega-parser": "~6.1.3",
+ "vega-projection": "~1.4.5",
+ "vega-regression": "~1.0.9",
+ "vega-runtime": "~6.1.3",
+ "vega-scale": "~7.1.1",
+ "vega-scenegraph": "~4.9.4",
+ "vega-statistics": "~1.7.9",
+ "vega-time": "~2.0.4",
+ "vega-transforms": "~4.9.3",
+ "vega-typings": "~0.20.0",
+ "vega-util": "~1.16.1",
+ "vega-view": "~5.10.0",
+ "vega-view-transforms": "~4.5.8",
+ "vega-voronoi": "~4.1.5",
+ "vega-wordcloud": "~4.1.3"
+ }
+ },
+ "node_modules/vega-canvas": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.7.tgz",
+ "integrity": "sha512-OkJ9CACVcN9R5Pi9uF6MZBF06pO6qFpDYHWSKBJsdHP5o724KrsgR6UvbnXFH82FdsiTOff/HqjuaG8C7FL+9Q=="
+ },
+ "node_modules/vega-crossfilter": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.5.tgz",
+ "integrity": "sha512-yF+iyGP+ZxU7Tcj5yBsMfoUHTCebTALTXIkBNA99RKdaIHp1E690UaGVLZe6xde2n5WaYpho6I/I6wdAW3NXcg==",
"dependencies": {
- "jsesc": "~0.5.0"
- },
- "bin": {
- "regjsparser": "bin/parser"
+ "d3-array": "^2.7.1",
+ "vega-dataflow": "^5.7.3",
+ "vega-util": "^1.15.2"
}
},
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
- "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
+ "node_modules/vega-crossfilter/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
}
},
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/vega-crossfilter/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
},
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/vega-dataflow": {
+ "version": "5.7.6",
+ "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.6.tgz",
+ "integrity": "sha512-9Md8+5iUC1MVKPKDyZ7pCEHk6I9am+DgaMzZqo/27O/KI4f23/WQXPyuI8jbNmc/mkm340P0TKREmzL5M7+2Dg==",
+ "dependencies": {
+ "vega-format": "^1.1.2",
+ "vega-loader": "^4.5.2",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/requires-port": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
- "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
- "dev": true
- },
- "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,
+ "node_modules/vega-dataflow/node_modules/vega-format": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.2.tgz",
+ "integrity": "sha512-0kUfAj0dg0U6GcEY0Kp6LiSTCZ8l8jl1qVdQyToMyKmtZg/q56qsiJQZy3WWRr1MtWkTIZL71xSJXgjwjeUaAw==",
"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"
+ "d3-array": "^3.2.2",
+ "d3-format": "^3.1.0",
+ "d3-time-format": "^4.1.0",
+ "vega-time": "^2.1.2",
+ "vega-util": "^1.17.2"
}
},
- "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/vega-dataflow/node_modules/vega-loader": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.2.tgz",
+ "integrity": "sha512-ktIdGz3DRIS3XfTP9lJ6oMT5cKwC86nQkjUbXZbOtwXQFVNE2xVWBuH13GP6FKUZxg5hJCMtb5v/e/fwTvhKsQ==",
+ "dependencies": {
+ "d3-dsv": "^3.0.1",
+ "node-fetch": "^2.6.7",
+ "topojson-client": "^3.1.0",
+ "vega-format": "^1.1.2",
+ "vega-util": "^1.17.2"
}
},
- "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/vega-dataflow/node_modules/vega-time": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.2.tgz",
+ "integrity": "sha512-6rXc6JdDt8MnCRy6UzUCsa6EeFycPDmvioMddLfKw38OYCV8pRQC5nw44gyddOwXgUTJLiCtn/sp53P0iA542A==",
+ "dependencies": {
+ "d3-array": "^3.2.2",
+ "d3-time": "^3.1.0",
+ "vega-util": "^1.17.2"
}
},
- "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,
+ "node_modules/vega-dataflow/node_modules/vega-util": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz",
+ "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw=="
+ },
+ "node_modules/vega-embed": {
+ "version": "6.17.0",
+ "resolved": "https://registry.npmjs.org/vega-embed/-/vega-embed-6.17.0.tgz",
+ "integrity": "sha512-9eiVZCrLDb/EiVCMbMYouWB/q9dOeVkL5Bh0vU6wsUpIV/bbEvS47uljuo3YSxFqkfNpJ+Qt8xvLRiYSnN4lqw==",
"dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
+ "fast-json-patch": "^3.0.0-1",
+ "json-stringify-pretty-compact": "^3.0.0",
+ "semver": "^7.3.5",
+ "vega-schema-url-parser": "^2.1.0",
+ "vega-themes": "^2.10.0",
+ "vega-tooltip": "^0.25.1"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "peerDependencies": {
+ "vega": "^5.13.0",
+ "vega-lite": "*"
}
},
- "node_modules/robust-predicates": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
- "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
- },
- "node_modules/rollup": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.0.tgz",
- "integrity": "sha512-bUHW/9N21z64gw8s6tP4c88P382Bq/L5uZDowHlHx6s/QWpjJXivIAbEw6LZthgSvlEizZBfLC4OAvWe7aoF7A==",
- "dev": true,
+ "node_modules/vega-embed/node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
- "rollup": "dist/bin/rollup"
+ "semver": "bin/semver.js"
},
"engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.9.0",
- "@rollup/rollup-android-arm64": "4.9.0",
- "@rollup/rollup-darwin-arm64": "4.9.0",
- "@rollup/rollup-darwin-x64": "4.9.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.9.0",
- "@rollup/rollup-linux-arm64-gnu": "4.9.0",
- "@rollup/rollup-linux-arm64-musl": "4.9.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.9.0",
- "@rollup/rollup-linux-x64-gnu": "4.9.0",
- "@rollup/rollup-linux-x64-musl": "4.9.0",
- "@rollup/rollup-win32-arm64-msvc": "4.9.0",
- "@rollup/rollup-win32-ia32-msvc": "4.9.0",
- "@rollup/rollup-win32-x64-msvc": "4.9.0",
- "fsevents": "~2.3.2"
+ "node": ">=10"
}
},
- "node_modules/rrweb-cssom": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz",
- "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==",
- "dev": true
+ "node_modules/vega-encode": {
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.3.tgz",
+ "integrity": "sha512-JoRYtaV2Hs8spWLzTu/IjR7J9jqRmuIOEicAaWj6T9NSZrNWQzu2zF3IVsX85WnrIDIRUDaehXaFZvy9uv9RQg==",
+ "dependencies": {
+ "d3-array": "^2.7.1",
+ "d3-interpolate": "^2.0.1",
+ "vega-dataflow": "^5.7.3",
+ "vega-scale": "^7.0.3",
+ "vega-util": "^1.15.2"
+ }
},
- "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"
- }
- ],
+ "node_modules/vega-encode/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
"dependencies": {
- "queue-microtask": "^1.2.2"
+ "internmap": "^1.0.0"
}
},
- "node_modules/rw": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
- "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+ "node_modules/vega-encode/node_modules/d3-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
+ "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
},
- "node_modules/sade": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
- "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+ "node_modules/vega-encode/node_modules/d3-interpolate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz",
+ "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==",
"dependencies": {
- "mri": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
+ "d3-color": "1 - 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==",
- "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/vega-encode/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
},
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "node_modules/vega-event-selector": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz",
+ "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew=="
},
- "node_modules/sander": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz",
- "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==",
- "dev": true,
+ "node_modules/vega-expression": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz",
+ "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==",
"dependencies": {
- "es6-promise": "^3.1.2",
- "graceful-fs": "^4.1.3",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.2"
+ "vega-util": "^1.16.0"
}
},
- "node_modules/sander/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
+ "node_modules/vega-force": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.7.tgz",
+ "integrity": "sha512-pyLKdwXSZ9C1dVIqdJOobvBY29rLvZjvRRTla9BU/nMwAiAGlGi6WKUFdRGdneyGe3zo2nSZDTZlZM/Z5VaQNA==",
"dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
+ "d3-force": "^2.1.1",
+ "vega-dataflow": "^5.7.3",
+ "vega-util": "^1.15.2"
}
},
- "node_modules/saxes": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
- "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
- "dev": true,
+ "node_modules/vega-force/node_modules/d3-dispatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz",
+ "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA=="
+ },
+ "node_modules/vega-force/node_modules/d3-force": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz",
+ "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==",
"dependencies": {
- "xmlchars": "^2.2.0"
- },
- "engines": {
- "node": ">=v12.22.7"
+ "d3-dispatch": "1 - 2",
+ "d3-quadtree": "1 - 2",
+ "d3-timer": "1 - 2"
}
},
- "node_modules/seedrandom": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
- "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
+ "node_modules/vega-force/node_modules/d3-quadtree": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz",
+ "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw=="
},
- "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/vega-force/node_modules/d3-timer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz",
+ "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA=="
},
- "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,
+ "node_modules/vega-format": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.4.tgz",
+ "integrity": "sha512-oTAeub3KWm6nKhXoYCx1q9G3K43R6/pDMXvqDlTSUtjoY7b/Gixm8iLcir5S9bPjvH40n4AcbZsPmNfL/Up77A==",
"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"
+ "d3-array": "^2.7.1",
+ "d3-format": "^2.0.0",
+ "d3-time-format": "^3.0.0",
+ "vega-time": "^2.0.3",
+ "vega-util": "^1.15.2"
}
},
- "node_modules/set-function-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz",
- "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
- "dev": true,
+ "node_modules/vega-format/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
"dependencies": {
- "define-data-property": "^1.0.1",
- "functions-have-names": "^1.2.3",
- "has-property-descriptors": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "internmap": "^1.0.0"
}
},
- "node_modules/shebang-command": {
+ "node_modules/vega-format/node_modules/d3-format": {
"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,
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz",
+ "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA=="
+ },
+ "node_modules/vega-format/node_modules/d3-time": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz",
+ "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==",
"dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
+ "d3-array": "2"
}
},
- "node_modules/shebang-regex": {
+ "node_modules/vega-format/node_modules/d3-time-format": {
"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"
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz",
+ "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==",
+ "dependencies": {
+ "d3-time": "1 - 2"
}
},
- "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,
+ "node_modules/vega-format/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/vega-functions": {
+ "version": "5.12.1",
+ "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.1.tgz",
+ "integrity": "sha512-7cHfcjXOj27qEbh2FTzWDl7FJK4xGcMFF7+oiyqa0fp7BU/wNT5YdNV0t5kCX9WjV7mfJWACKV74usLJbyM6GA==",
"dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "d3-array": "^2.7.1",
+ "d3-color": "^2.0.0",
+ "d3-geo": "^2.0.1",
+ "vega-dataflow": "^5.7.3",
+ "vega-expression": "^5.0.0",
+ "vega-scale": "^7.1.1",
+ "vega-scenegraph": "^4.9.3",
+ "vega-selections": "^5.3.1",
+ "vega-statistics": "^1.7.9",
+ "vega-time": "^2.0.4",
+ "vega-util": "^1.16.0"
}
},
- "node_modules/siginfo": {
+ "node_modules/vega-functions/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
+ }
+ },
+ "node_modules/vega-functions/node_modules/d3-color": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
- "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
- "dev": true
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
+ "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
},
- "node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "node_modules/vega-functions/node_modules/d3-geo": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz",
+ "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==",
+ "dependencies": {
+ "d3-array": "^2.5.0"
}
},
- "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/vega-functions/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/vega-functions/node_modules/vega-expression": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.1.1.tgz",
+ "integrity": "sha512-zv9L1Hm0KHE9M7mldHyz8sXbGu3KmC0Cdk7qfHkcTNS75Jpsem6jkbu6ZAwx5cNUeW91AxUQOu77r4mygq2wUQ==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/smoothie": {
- "version": "1.36.1",
- "resolved": "https://registry.npmjs.org/smoothie/-/smoothie-1.36.1.tgz",
- "integrity": "sha512-499Vr2od6TicP8s7ykcyTfddh/6n11BB41G9RE7gqQRyfoPIAYotUTzwAxQpAfOdVOb+BvcG2qla+hjyqwe+PA=="
+ "node_modules/vega-functions/node_modules/vega-util": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz",
+ "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw=="
},
- "node_modules/sorcery": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz",
- "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==",
- "dev": true,
+ "node_modules/vega-geo": {
+ "version": "4.3.8",
+ "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz",
+ "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==",
+ "dependencies": {
+ "d3-array": "^2.7.1",
+ "d3-color": "^2.0.0",
+ "d3-geo": "^2.0.1",
+ "vega-canvas": "^1.2.5",
+ "vega-dataflow": "^5.7.3",
+ "vega-projection": "^1.4.5",
+ "vega-statistics": "^1.7.9",
+ "vega-util": "^1.15.2"
+ }
+ },
+ "node_modules/vega-geo/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
+ }
+ },
+ "node_modules/vega-geo/node_modules/d3-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
+ "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
+ },
+ "node_modules/vega-geo/node_modules/d3-geo": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz",
+ "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==",
+ "dependencies": {
+ "d3-array": "^2.5.0"
+ }
+ },
+ "node_modules/vega-geo/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/vega-hierarchy": {
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.9.tgz",
+ "integrity": "sha512-4XaWK6V38/QOZ+vllKKTafiwL25m8Kd+ebHmDV+Q236ONHmqc/gv82wwn9nBeXPEfPv4FyJw2SRoqa2Jol6fug==",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.14",
- "buffer-crc32": "^0.2.5",
- "minimist": "^1.2.0",
- "sander": "^0.5.0"
+ "d3-hierarchy": "^2.0.0",
+ "vega-dataflow": "^5.7.3",
+ "vega-util": "^1.15.2"
+ }
+ },
+ "node_modules/vega-hierarchy/node_modules/d3-hierarchy": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz",
+ "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw=="
+ },
+ "node_modules/vega-label": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/vega-label/-/vega-label-1.0.0.tgz",
+ "integrity": "sha512-hCdm2pcHgkKgxnzW9GvX5JmYNiUMlOXOibtMmBzvFBQHX3NiV9giQ5nsPiQiFbV08VxEPtM+VYXr2HyrIcq5zQ==",
+ "dependencies": {
+ "vega-canvas": "^1.2.5",
+ "vega-dataflow": "^5.7.3",
+ "vega-scenegraph": "^4.9.2",
+ "vega-util": "^1.15.2"
+ }
+ },
+ "node_modules/vega-lite": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-4.13.1.tgz",
+ "integrity": "sha512-OHZSSqVLuikoZ3idz3jIRk0UCKtVU2Lq5gaD6cLNTnJjNetoHKKdfZ023LVj4+Y9yWPz5meb+EJUsfBAGfF4Vw==",
+ "dependencies": {
+ "@types/clone": "~0.1.30",
+ "@types/fast-json-stable-stringify": "^2.0.0",
+ "array-flat-polyfill": "^1.0.1",
+ "clone": "~2.1.2",
+ "fast-deep-equal": "~3.1.1",
+ "fast-json-stable-stringify": "~2.1.0",
+ "json-stringify-pretty-compact": "~2.0.0",
+ "tslib": "~2.0.0",
+ "vega-event-selector": "~2.0.3",
+ "vega-expression": "~2.6.5",
+ "vega-util": "~1.14.0",
+ "yargs": "~15.3.1"
},
"bin": {
- "sorcery": "bin/sorcery"
+ "vl2pdf": "bin/vl2pdf",
+ "vl2png": "bin/vl2png",
+ "vl2svg": "bin/vl2svg",
+ "vl2vg": "bin/vl2vg"
+ },
+ "peerDependencies": {
+ "vega": "^5.12.1"
}
},
- "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==",
+ "node_modules/vega-lite/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==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "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/stackback": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
- "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
- "dev": true
+ "node_modules/vega-lite/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "engines": {
+ "node": ">=6"
+ }
},
- "node_modules/std-env": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz",
- "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==",
- "dev": true
+ "node_modules/vega-lite/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
},
- "node_modules/stop-iteration-iterator": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
- "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
- "dev": true,
+ "node_modules/vega-lite/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==",
"dependencies": {
- "internal-slot": "^1.0.4"
+ "color-name": "~1.1.4"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=7.0.0"
}
},
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
+ "node_modules/vega-lite/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=="
},
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/vega-lite/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
- "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==",
+ "node_modules/vega-lite/node_modules/json-stringify-pretty-compact": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
+ "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ=="
+ },
+ "node_modules/vega-lite/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dependencies": {
- "ansi-regex": "^5.0.1"
+ "p-locate": "^4.1.0"
},
"engines": {
"node": ">=8"
}
},
- "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,
+ "node_modules/vega-lite/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
+ "node_modules/vega-lite/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dependencies": {
- "min-indent": "^1.0.0"
+ "p-limit": "^2.2.0"
},
"engines": {
"node": ">=8"
}
},
- "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/vega-lite/node_modules/tslib": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
+ "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
},
- "node_modules/strip-literal": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz",
- "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==",
- "dev": true,
+ "node_modules/vega-lite/node_modules/vega-expression": {
+ "version": "2.6.6",
+ "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-2.6.6.tgz",
+ "integrity": "sha512-zxPzXO33FawU3WQHRmHJaRreyJlyMaNMn1uuCFSouJttPkBBWB5gCrha2f5+pF3t4NMFWTnSrgCkR6mcaubnng==",
"dependencies": {
- "acorn": "^8.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "vega-util": "^1.15.0"
}
},
- "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,
+ "node_modules/vega-lite/node_modules/vega-expression/node_modules/vega-util": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz",
+ "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw=="
+ },
+ "node_modules/vega-lite/node_modules/vega-util": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.14.1.tgz",
+ "integrity": "sha512-pSKJ8OCkgfgHZDTljyj+gmGltgulceWbk1BV6LWrXqp6P3J8qPA/oZA8+a93YNApYxXZ3yzIVUDOo5O27xk0jw=="
+ },
+ "node_modules/vega-lite/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dependencies": {
- "has-flag": "^3.0.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
+ "node_modules/vega-lite/node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "node_modules/vega-lite/node_modules/yargs": {
+ "version": "15.3.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz",
+ "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==",
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/svelte": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.8.tgz",
- "integrity": "sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==",
+ "node_modules/vega-lite/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"dependencies": {
- "@ampproject/remapping": "^2.2.1",
- "@jridgewell/sourcemap-codec": "^1.4.15",
- "@jridgewell/trace-mapping": "^0.3.18",
- "acorn": "^8.9.0",
- "aria-query": "^5.3.0",
- "axobject-query": "^3.2.1",
- "code-red": "^1.0.3",
- "css-tree": "^2.3.1",
- "estree-walker": "^3.0.3",
- "is-reference": "^3.0.1",
- "locate-character": "^3.0.0",
- "magic-string": "^0.30.4",
- "periscopic": "^3.1.0"
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=6"
}
},
- "node_modules/svelte-check": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.2.tgz",
- "integrity": "sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==",
- "dev": true,
+ "node_modules/vega-loader": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.4.1.tgz",
+ "integrity": "sha512-dj65i4qlNhK0mOmjuchHgUrF5YUaWrYpx0A8kXA68lBk5Hkx8FNRztkcl07CZJ1+8V81ymEyJii9jzGbhEX0ag==",
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.17",
- "chokidar": "^3.4.1",
- "fast-glob": "^3.2.7",
- "import-fresh": "^3.2.1",
- "picocolors": "^1.0.0",
- "sade": "^1.7.4",
- "svelte-preprocess": "^5.1.0",
- "typescript": "^5.0.3"
- },
- "bin": {
- "svelte-check": "bin/svelte-check"
- },
- "peerDependencies": {
- "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0"
+ "d3-dsv": "^2.0.0",
+ "node-fetch": "^2.6.1",
+ "topojson-client": "^3.1.0",
+ "vega-format": "^1.0.4",
+ "vega-util": "^1.16.0"
}
},
- "node_modules/svelte-eslint-parser": {
- "version": "0.33.1",
- "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.33.1.tgz",
- "integrity": "sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==",
- "dev": true,
+ "node_modules/vega-loader/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=="
+ },
+ "node_modules/vega-loader/node_modules/d3-dsv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz",
+ "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==",
"dependencies": {
- "eslint-scope": "^7.0.0",
- "eslint-visitor-keys": "^3.0.0",
- "espree": "^9.0.0",
- "postcss": "^8.4.29",
- "postcss-scss": "^4.0.8"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ota-meshi"
- },
- "peerDependencies": {
- "svelte": "^3.37.0 || ^4.0.0"
+ "commander": "2",
+ "iconv-lite": "0.4",
+ "rw": "1"
},
- "peerDependenciesMeta": {
- "svelte": {
- "optional": true
- }
+ "bin": {
+ "csv2json": "bin/dsv2json",
+ "csv2tsv": "bin/dsv2dsv",
+ "dsv2dsv": "bin/dsv2dsv",
+ "dsv2json": "bin/dsv2json",
+ "json2csv": "bin/json2dsv",
+ "json2dsv": "bin/json2dsv",
+ "json2tsv": "bin/json2dsv",
+ "tsv2csv": "bin/dsv2dsv",
+ "tsv2json": "bin/dsv2json"
}
},
- "node_modules/svelte-eslint-parser/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,
+ "node_modules/vega-loader/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
+ "safer-buffer": ">= 2.1.2 < 3"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": ">=0.10.0"
}
},
- "node_modules/svelte-eslint-parser/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
+ "node_modules/vega-parser": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.1.4.tgz",
+ "integrity": "sha512-tORdpWXiH/kkXcpNdbSVEvtaxBuuDtgYp9rBunVW9oLsjFvFXbSWlM1wvJ9ZFSaTfx6CqyTyGMiJemmr1QnTjQ==",
+ "dependencies": {
+ "vega-dataflow": "^5.7.3",
+ "vega-event-selector": "^3.0.0",
+ "vega-functions": "^5.12.1",
+ "vega-scale": "^7.1.1",
+ "vega-util": "^1.16.0"
}
},
- "node_modules/svelte-hmr": {
- "version": "0.15.3",
- "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz",
- "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==",
- "dev": true,
- "engines": {
- "node": "^12.20 || ^14.13.1 || >= 16"
- },
- "peerDependencies": {
- "svelte": "^3.19.0 || ^4.0.0"
- }
+ "node_modules/vega-parser/node_modules/vega-event-selector": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-3.0.1.tgz",
+ "integrity": "sha512-K5zd7s5tjr1LiOOkjGpcVls8GsH/f2CWCrWcpKy74gTCp+llCdwz0Enqo013ZlGaRNjfgD/o1caJRt3GSaec4A=="
},
- "node_modules/svelte-i18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-4.0.0.tgz",
- "integrity": "sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==",
+ "node_modules/vega-projection": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.5.tgz",
+ "integrity": "sha512-85kWcPv0zrrNfxescqHtSYpRknilrS0K3CVRZc7IYQxnLtL1oma9WEbrSr1LCmDoCP5hl2Z1kKbomPXkrQX5Ag==",
"dependencies": {
- "cli-color": "^2.0.3",
- "deepmerge": "^4.2.2",
- "esbuild": "^0.19.2",
- "estree-walker": "^2",
- "intl-messageformat": "^10.5.3",
- "sade": "^1.8.1",
- "tiny-glob": "^0.2.9"
- },
- "bin": {
- "svelte-i18n": "dist/cli.js"
- },
- "engines": {
- "node": ">= 16"
- },
- "peerDependencies": {
- "svelte": "^3 || ^4"
+ "d3-geo": "^2.0.1",
+ "d3-geo-projection": "^3.0.0"
}
},
- "node_modules/svelte-i18n/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/svelte-preprocess": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.2.tgz",
- "integrity": "sha512-XF0aliMAcYnP4hLETvB6HRAMnaL09ASYT1Z2I1Gwu0nz6xbdg/dSgAEthtFZJA4AKrNhFDFdmUDO+H9d/6xg5g==",
- "dev": true,
- "hasInstallScript": true,
+ "node_modules/vega-projection/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
"dependencies": {
- "@types/pug": "^2.0.6",
- "detect-indent": "^6.1.0",
- "magic-string": "^0.27.0",
- "sorcery": "^0.11.0",
- "strip-indent": "^3.0.0"
- },
- "engines": {
- "node": ">= 14.10.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.10.2",
- "coffeescript": "^2.5.1",
- "less": "^3.11.3 || ^4.0.0",
- "postcss": "^7 || ^8",
- "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0",
- "pug": "^3.0.0",
- "sass": "^1.26.8",
- "stylus": "^0.55.0",
- "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0",
- "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0",
- "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0"
- },
- "peerDependenciesMeta": {
- "@babel/core": {
- "optional": true
- },
- "coffeescript": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "postcss": {
- "optional": true
- },
- "postcss-load-config": {
- "optional": true
- },
- "pug": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "typescript": {
- "optional": true
- }
+ "internmap": "^1.0.0"
}
},
- "node_modules/svelte-preprocess/node_modules/magic-string": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
- "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
- "dev": true,
+ "node_modules/vega-projection/node_modules/d3-geo": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz",
+ "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.13"
- },
- "engines": {
- "node": ">=12"
+ "d3-array": "^2.5.0"
}
},
- "node_modules/svelte-skeleton": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/svelte-skeleton/-/svelte-skeleton-1.3.1.tgz",
- "integrity": "sha512-/dVf4Am8Rolo9DjQxmy8X8xXSKDzZWyGjf84CekWdQqvP+Y57lW1O8dxHUxqT1bGeER8ZMAOuyGEzx+gADEVWg=="
+ "node_modules/vega-projection/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
},
- "node_modules/svelte-transition": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/svelte-transition/-/svelte-transition-0.0.10.tgz",
- "integrity": "sha512-BN8XDA7dKyuh+Lmdn3vxCzJd3M7L4BLdRziIAJew2AiBFMcrJJg8srEMYYoTCOLtYJ2Oqlv3+3/K5b6uHM8LSg==",
- "peerDependencies": {
- "svelte": "^3.59.1 || ^4.0.0"
+ "node_modules/vega-regression": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.9.tgz",
+ "integrity": "sha512-KSr3QbCF0vJEAWFVY2MA9X786oiJncTTr3gqRMPoaLr/Yo3f7OPKXRoUcw36RiWa0WCOEMgTYtM28iK6ZuSgaA==",
+ "dependencies": {
+ "d3-array": "^2.7.1",
+ "vega-dataflow": "^5.7.3",
+ "vega-statistics": "^1.7.9",
+ "vega-util": "^1.15.2"
}
},
- "node_modules/svelte-windicss-preprocess": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/svelte-windicss-preprocess/-/svelte-windicss-preprocess-4.2.8.tgz",
- "integrity": "sha512-Z6pmFbHqJ19SgCiXiVRC/hlRBgZ/5LksMjPF3ilF/1HESP2L+secuaPjr3xOjJW67iZQpT2YdXzGe+MvdsJ6OQ==",
- "dev": true,
+ "node_modules/vega-regression/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
"dependencies": {
- "@iconify/json": "1.1.432",
- "fast-glob": "3.2.7",
- "unconfig": "0.2.2",
- "windicss": "3.5.4",
- "windicss-runtime-dom": "3.0.0"
+ "internmap": "^1.0.0"
}
},
- "node_modules/svelte-windicss-preprocess/node_modules/fast-glob": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz",
- "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
- "dev": true,
+ "node_modules/vega-regression/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/vega-runtime": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/vega-runtime/-/vega-runtime-6.1.4.tgz",
+ "integrity": "sha512-0dDYXyFLQcxPQ2OQU0WuBVYLRZnm+/CwVu6i6N4idS7R9VXIX5581EkCh3pZ20pQ/+oaA7oJ0pR9rJgJ6rukRQ==",
"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"
+ "vega-dataflow": "^5.7.5",
+ "vega-util": "^1.17.1"
}
},
- "node_modules/svelte-windicss-preprocess/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,
+ "node_modules/vega-runtime/node_modules/vega-util": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz",
+ "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw=="
+ },
+ "node_modules/vega-scale": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.1.1.tgz",
+ "integrity": "sha512-yE0to0prA9E5PBJ/XP77TO0BMkzyUVyt7TH5PAwj+CZT7PMsMO6ozihelRhoIiVcP0Ae/ByCEQBUQkzN5zJ0ZA==",
"dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
+ "d3-array": "^2.7.1",
+ "d3-interpolate": "^2.0.1",
+ "d3-scale": "^3.2.2",
+ "vega-time": "^2.0.4",
+ "vega-util": "^1.15.2"
}
},
- "node_modules/svelte/node_modules/aria-query": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
- "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
+ "node_modules/vega-scale/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
"dependencies": {
- "dequal": "^2.0.3"
+ "internmap": "^1.0.0"
}
},
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
- "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
- "dev": true
+ "node_modules/vega-scale/node_modules/d3-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz",
+ "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ=="
},
- "node_modules/tabbable": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
- "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
- "dev": true
+ "node_modules/vega-scale/node_modules/d3-format": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz",
+ "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA=="
},
- "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/vega-scale/node_modules/d3-interpolate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz",
+ "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==",
+ "dependencies": {
+ "d3-color": "1 - 2"
+ }
+ },
+ "node_modules/vega-scale/node_modules/d3-scale": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz",
+ "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==",
+ "dependencies": {
+ "d3-array": "^2.3.0",
+ "d3-format": "1 - 2",
+ "d3-interpolate": "1.2.0 - 2",
+ "d3-time": "^2.1.1",
+ "d3-time-format": "2 - 3"
+ }
},
- "node_modules/three": {
- "version": "0.152.2",
- "resolved": "https://registry.npmjs.org/three/-/three-0.152.2.tgz",
- "integrity": "sha512-Ff9zIpSfkkqcBcpdiFo2f35vA9ZucO+N8TNacJOqaEE6DrB0eufItVMib8bK8Pcju/ZNT6a7blE1GhTpkdsILw=="
+ "node_modules/vega-scale/node_modules/d3-time": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz",
+ "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==",
+ "dependencies": {
+ "d3-array": "2"
+ }
},
- "node_modules/timers-ext": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz",
- "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==",
+ "node_modules/vega-scale/node_modules/d3-time-format": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz",
+ "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==",
"dependencies": {
- "es5-ext": "~0.10.46",
- "next-tick": "1"
+ "d3-time": "1 - 2"
}
},
- "node_modules/tiny-glob": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
- "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
+ "node_modules/vega-scale/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/vega-scenegraph": {
+ "version": "4.9.4",
+ "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.4.tgz",
+ "integrity": "sha512-QaegQzbFE2yhYLNWAmHwAuguW3yTtQrmwvfxYT8tk0g+KKodrQ5WSmNrphWXhqwtsgVSvtdZkfp2IPeumcOQJg==",
"dependencies": {
- "globalyzer": "0.1.0",
- "globrex": "^0.1.2"
+ "d3-path": "^2.0.0",
+ "d3-shape": "^2.0.0",
+ "vega-canvas": "^1.2.5",
+ "vega-loader": "^4.3.3",
+ "vega-scale": "^7.1.1",
+ "vega-util": "^1.15.2"
}
},
- "node_modules/tinybench": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz",
- "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==",
- "dev": true
+ "node_modules/vega-scenegraph/node_modules/d3-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz",
+ "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA=="
},
- "node_modules/tinypool": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz",
- "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==",
- "dev": true,
- "engines": {
- "node": ">=14.0.0"
+ "node_modules/vega-scenegraph/node_modules/d3-shape": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz",
+ "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==",
+ "dependencies": {
+ "d3-path": "1 - 2"
}
},
- "node_modules/tinyspy": {
+ "node_modules/vega-schema-url-parser": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz",
- "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==",
- "dev": true,
- "engines": {
- "node": ">=14.0.0"
- }
+ "resolved": "https://registry.npmjs.org/vega-schema-url-parser/-/vega-schema-url-parser-2.2.0.tgz",
+ "integrity": "sha512-yAtdBnfYOhECv9YC70H2gEiqfIbVkq09aaE4y/9V/ovEFmH9gPKaEgzIZqgT7PSPQjKhsNkb6jk6XvSoboxOBw=="
},
- "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/vega-selections": {
+ "version": "5.4.2",
+ "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.4.2.tgz",
+ "integrity": "sha512-99FUhYmg0jOJr2/K4TcEURmJRkuibrCDc8KBUX7qcQEITzrZ5R6a4QE+sarCvbb3hi8aA9GV2oyST6MQeA9mgQ==",
+ "dependencies": {
+ "d3-array": "3.2.4",
+ "vega-expression": "^5.0.1",
+ "vega-util": "^1.17.1"
}
},
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
+ "node_modules/vega-selections/node_modules/vega-expression": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-5.1.1.tgz",
+ "integrity": "sha512-zv9L1Hm0KHE9M7mldHyz8sXbGu3KmC0Cdk7qfHkcTNS75Jpsem6jkbu6ZAwx5cNUeW91AxUQOu77r4mygq2wUQ==",
"dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
+ "@types/estree": "^1.0.0",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/tough-cookie": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
- "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
- "dev": true,
+ "node_modules/vega-selections/node_modules/vega-util": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz",
+ "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw=="
+ },
+ "node_modules/vega-statistics": {
+ "version": "1.7.10",
+ "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.10.tgz",
+ "integrity": "sha512-QLb12gcfpDZ9K5h3TLGrlz4UXDH9wSPyg9LLfOJZacxvvJEPohacUQNrGEAVtFO9ccUCerRfH9cs25ZtHsOZrw==",
"dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
- },
- "engines": {
- "node": ">=6"
+ "d3-array": "^2.7.1"
}
},
- "node_modules/tr46": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz",
- "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==",
- "dev": true,
+ "node_modules/vega-statistics/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
"dependencies": {
- "punycode": "^2.3.1"
- },
- "engines": {
- "node": ">=18"
+ "internmap": "^1.0.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=="
+ "node_modules/vega-statistics/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
},
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
+ "node_modules/vega-themes": {
+ "version": "2.15.0",
+ "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.15.0.tgz",
+ "integrity": "sha512-DicRAKG9z+23A+rH/3w3QjJvKnlGhSbbUXGjBvYGseZ1lvj9KQ0BXZ2NS/+MKns59LNpFNHGi9us/wMlci4TOA==",
"peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ "vega": "*",
+ "vega-lite": "*"
}
},
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
+ "node_modules/vega-time": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.4.tgz",
+ "integrity": "sha512-U314UDR9+ZlWrD3KBaeH+j/c2WSMdvcZq5yJfFT0yTg1jsBKAQBYFGvl+orackD8Zx3FveHOxx3XAObaQeDX+Q==",
+ "dependencies": {
+ "d3-array": "^2.7.1",
+ "d3-time": "^2.0.0",
+ "vega-util": "^1.15.2"
+ }
},
- "node_modules/type": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
- "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+ "node_modules/vega-time/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
+ }
},
- "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,
+ "node_modules/vega-time/node_modules/d3-time": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz",
+ "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==",
"dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
+ "d3-array": "2"
}
},
- "node_modules/type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node_modules/vega-time/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/vega-tooltip": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.25.1.tgz",
+ "integrity": "sha512-ugGwGi2/p3OpB8N15xieuzP8DyV5DreqMWcmJ9zpWT8GlkyKtef4dGRXnvHeHQ+iJFmWrq4oZJ+kLTrdiECjAg==",
+ "dependencies": {
+ "vega-util": "^1.16.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/vega-transforms": {
+ "version": "4.9.4",
+ "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.4.tgz",
+ "integrity": "sha512-JGBhm5Bf6fiGTUSB5Qr5ckw/KU9FJcSV5xIe/y4IobM/i/KNwI1i1fP45LzP4F4yZc0DMTwJod2UvFHGk9plKA==",
+ "dependencies": {
+ "d3-array": "^2.7.1",
+ "vega-dataflow": "^5.7.4",
+ "vega-statistics": "^1.7.9",
+ "vega-time": "^2.0.4",
+ "vega-util": "^1.16.1"
}
},
- "node_modules/typescript": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
- "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
+ "node_modules/vega-transforms/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
}
},
- "node_modules/ufo": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz",
- "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==",
- "dev": true
+ "node_modules/vega-transforms/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
},
- "node_modules/unconfig": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-0.2.2.tgz",
- "integrity": "sha512-JN1MeYJ/POnjBj7NgOJJxPp6+NcD6Nd0hEuK0D89kjm9GvQQUq8HeE2Eb7PZgtu+64mWkDiqeJn1IZoLH7htPg==",
- "dev": true,
+ "node_modules/vega-typings": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.20.0.tgz",
+ "integrity": "sha512-S+HIRN/3WYiS5zrQjJ4FDEOlvFVHLxPXMJerrnN3YZ6bxCDYo7tEvQUUuByGZ3d19GuKjgejczWS7XHvF3WjDw==",
"dependencies": {
- "@antfu/utils": "^0.3.0",
- "defu": "^5.0.0",
- "jiti": "^1.12.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "vega-util": "^1.15.2"
}
},
- "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=="
+ "node_modules/vega-util": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.1.tgz",
+ "integrity": "sha512-FdgD72fmZMPJE99FxvFXth0IL4BbLA93WmBg/lvcJmfkK4Uf90WIlvGwaIUdSePIsdpkZjBPyQcHMQ8OcS8Smg=="
},
- "node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
- "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node_modules/vega-view": {
+ "version": "5.10.1",
+ "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.10.1.tgz",
+ "integrity": "sha512-4xvQ5KZcgKdZx1Z7jjenCUumvlyr/j4XcHLRf9gyeFrFvvS596dVpL92V8twhV6O++DmS2+fj+rHagO8Di4nMg==",
+ "dependencies": {
+ "d3-array": "^2.7.1",
+ "d3-timer": "^2.0.0",
+ "vega-dataflow": "^5.7.3",
+ "vega-format": "^1.0.4",
+ "vega-functions": "^5.10.0",
+ "vega-runtime": "^6.1.3",
+ "vega-scenegraph": "^4.9.4",
+ "vega-util": "^1.16.1"
}
},
- "node_modules/unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
+ "node_modules/vega-view-transforms": {
+ "version": "4.5.9",
+ "resolved": "https://registry.npmjs.org/vega-view-transforms/-/vega-view-transforms-4.5.9.tgz",
+ "integrity": "sha512-NxEq4ZD4QwWGRrl2yDLnBRXM9FgCI+vvYb3ZC2+nVDtkUxOlEIKZsMMw31op5GZpfClWLbjCT3mVvzO2xaTF+g==",
"dependencies": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
+ "vega-dataflow": "^5.7.5",
+ "vega-scenegraph": "^4.10.2",
+ "vega-util": "^1.17.1"
}
},
- "node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
- "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node_modules/vega-view-transforms/node_modules/vega-format": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.1.2.tgz",
+ "integrity": "sha512-0kUfAj0dg0U6GcEY0Kp6LiSTCZ8l8jl1qVdQyToMyKmtZg/q56qsiJQZy3WWRr1MtWkTIZL71xSJXgjwjeUaAw==",
+ "dependencies": {
+ "d3-array": "^3.2.2",
+ "d3-format": "^3.1.0",
+ "d3-time-format": "^4.1.0",
+ "vega-time": "^2.1.2",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
- "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
- "dev": true,
- "engines": {
- "node": ">=4"
+ "node_modules/vega-view-transforms/node_modules/vega-loader": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.5.2.tgz",
+ "integrity": "sha512-ktIdGz3DRIS3XfTP9lJ6oMT5cKwC86nQkjUbXZbOtwXQFVNE2xVWBuH13GP6FKUZxg5hJCMtb5v/e/fwTvhKsQ==",
+ "dependencies": {
+ "d3-dsv": "^3.0.1",
+ "node-fetch": "^2.6.7",
+ "topojson-client": "^3.1.0",
+ "vega-format": "^1.1.2",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/universalify": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
- "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
+ "node_modules/vega-view-transforms/node_modules/vega-scale": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.4.1.tgz",
+ "integrity": "sha512-dArA28DbV/M92O2QvswnzCmQ4bq9WwLKUoyhqFYWCltmDwkmvX7yhqiFLFMWPItIm7mi4Qyoygby6r4DKd1X2A==",
+ "dependencies": {
+ "d3-array": "^3.2.2",
+ "d3-interpolate": "^3.0.1",
+ "d3-scale": "^4.0.2",
+ "d3-scale-chromatic": "^3.1.0",
+ "vega-time": "^2.1.2",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/unplugin": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.1.tgz",
- "integrity": "sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==",
- "dev": true,
+ "node_modules/vega-view-transforms/node_modules/vega-scenegraph": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.13.0.tgz",
+ "integrity": "sha512-nfl45XtuqB5CxyIZJ+bbJ+dofzosPCRlmF+eUQo+0J23NkNXsTzur+1krJDSdhcw0SOYs4sbYRoMz1cpuOM4+Q==",
"dependencies": {
- "acorn": "^8.11.2",
- "chokidar": "^3.5.3",
- "webpack-sources": "^3.2.3",
- "webpack-virtual-modules": "^0.6.0"
+ "d3-path": "^3.1.0",
+ "d3-shape": "^3.2.0",
+ "vega-canvas": "^1.2.7",
+ "vega-loader": "^4.5.2",
+ "vega-scale": "^7.4.1",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/unplugin-icons": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.18.1.tgz",
- "integrity": "sha512-WzKu/eoq74YC7vyEAGsFebkRzsZrRkR4FUzLU6gbpfa7WRaVVpQS2n7LSxE1iRUN0scKL5b9bq+i0wucR+ttFQ==",
- "dev": true,
+ "node_modules/vega-view-transforms/node_modules/vega-time": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.2.tgz",
+ "integrity": "sha512-6rXc6JdDt8MnCRy6UzUCsa6EeFycPDmvioMddLfKw38OYCV8pRQC5nw44gyddOwXgUTJLiCtn/sp53P0iA542A==",
"dependencies": {
- "@antfu/install-pkg": "^0.3.0",
- "@antfu/utils": "^0.7.6",
- "@iconify/utils": "^2.1.12",
- "debug": "^4.3.4",
- "kolorist": "^1.8.0",
- "local-pkg": "^0.5.0",
- "unplugin": "^1.5.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- },
- "peerDependencies": {
- "@svgr/core": ">=7.0.0",
- "@svgx/core": "^1.0.1",
- "@vue/compiler-sfc": "^3.0.2 || ^2.7.0",
- "vue-template-compiler": "^2.6.12",
- "vue-template-es2015-compiler": "^1.9.0"
- },
- "peerDependenciesMeta": {
- "@svgr/core": {
- "optional": true
- },
- "@svgx/core": {
- "optional": true
- },
- "@vue/compiler-sfc": {
- "optional": true
- },
- "vue-template-compiler": {
- "optional": true
- },
- "vue-template-es2015-compiler": {
- "optional": true
- }
+ "d3-array": "^3.2.2",
+ "d3-time": "^3.1.0",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/unplugin-icons/node_modules/@antfu/utils": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz",
- "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/antfu"
+ "node_modules/vega-view-transforms/node_modules/vega-util": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz",
+ "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw=="
+ },
+ "node_modules/vega-view/node_modules/d3-array": {
+ "version": "2.12.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz",
+ "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==",
+ "dependencies": {
+ "internmap": "^1.0.0"
}
},
- "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==",
- "dev": 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"
- }
- ],
+ "node_modules/vega-view/node_modules/d3-timer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz",
+ "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA=="
+ },
+ "node_modules/vega-view/node_modules/internmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz",
+ "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="
+ },
+ "node_modules/vega-voronoi": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.5.tgz",
+ "integrity": "sha512-950IkgCFLj0zG33EWLAm1hZcp+FMqWcNQliMYt+MJzOD5S4MSpZpZ7K4wp2M1Jktjw/CLKFL9n38JCI0i3UonA==",
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
+ "d3-delaunay": "^5.3.0",
+ "vega-dataflow": "^5.7.3",
+ "vega-util": "^1.15.2"
}
},
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
+ "node_modules/vega-voronoi/node_modules/d3-delaunay": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz",
+ "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==",
"dependencies": {
- "punycode": "^2.1.0"
+ "delaunator": "4"
+ }
+ },
+ "node_modules/vega-voronoi/node_modules/delaunator": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz",
+ "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag=="
+ },
+ "node_modules/vega-wordcloud": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/vega-wordcloud/-/vega-wordcloud-4.1.5.tgz",
+ "integrity": "sha512-p+qXU3cb9VeWzJ/HEdax0TX2mqDJcSbrCIfo2d/EalOXGkvfSLKobsmMQ8DxPbtVp0uhnpvfCGDyMJw+AzcI2A==",
+ "dependencies": {
+ "vega-canvas": "^1.2.7",
+ "vega-dataflow": "^5.7.6",
+ "vega-scale": "^7.4.1",
+ "vega-statistics": "^1.9.0",
+ "vega-util": "^1.17.2"
+ }
+ },
+ "node_modules/vega-wordcloud/node_modules/vega-scale": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.4.1.tgz",
+ "integrity": "sha512-dArA28DbV/M92O2QvswnzCmQ4bq9WwLKUoyhqFYWCltmDwkmvX7yhqiFLFMWPItIm7mi4Qyoygby6r4DKd1X2A==",
+ "dependencies": {
+ "d3-array": "^3.2.2",
+ "d3-interpolate": "^3.0.1",
+ "d3-scale": "^4.0.2",
+ "d3-scale-chromatic": "^3.1.0",
+ "vega-time": "^2.1.2",
+ "vega-util": "^1.17.2"
}
},
- "node_modules/url-parse": {
- "version": "1.5.10",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
- "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
- "dev": true,
+ "node_modules/vega-wordcloud/node_modules/vega-statistics": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.9.0.tgz",
+ "integrity": "sha512-GAqS7mkatpXcMCQKWtFu1eMUKLUymjInU0O8kXshWaQrVWjPIO2lllZ1VNhdgE0qGj4oOIRRS11kzuijLshGXQ==",
"dependencies": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
+ "d3-array": "^3.2.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==",
- "dev": true
+ "node_modules/vega-wordcloud/node_modules/vega-time": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.1.2.tgz",
+ "integrity": "sha512-6rXc6JdDt8MnCRy6UzUCsa6EeFycPDmvioMddLfKw38OYCV8pRQC5nw44gyddOwXgUTJLiCtn/sp53P0iA542A==",
+ "dependencies": {
+ "d3-array": "^3.2.2",
+ "d3-time": "^3.1.0",
+ "vega-util": "^1.17.2"
+ }
},
- "node_modules/uuid4": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/uuid4/-/uuid4-2.0.3.tgz",
- "integrity": "sha512-CTpAkEVXMNJl2ojgtpLXHgz23dh8z81u6/HEPiQFOvBc/c2pde6TVHmH4uwY0d/GLF3tb7+VDAj4+2eJaQSdZQ=="
+ "node_modules/vega-wordcloud/node_modules/vega-util": {
+ "version": "1.17.2",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.17.2.tgz",
+ "integrity": "sha512-omNmGiZBdjm/jnHjZlywyYqafscDdHaELHx1q96n5UOz/FlO9JO99P4B3jZg391EFG8dqhWjQilSf2JH6F1mIw=="
},
"node_modules/vite": {
- "version": "5.0.10",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz",
- "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==",
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.5.tgz",
+ "integrity": "sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==",
"dev": true,
"dependencies": {
"esbuild": "^0.19.3",
- "postcss": "^8.4.32",
+ "postcss": "^8.4.35",
"rollup": "^4.2.0"
},
"bin": {
@@ -9487,9 +14550,9 @@
}
},
"node_modules/vite-node": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.0.4.tgz",
- "integrity": "sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.0.tgz",
+ "integrity": "sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==",
"dev": true,
"dependencies": {
"cac": "^6.7.14",
@@ -9508,63 +14571,62 @@
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/vite-plugin-windicss": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/vite-plugin-windicss/-/vite-plugin-windicss-1.9.3.tgz",
- "integrity": "sha512-PqNiIsrEftCrgn0xIpj8ZMSdpz8NZn+OJ3gKXnOF+hFzbHFrKGJA49ViOUKCHDOquxoGBZMmTjepWr8GrftKcQ==",
+ "node_modules/vite-plugin-pwa": {
+ "version": "0.19.8",
+ "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.19.8.tgz",
+ "integrity": "sha512-e1oK0dfhzhDhY3VBuML6c0h8Xfx6EkOVYqolj7g+u8eRfdauZe5RLteCIA/c5gH0CBQ0CNFAuv/AFTx4Z7IXTw==",
"dev": true,
"dependencies": {
- "@windicss/plugin-utils": "1.9.3",
"debug": "^4.3.4",
- "kolorist": "^1.8.0",
- "windicss": "^3.5.6"
+ "fast-glob": "^3.3.2",
+ "pretty-bytes": "^6.1.1",
+ "workbox-build": "^7.0.0",
+ "workbox-window": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
- "vite": "^2.0.1 || ^3.0.0 || ^4.0.0 || ^5.0.0"
- }
- },
- "node_modules/vite-plugin-windicss/node_modules/windicss": {
- "version": "3.5.6",
- "resolved": "https://registry.npmjs.org/windicss/-/windicss-3.5.6.tgz",
- "integrity": "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==",
- "dev": true,
- "bin": {
- "windicss": "cli/index.js"
+ "@vite-pwa/assets-generator": "^0.2.4",
+ "vite": "^3.1.0 || ^4.0.0 || ^5.0.0",
+ "workbox-build": "^7.0.0",
+ "workbox-window": "^7.0.0"
},
- "engines": {
- "node": ">= 12"
+ "peerDependenciesMeta": {
+ "@vite-pwa/assets-generator": {
+ "optional": true
+ }
}
},
- "node_modules/vitefu": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
- "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==",
+ "node_modules/vite-plugin-svgr": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz",
+ "integrity": "sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==",
"dev": true,
- "peerDependencies": {
- "vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.5",
+ "@svgr/core": "^8.1.0",
+ "@svgr/plugin-jsx": "^8.1.0"
},
- "peerDependenciesMeta": {
- "vite": {
- "optional": true
- }
+ "peerDependencies": {
+ "vite": "^2.6.0 || 3 || 4 || 5"
}
},
"node_modules/vitest": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.0.4.tgz",
- "integrity": "sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz",
+ "integrity": "sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==",
"dev": true,
"dependencies": {
- "@vitest/expect": "1.0.4",
- "@vitest/runner": "1.0.4",
- "@vitest/snapshot": "1.0.4",
- "@vitest/spy": "1.0.4",
- "@vitest/utils": "1.0.4",
- "acorn-walk": "^8.3.0",
- "cac": "^6.7.14",
+ "@vitest/expect": "1.6.0",
+ "@vitest/runner": "1.6.0",
+ "@vitest/snapshot": "1.6.0",
+ "@vitest/spy": "1.6.0",
+ "@vitest/utils": "1.6.0",
+ "acorn-walk": "^8.3.2",
"chai": "^4.3.10",
"debug": "^4.3.4",
"execa": "^8.0.1",
@@ -9573,11 +14635,11 @@
"pathe": "^1.1.1",
"picocolors": "^1.0.0",
"std-env": "^3.5.0",
- "strip-literal": "^1.3.0",
+ "strip-literal": "^2.0.0",
"tinybench": "^2.5.1",
- "tinypool": "^0.8.1",
+ "tinypool": "^0.8.3",
"vite": "^5.0.0",
- "vite-node": "1.0.4",
+ "vite-node": "1.6.0",
"why-is-node-running": "^2.2.2"
},
"bin": {
@@ -9592,8 +14654,8 @@
"peerDependencies": {
"@edge-runtime/vm": "*",
"@types/node": "^18.0.0 || >=20.0.0",
- "@vitest/browser": "^1.0.0",
- "@vitest/ui": "^1.0.0",
+ "@vitest/browser": "1.6.0",
+ "@vitest/ui": "1.6.0",
"happy-dom": "*",
"jsdom": "*"
},
@@ -9635,15 +14697,6 @@
"vitest": ">=0.31.0"
}
},
- "node_modules/vitest-dom/node_modules/aria-query": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
- "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
- "dev": true,
- "dependencies": {
- "dequal": "^2.0.3"
- }
- },
"node_modules/vitest-dom/node_modules/chalk": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
@@ -9683,21 +14736,6 @@
"node": ">=12"
}
},
- "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==",
- "dev": true,
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/webpack-virtual-modules": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz",
- "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==",
- "dev": true
- },
"node_modules/whatwg-encoding": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
@@ -9710,6 +14748,11 @@
"node": ">=18"
}
},
+ "node_modules/whatwg-fetch": {
+ "version": "3.6.20",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
+ "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="
+ },
"node_modules/whatwg-mimetype": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
@@ -9763,32 +14806,66 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/which-builtin-type": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
+ "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
+ "dev": true,
+ "dependencies": {
+ "function.prototype.name": "^1.1.5",
+ "has-tostringtag": "^1.0.0",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.0.5",
+ "is-finalizationregistry": "^1.0.2",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.1.4",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.0.2",
+ "which-collection": "^1.0.1",
+ "which-typed-array": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/which-collection": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
- "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
"dev": true,
"dependencies": {
- "is-map": "^2.0.1",
- "is-set": "^2.0.1",
- "is-weakmap": "^2.0.1",
- "is-weakset": "^2.0.1"
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+ },
"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==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
+ "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
"dev": true,
"dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.4",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.7",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
+ "has-tostringtag": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
@@ -9813,25 +14890,382 @@
"node": ">=8"
}
},
- "node_modules/windicss": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/windicss/-/windicss-3.5.4.tgz",
- "integrity": "sha512-x2Iu0a69dtNiKHMkR886lx0WKbZI5GqvXyvGBCJ2VA6rcjKYjnzCA/Ljd6hNQBfqlkSum8J+qAVcCfLzQFI4rQ==",
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
- "bin": {
- "windicss": "cli/index.js"
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/workbox-background-sync": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.1.0.tgz",
+ "integrity": "sha512-rMbgrzueVWDFcEq1610YyDW71z0oAXLfdRHRQcKw4SGihkfOK0JUEvqWHFwA6rJ+6TClnMIn7KQI5PNN1XQXwQ==",
+ "dev": true,
+ "dependencies": {
+ "idb": "^7.0.1",
+ "workbox-core": "7.1.0"
+ }
+ },
+ "node_modules/workbox-broadcast-update": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.1.0.tgz",
+ "integrity": "sha512-O36hIfhjej/c5ar95pO67k1GQw0/bw5tKP7CERNgK+JdxBANQhDmIuOXZTNvwb2IHBx9hj2kxvcDyRIh5nzOgQ==",
+ "dev": true,
+ "dependencies": {
+ "workbox-core": "7.1.0"
+ }
+ },
+ "node_modules/workbox-build": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.1.1.tgz",
+ "integrity": "sha512-WdkVdC70VMpf5NBCtNbiwdSZeKVuhTEd5PV3mAwpTQCGAB5XbOny1P9egEgNdetv4srAMmMKjvBk4RD58LpooA==",
+ "dev": true,
+ "dependencies": {
+ "@apideck/better-ajv-errors": "^0.3.1",
+ "@babel/core": "^7.24.4",
+ "@babel/preset-env": "^7.11.0",
+ "@babel/runtime": "^7.11.2",
+ "@rollup/plugin-babel": "^5.2.0",
+ "@rollup/plugin-node-resolve": "^15.2.3",
+ "@rollup/plugin-replace": "^2.4.1",
+ "@rollup/plugin-terser": "^0.4.3",
+ "@surma/rollup-plugin-off-main-thread": "^2.2.3",
+ "ajv": "^8.6.0",
+ "common-tags": "^1.8.0",
+ "fast-json-stable-stringify": "^2.1.0",
+ "fs-extra": "^9.0.1",
+ "glob": "^7.1.6",
+ "lodash": "^4.17.20",
+ "pretty-bytes": "^5.3.0",
+ "rollup": "^2.43.1",
+ "source-map": "^0.8.0-beta.0",
+ "stringify-object": "^3.3.0",
+ "strip-comments": "^2.0.1",
+ "tempy": "^0.6.0",
+ "upath": "^1.2.0",
+ "workbox-background-sync": "7.1.0",
+ "workbox-broadcast-update": "7.1.0",
+ "workbox-cacheable-response": "7.1.0",
+ "workbox-core": "7.1.0",
+ "workbox-expiration": "7.1.0",
+ "workbox-google-analytics": "7.1.0",
+ "workbox-navigation-preload": "7.1.0",
+ "workbox-precaching": "7.1.0",
+ "workbox-range-requests": "7.1.0",
+ "workbox-recipes": "7.1.0",
+ "workbox-routing": "7.1.0",
+ "workbox-strategies": "7.1.0",
+ "workbox-streams": "7.1.0",
+ "workbox-sw": "7.1.0",
+ "workbox-window": "7.1.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
+ "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
+ "dev": true,
+ "dependencies": {
+ "json-schema": "^0.4.0",
+ "jsonpointer": "^5.0.0",
+ "leven": "^3.1.0"
},
"engines": {
- "node": ">= 12"
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "ajv": ">=8"
}
},
- "node_modules/windicss-runtime-dom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/windicss-runtime-dom/-/windicss-runtime-dom-3.0.0.tgz",
- "integrity": "sha512-a12Uhu71yT1U8w0PzJ3amF9xmC8b1rWFLgXEfI/UyuwUi6D1vUACOO6vb0iY4T4OtP/bJAjQMM7lv3hMWSwLuQ==",
+ "node_modules/workbox-build/node_modules/@rollup/plugin-babel": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
+ "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.10.4",
+ "@rollup/pluginutils": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "@types/babel__core": "^7.1.9",
+ "rollup": "^1.20.0||^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/babel__core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/workbox-build/node_modules/@rollup/plugin-replace": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
+ "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^3.1.0",
+ "magic-string": "^0.25.7"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0 || ^2.0.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/@rollup/pluginutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+ "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+ "dev": true,
+ "dependencies": {
+ "@types/estree": "0.0.39",
+ "estree-walker": "^1.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/@types/estree": {
+ "version": "0.0.39",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+ "dev": true
+ },
+ "node_modules/workbox-build/node_modules/ajv": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz",
+ "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
"dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.4.1"
+ },
"funding": {
- "url": "https://github.com/sponsors/antfu"
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/workbox-build/node_modules/estree-walker": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+ "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+ "dev": true
+ },
+ "node_modules/workbox-build/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true
+ },
+ "node_modules/workbox-build/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==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/workbox-build/node_modules/pretty-bytes": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/workbox-build/node_modules/rollup": {
+ "version": "2.79.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+ "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/workbox-build/node_modules/source-map": {
+ "version": "0.8.0-beta.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+ "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/workbox-build/node_modules/tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/workbox-build/node_modules/webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "node_modules/workbox-build/node_modules/whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "dependencies": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "node_modules/workbox-cacheable-response": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.1.0.tgz",
+ "integrity": "sha512-iwsLBll8Hvua3xCuBB9h92+/e0wdsmSVgR2ZlvcfjepZWwhd3osumQB3x9o7flj+FehtWM2VHbZn8UJeBXXo6Q==",
+ "dev": true,
+ "dependencies": {
+ "workbox-core": "7.1.0"
+ }
+ },
+ "node_modules/workbox-core": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.1.0.tgz",
+ "integrity": "sha512-5KB4KOY8rtL31nEF7BfvU7FMzKT4B5TkbYa2tzkS+Peqj0gayMT9SytSFtNzlrvMaWgv6y/yvP9C0IbpFjV30Q==",
+ "dev": true
+ },
+ "node_modules/workbox-expiration": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.1.0.tgz",
+ "integrity": "sha512-m5DcMY+A63rJlPTbbBNtpJ20i3enkyOtSgYfv/l8h+D6YbbNiA0zKEkCUaMsdDlxggla1oOfRkyqTvl5Ni5KQQ==",
+ "dev": true,
+ "dependencies": {
+ "idb": "^7.0.1",
+ "workbox-core": "7.1.0"
+ }
+ },
+ "node_modules/workbox-google-analytics": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.1.0.tgz",
+ "integrity": "sha512-FvE53kBQHfVTcZyczeBVRexhh7JTkyQ8HAvbVY6mXd2n2A7Oyz/9fIwnY406ZcDhvE4NFfKGjW56N4gBiqkrew==",
+ "dev": true,
+ "dependencies": {
+ "workbox-background-sync": "7.1.0",
+ "workbox-core": "7.1.0",
+ "workbox-routing": "7.1.0",
+ "workbox-strategies": "7.1.0"
+ }
+ },
+ "node_modules/workbox-navigation-preload": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.1.0.tgz",
+ "integrity": "sha512-4wyAbo0vNI/X0uWNJhCMKxnPanNyhybsReMGN9QUpaePLTiDpKxPqFxl4oUmBNddPwIXug01eTSLVIFXimRG/A==",
+ "dev": true,
+ "dependencies": {
+ "workbox-core": "7.1.0"
+ }
+ },
+ "node_modules/workbox-precaching": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.1.0.tgz",
+ "integrity": "sha512-LyxzQts+UEpgtmfnolo0hHdNjoB7EoRWcF7EDslt+lQGd0lW4iTvvSe3v5JiIckQSB5KTW5xiCqjFviRKPj1zA==",
+ "dev": true,
+ "dependencies": {
+ "workbox-core": "7.1.0",
+ "workbox-routing": "7.1.0",
+ "workbox-strategies": "7.1.0"
+ }
+ },
+ "node_modules/workbox-range-requests": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.1.0.tgz",
+ "integrity": "sha512-m7+O4EHolNs5yb/79CrnwPR/g/PRzMFYEdo01LqwixVnc/sbzNSvKz0d04OE3aMRel1CwAAZQheRsqGDwATgPQ==",
+ "dev": true,
+ "dependencies": {
+ "workbox-core": "7.1.0"
+ }
+ },
+ "node_modules/workbox-recipes": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.1.0.tgz",
+ "integrity": "sha512-NRrk4ycFN9BHXJB6WrKiRX3W3w75YNrNrzSX9cEZgFB5ubeGoO8s/SDmOYVrFYp9HMw6sh1Pm3eAY/1gVS8YLg==",
+ "dev": true,
+ "dependencies": {
+ "workbox-cacheable-response": "7.1.0",
+ "workbox-core": "7.1.0",
+ "workbox-expiration": "7.1.0",
+ "workbox-precaching": "7.1.0",
+ "workbox-routing": "7.1.0",
+ "workbox-strategies": "7.1.0"
+ }
+ },
+ "node_modules/workbox-routing": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.1.0.tgz",
+ "integrity": "sha512-oOYk+kLriUY2QyHkIilxUlVcFqwduLJB7oRZIENbqPGeBP/3TWHYNNdmGNhz1dvKuw7aqvJ7CQxn27/jprlTdg==",
+ "dev": true,
+ "dependencies": {
+ "workbox-core": "7.1.0"
+ }
+ },
+ "node_modules/workbox-strategies": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.1.0.tgz",
+ "integrity": "sha512-/UracPiGhUNehGjRm/tLUQ+9PtWmCbRufWtV0tNrALuf+HZ4F7cmObSEK+E4/Bx1p8Syx2tM+pkIrvtyetdlew==",
+ "dev": true,
+ "dependencies": {
+ "workbox-core": "7.1.0"
+ }
+ },
+ "node_modules/workbox-streams": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.1.0.tgz",
+ "integrity": "sha512-WyHAVxRXBMfysM8ORwiZnI98wvGWTVAq/lOyBjf00pXFvG0mNaVz4Ji+u+fKa/mf1i2SnTfikoYKto4ihHeS6w==",
+ "dev": true,
+ "dependencies": {
+ "workbox-core": "7.1.0",
+ "workbox-routing": "7.1.0"
+ }
+ },
+ "node_modules/workbox-sw": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.1.0.tgz",
+ "integrity": "sha512-Hml/9+/njUXBglv3dtZ9WBKHI235AQJyLBV1G7EFmh4/mUdSQuXui80RtjDeVRrXnm/6QWgRUEHG3/YBVbxtsA==",
+ "dev": true
+ },
+ "node_modules/workbox-window": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.1.0.tgz",
+ "integrity": "sha512-ZHeROyqR+AS5UPzholQRDttLFqGMwP0Np8MKWAdyxsDETxq3qOAyXvqessc3GniohG6e0mAqSQyKOHmT8zPF7g==",
+ "dev": true,
+ "dependencies": {
+ "@types/trusted-types": "^2.0.2",
+ "workbox-core": "7.1.0"
}
},
"node_modules/wrap-ansi": {
@@ -9887,9 +15321,9 @@
"dev": true
},
"node_modules/ws": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"dev": true,
"engines": {
"node": ">=10.0.0"
@@ -9940,7 +15374,6 @@
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true,
"engines": {
"node": ">= 6"
}
@@ -9981,6 +15414,33 @@
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
+ },
+ "node_modules/zustand": {
+ "version": "4.5.5",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.5.tgz",
+ "integrity": "sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q==",
+ "dependencies": {
+ "use-sync-external-store": "1.2.2"
+ },
+ "engines": {
+ "node": ">=12.7.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">=16.8",
+ "immer": ">=9.0.6",
+ "react": ">=16.8"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "immer": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ }
+ }
}
}
}
diff --git a/package.json b/package.json
index dae6107e1..1d2a83ebf 100644
--- a/package.json
+++ b/package.json
@@ -1,73 +1,85 @@
{
- "name": "ml-machine",
+ "name": "ai-creator",
"version": "0.6.0-local",
"author": "Center for Computational Thinking and Design at Aarhus University",
"private": true,
"type": "module",
"license": "MIT",
"scripts": {
- "build": "VITE_VERSION=$npm_package_version vite build",
- "dev": "VITE_VERSION=$npm_package_version vite",
- "start": "vite dist --host",
- "check": "svelte-check --tsconfig ./tsconfig.json",
+ "build": "tsc && cross-env VITE_VERSION=$npm_package_version vite build",
+ "ci": "npm run test && npm run lint && npm run build && npx prettier --check src",
+ "deploy": "website-deploy-aws",
+ "dev": "cross-env VITE_VERSION=$npm_package_version vite",
+ "invalidate": "invalidate-cloudfront-distribution",
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
+ "postinstall": "npm run theme",
+ "preview": "vite preview",
+ "start": "vite dev",
"test": "vitest",
- "prettier": "prettier --write src/."
+ "test:e2e": "playwright test --headed",
+ "test:e2e:headless": "playwright test",
+ "theme:watch": "chakra-cli tokens src/deployment/default/theme.ts --watch",
+ "theme": "chakra-cli tokens src/deployment/default/theme.ts",
+ "i18n:compile": "node bin/tidy-lang.cjs && formatjs compile-folder --ast lang src/messages"
},
"devDependencies": {
- "@babel/preset-env": "^7.23.5",
- "@bulatdashiev/svelte-slider": "^1.0.3",
- "@iconify-json/mdi": "^1.1.63",
- "@iconify-json/ri": "^1.1.17",
- "@melt-ui/pp": "^0.3.0",
- "@melt-ui/svelte": "^0.70.0",
- "@sveltejs/vite-plugin-svelte": "^3.0.1",
- "@testing-library/jest-dom": "^6.2.0",
- "@testing-library/svelte": "^4.0.5",
- "@tsconfig/svelte": "^4.0.1",
- "@types/browser-lang": "^0.1.1",
+ "@chakra-ui/cli": "^2.4.1",
+ "@formatjs/cli": "^6.2.7",
+ "@playwright/test": "^1.42.1",
+ "@testing-library/jest-dom": "^5.14.1",
+ "@testing-library/react": "^14.0.0",
+ "@testing-library/user-event": "^14.0.0",
"@types/d3": "^7.4.1",
- "@types/js-cookie": "^3.0.3",
+ "@types/ejs": "^3.1.5",
+ "@types/lodash.camelcase": "^4.3.9",
+ "@types/lodash.upperfirst": "^4.3.9",
"@types/node": "^18.16.0",
- "@types/three": "^0.152.0",
- "@types/w3c-web-usb": "^1.0.6",
- "@types/web-bluetooth": "^0.0.17",
- "@typescript-eslint/eslint-plugin": "^5.59.0",
- "@typescript-eslint/parser": "^5.59.0",
- "eslint": "^8.43.0",
- "eslint-plugin-svelte": "^2.32.1",
- "jsdom": "^23.2.0",
- "prettier": "^3.1.0",
- "prettier-plugin-svelte": "^3.1.2",
- "svelte": "^4.0.0",
- "svelte-check": "^3.6.2",
- "svelte-preprocess": "^5.0.3",
- "svelte-windicss-preprocess": "^4.2.2",
- "tslib": "^2.5.0",
- "typescript": "^5.0.4",
- "unplugin-icons": "^0.18.1",
- "vite": "^5.0.7",
- "vite-plugin-windicss": "^1.9.3",
- "vitest": "^1.0.4",
+ "@types/react": "^18.3.3",
+ "@types/react-dom": "^18.3.0",
+ "@typescript-eslint/eslint-plugin": "^7.2.0",
+ "@typescript-eslint/parser": "^7.2.0",
+ "@vitejs/plugin-react": "^4.2.1",
+ "cross-env": "^7.0.3",
+ "ejs": "^3.1.9",
+ "eslint": "^8.57.0",
+ "eslint-plugin-react": "^7.34.0",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "eslint-plugin-react-refresh": "^0.4.6",
+ "jsdom": "^24.0.0",
+ "playwright": "^1.42.1",
+ "prettier": "2.8.8",
+ "typescript": "^5.4.2",
+ "vite": "^5.1.5",
+ "vite-plugin-pwa": "^0.19.8",
+ "vite-plugin-svgr": "^4.2.0",
+ "vitest": "^1.3.1",
"vitest-dom": "^0.1.1"
},
"dependencies": {
- "@microsoft/applicationinsights-web": "^3.0.0",
- "@sentry/svelte": "^7.100.1",
- "@tensorflow/tfjs": "^4.4.0",
+ "@chakra-ui/icons": "^2.1.1",
+ "@chakra-ui/react": "^2.8.2",
+ "@emotion/react": "^11.11.4",
+ "@emotion/styled": "^11.11.5",
+ "@microbit/makecode-embed": "^0.0.0-alpha.7",
+ "@microbit/microbit-connection": "^0.0.0-alpha.21",
+ "@microbit/ml-header-generator": "^0.4.3",
+ "@tensorflow/tfjs": "^4.20.0",
"@types/w3c-web-serial": "^1.0.6",
"@types/w3c-web-usb": "^1.0.6",
+ "@vitejs/plugin-react": "^4.3.1",
"bowser": "^2.11.0",
- "browser-lang": "^0.2.1",
"chart.js": "^4.2.1",
- "d3": "^7.8.5",
- "dapjs": "^2.3.0",
- "js-cookie": "^3.0.4",
- "postcss": "^8.4.23",
+ "framer-motion": "^10.2.4",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.upperfirst": "^4.3.1",
+ "ml4f": "git://github.com/microsoft/ml4f#v1.10.1",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "react-icons": "^4.12.0",
+ "react-intl": "^6.6.8",
+ "react-router": "^6.24.0",
+ "react-router-dom": "^6.24.0",
"smoothie": "^1.36.1",
- "svelte-i18n": "^4.0.0",
- "svelte-skeleton": "^1.3.1",
- "svelte-transition": "^0.0.10",
- "three": "^0.152.2",
- "uuid4": "^2.0.3"
+ "zustand": "^4.5.5"
}
}
diff --git a/playwright.config.ts b/playwright.config.ts
new file mode 100644
index 000000000..098a75182
--- /dev/null
+++ b/playwright.config.ts
@@ -0,0 +1,38 @@
+import { defineConfig, devices } from "@playwright/test";
+
+/**
+ * See https://playwright.dev/docs/test-configuration.
+ */
+export default defineConfig({
+ testDir: "./src/e2e",
+ fullyParallel: true,
+ forbidOnly: !!process.env.CI,
+ retries: process.env.CI ? 2 : 0,
+ workers: process.env.CI ? 1 : undefined,
+ reporter: "html",
+ use: {
+ trace: "on-first-retry",
+ ignoreHTTPSErrors: true,
+ },
+ projects: [
+ {
+ name: "chromium",
+ use: { ...devices["Desktop Chrome"] },
+ },
+ ],
+ /* Run local dev server before starting the tests */
+ webServer: {
+ ...(process.env.CI
+ ? {
+ command: `npx vite preview --port 5173 --base ${process.env.BASE_URL}`,
+ url: `http://localhost:5173${process.env.BASE_URL}`,
+ }
+ : {
+ command: "npx vite dev",
+ url: "http://localhost:5173/",
+ }),
+ reuseExistingServer: !process.env.CI,
+ stdout: "pipe",
+ ignoreHTTPSErrors: true,
+ },
+});
diff --git a/public/css/all.min.css b/public/css/all.min.css
deleted file mode 100644
index ac76ff191..000000000
--- a/public/css/all.min.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
- * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com
- * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
- */
-.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hive:before{content:"\e07f"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-innosoft:before{content:"\e080"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-perbyte:before{content:"\e083"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-uncharted:before{content:"\e084"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-watchman-monitoring:before{content:"\e087"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.fab,.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900}
\ No newline at end of file
diff --git a/public/css/global.css b/public/css/global.css
deleted file mode 100644
index 957033c10..000000000
--- a/public/css/global.css
+++ /dev/null
@@ -1,76 +0,0 @@
-html {
- -webkit-font-smoothing: antialiased;
-}
-
-.scrollable {
- -ms-overflow-style: none;
- scrollbar-width: none;
-}
-
-.scrollable::-webkit-scrollbar {
- width: 6px;
- margin-right: 0;
- height: 8px;
-}
-
-.scrollable::-webkit-scrollbar-thumb {
- background: rgba(160, 160, 160, 0.473);
- border-radius: 3px;
-}
-
-.scrollinvis {
- -ms-overflow-style: none;
- scrollbar-width: none;
-}
-
-.scrollinvis::-webkit-scrollbar {
- width: 0px;
- margin-right: 0;
- height: 0px;
-}
-
-.scrollinvis::-webkit-scrollbar-thumb {
- background: rgba(160, 160, 160, 0.473);
- border-radius: 3px;
-}
-
-.autoscaling {
- transform: scale(0.6) translate(-35%, -70%);
-}
-
-@media screen and (min-width: 1200px) {
- .autoscaling {
- transform: scale(0.7) translate(-22%, -50%);
- }
-}
-
-@media screen and (min-width: 1400px) {
- .autoscaling {
- transform: scale(0.85) translate(-10%, -30%);
- }
-}
-
-@media screen and (min-width: 1600px) {
- .autoscaling {
- transform: scale(1) translate(0, -15%);
- ;
- }
-}
-
-@media screen and (min-width: 1900px) {
- .autoscaling {
- transform: scale(1.25) translate(10%, -5%);
- }
-}
-
-@media screen and (min-width: 2300px) {
- .autoscaling {
- transform: scale(1.5) translate(18%, 5%);
- }
-}
-
-@media screen and (min-width: 2700px) {
- .autoscaling {
- transform: scale(2) translate(25%, 10%);
- }
-}
\ No newline at end of file
diff --git a/public/models/license.txt b/public/models/license.txt
deleted file mode 100644
index c3e6c5d1e..000000000
--- a/public/models/license.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-Model Information:
-* title: Microbit Assemby
-* source: https://sketchfab.com/3d-models/microbit-assemby-f0c6ec58eefc47afaab08d8de07e1158
-* author: jezd (https://sketchfab.com/jezd)
-
-Model License:
-* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
-* requirements: Author must be credited. Commercial use is allowed.
-
-If you use this 3D model in your project be sure to copy paste this credit wherever you share it:
-This work is based on "Microbit Assemby" (https://sketchfab.com/3d-models/microbit-assemby-f0c6ec58eefc47afaab08d8de07e1158) by jezd (https://sketchfab.com/jezd) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
\ No newline at end of file
diff --git a/public/models/microbit.bin b/public/models/microbit.bin
deleted file mode 100644
index 681681c2b..000000000
Binary files a/public/models/microbit.bin and /dev/null differ
diff --git a/public/models/microbit.gltf b/public/models/microbit.gltf
deleted file mode 100644
index aca43b8b0..000000000
--- a/public/models/microbit.gltf
+++ /dev/null
@@ -1,130 +0,0 @@
-{
- "accessors": [
- {
- "bufferView": 1,
- "componentType": 5126,
- "count": 45508,
- "max": [2.160778522491455, -0.026219289749860764, 2.158750057220459],
- "min": [-2.9392216205596924, -0.8878952264785767, -2.158750057220459],
- "type": "VEC3"
- },
- {
- "bufferView": 1,
- "byteOffset": 546096,
- "componentType": 5126,
- "count": 45508,
- "max": [1.0, 1.0, 1.0],
- "min": [-1.0, -1.0, -1.0],
- "type": "VEC3"
- },
- {
- "bufferView": 2,
- "componentType": 5126,
- "count": 45508,
- "max": [0.9354838728904724, 0.9354838728904724, 1.0, 1.0],
- "min": [0.0, 0.0, 0.0, 1.0],
- "type": "VEC4"
- },
- {
- "bufferView": 0,
- "componentType": 5125,
- "count": 147282,
- "type": "SCALAR"
- }
- ],
- "asset": {
- "extras": {
- "author": "jezd (https://sketchfab.com/jezd)",
- "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)",
- "source": "https://sketchfab.com/3d-models/microbit-assemby-f0c6ec58eefc47afaab08d8de07e1158",
- "title": "Microbit Assemby"
- },
- "generator": "Sketchfab-12.68.0",
- "version": "2.0"
- },
- "bufferViews": [
- {
- "buffer": 0,
- "byteLength": 589128,
- "name": "floatBufferViews",
- "target": 34963
- },
- {
- "buffer": 0,
- "byteLength": 1092192,
- "byteOffset": 589128,
- "byteStride": 12,
- "name": "floatBufferViews",
- "target": 34962
- },
- {
- "buffer": 0,
- "byteLength": 728128,
- "byteOffset": 1681320,
- "byteStride": 16,
- "name": "floatBufferViews",
- "target": 34962
- }
- ],
- "buffers": [
- {
- "byteLength": 2409448,
- "uri": "microbit.bin"
- }
- ],
- "materials": [
- {
- "doubleSided": true,
- "name": "Scene_-_Root",
- "pbrMetallicRoughness": {
- "baseColorFactor": [0.5, 0.5, 0.5, 1.0],
- "metallicFactor": 0.0,
- "roughnessFactor": 0.6
- }
- }
- ],
- "meshes": [
- {
- "name": "Object_0",
- "primitives": [
- {
- "attributes": {
- "COLOR_0": 2,
- "NORMAL": 1,
- "POSITION": 0
- },
- "indices": 3,
- "material": 0,
- "mode": 4
- }
- ]
- }
- ],
- "nodes": [
- {
- "children": [1],
- "matrix": [
- 0.5346093107466956, 0.032277692794475926, -0.11701840776204618, 0.0,
- -0.11969750498639442, 0.22807762221336791, -0.4839373542253646, 0.0,
- 0.020190712799171395, 0.4974746554924749, 0.22946370187784748, 0.0,
- -0.10945520550012589, 0.21306870877742767, -0.029492583125829648, 1.0
- ],
- "name": "Sketchfab_model"
- },
- {
- "children": [2],
- "name": "microbit assemby.stl.cleaner.gles"
- },
- {
- "mesh": 0,
- "name": "Object_2"
- }
- ],
- "scene": 0,
- "scenes": [
- {
- "name": "Sketchfab_Scene",
- "nodes": [0]
- }
- ]
-}
diff --git a/public/sounds/congratulations.wav b/public/sounds/congratulations.wav
deleted file mode 100644
index 70bb3ff32..000000000
Binary files a/public/sounds/congratulations.wav and /dev/null differ
diff --git a/public/sounds/high_pitch.wav b/public/sounds/high_pitch.wav
deleted file mode 100644
index 0bb4b59fd..000000000
Binary files a/public/sounds/high_pitch.wav and /dev/null differ
diff --git a/public/sounds/huge_mistake.wav b/public/sounds/huge_mistake.wav
deleted file mode 100644
index e95f7d614..000000000
Binary files a/public/sounds/huge_mistake.wav and /dev/null differ
diff --git a/public/sounds/looser.wav b/public/sounds/looser.wav
deleted file mode 100644
index 9d22184f1..000000000
Binary files a/public/sounds/looser.wav and /dev/null differ
diff --git a/public/sounds/low_pitch.wav b/public/sounds/low_pitch.wav
deleted file mode 100644
index ce56f6302..000000000
Binary files a/public/sounds/low_pitch.wav and /dev/null differ
diff --git a/public/sounds/mistake.mp3 b/public/sounds/mistake.mp3
deleted file mode 100644
index ad3c9505f..000000000
Binary files a/public/sounds/mistake.mp3 and /dev/null differ
diff --git a/public/webfonts/fa-brands-400.eot b/public/webfonts/fa-brands-400.eot
deleted file mode 100644
index cba6c6cce..000000000
Binary files a/public/webfonts/fa-brands-400.eot and /dev/null differ
diff --git a/public/webfonts/fa-brands-400.svg b/public/webfonts/fa-brands-400.svg
deleted file mode 100644
index b9881a43b..000000000
--- a/public/webfonts/fa-brands-400.svg
+++ /dev/null
@@ -1,3717 +0,0 @@
-
-
-
-
-Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
- By Robert Madole
-Copyright (c) Font Awesome
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/webfonts/fa-brands-400.ttf b/public/webfonts/fa-brands-400.ttf
deleted file mode 100644
index 8d75dedda..000000000
Binary files a/public/webfonts/fa-brands-400.ttf and /dev/null differ
diff --git a/public/webfonts/fa-brands-400.woff b/public/webfonts/fa-brands-400.woff
deleted file mode 100644
index 3375bef09..000000000
Binary files a/public/webfonts/fa-brands-400.woff and /dev/null differ
diff --git a/public/webfonts/fa-brands-400.woff2 b/public/webfonts/fa-brands-400.woff2
deleted file mode 100644
index 402f81c0b..000000000
Binary files a/public/webfonts/fa-brands-400.woff2 and /dev/null differ
diff --git a/public/webfonts/fa-regular-400.eot b/public/webfonts/fa-regular-400.eot
deleted file mode 100644
index a4e598936..000000000
Binary files a/public/webfonts/fa-regular-400.eot and /dev/null differ
diff --git a/public/webfonts/fa-regular-400.svg b/public/webfonts/fa-regular-400.svg
deleted file mode 100644
index 463af27c0..000000000
--- a/public/webfonts/fa-regular-400.svg
+++ /dev/null
@@ -1,801 +0,0 @@
-
-
-
-
-Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
- By Robert Madole
-Copyright (c) Font Awesome
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/webfonts/fa-regular-400.ttf b/public/webfonts/fa-regular-400.ttf
deleted file mode 100644
index 7157aafba..000000000
Binary files a/public/webfonts/fa-regular-400.ttf and /dev/null differ
diff --git a/public/webfonts/fa-regular-400.woff b/public/webfonts/fa-regular-400.woff
deleted file mode 100644
index ad077c6be..000000000
Binary files a/public/webfonts/fa-regular-400.woff and /dev/null differ
diff --git a/public/webfonts/fa-regular-400.woff2 b/public/webfonts/fa-regular-400.woff2
deleted file mode 100644
index 56328948b..000000000
Binary files a/public/webfonts/fa-regular-400.woff2 and /dev/null differ
diff --git a/public/webfonts/fa-solid-900.eot b/public/webfonts/fa-solid-900.eot
deleted file mode 100644
index e99417197..000000000
Binary files a/public/webfonts/fa-solid-900.eot and /dev/null differ
diff --git a/public/webfonts/fa-solid-900.svg b/public/webfonts/fa-solid-900.svg
deleted file mode 100644
index 00296e959..000000000
--- a/public/webfonts/fa-solid-900.svg
+++ /dev/null
@@ -1,5034 +0,0 @@
-
-
-
-
-Created by FontForge 20201107 at Wed Aug 4 12:25:29 2021
- By Robert Madole
-Copyright (c) Font Awesome
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/webfonts/fa-solid-900.ttf b/public/webfonts/fa-solid-900.ttf
deleted file mode 100644
index 25abf389e..000000000
Binary files a/public/webfonts/fa-solid-900.ttf and /dev/null differ
diff --git a/public/webfonts/fa-solid-900.woff b/public/webfonts/fa-solid-900.woff
deleted file mode 100644
index 23ee66344..000000000
Binary files a/public/webfonts/fa-solid-900.woff and /dev/null differ
diff --git a/public/webfonts/fa-solid-900.woff2 b/public/webfonts/fa-solid-900.woff2
deleted file mode 100644
index 2217164f0..000000000
Binary files a/public/webfonts/fa-solid-900.woff2 and /dev/null differ
diff --git a/src/App.svelte b/src/App.svelte
deleted file mode 100644
index c8e8ebb78..000000000
--- a/src/App.svelte
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-{#if !$isLoading}
-
-
- {#if !$compatibility.platformAllowed}
-
-
- {:else}
-
-
-
- {#if $consent}
-
-
-
- {/if}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/if}
-
-
-{/if}
diff --git a/src/App.tsx b/src/App.tsx
new file mode 100644
index 000000000..4dcc90495
--- /dev/null
+++ b/src/App.tsx
@@ -0,0 +1,121 @@
+/* eslint-disable @typescript-eslint/no-unsafe-assignment */
+import { ChakraProvider } from "@chakra-ui/react";
+import { MakeCodeFrameDriver } from "@microbit/makecode-embed/react";
+import React, { ReactNode, useMemo, useRef } from "react";
+import {
+ Outlet,
+ RouterProvider,
+ ScrollRestoration,
+ createBrowserRouter,
+} from "react-router-dom";
+import { BufferedDataProvider } from "./buffered-data-hooks";
+import EditCodeDialog from "./components/EditCodeDialog";
+import ErrorBoundary from "./components/ErrorBoundary";
+import ErrorHandlerErrorView from "./components/ErrorHandlerErrorView";
+import NotFound from "./components/NotFound";
+import { ConnectProvider } from "./connect-actions-hooks";
+import { ConnectStatusProvider } from "./connect-status-hooks";
+import { ConnectionStageProvider } from "./connection-stage-hooks";
+import { deployment, useDeployment } from "./deployment";
+import { ProjectProvider } from "./hooks/project-hooks";
+import { LoggingProvider } from "./logging/logging-hooks";
+import TranslationProvider from "./messages/TranslationProvider";
+import { sessionPageConfigs } from "./pages-config";
+import HomePage from "./pages/HomePage";
+import NewPage from "./pages/NewPage";
+import {
+ createHomePageUrl,
+ createNewPageUrl,
+ createSessionPageUrl,
+} from "./urls";
+
+export interface ProviderLayoutProps {
+ children: ReactNode;
+}
+
+const logging = deployment.logging;
+
+const Providers = ({ children }: ProviderLayoutProps) => {
+ const deployment = useDeployment();
+ const { ConsentProvider } = deployment.compliance;
+ return (
+
+
+
+
+
+
+
+
+
+ {children}
+
+
+
+
+
+
+
+
+
+ );
+};
+
+const Layout = () => {
+ const driverRef = useRef(null);
+ return (
+ // We use this even though we have errorElement as this does logging.
+
+
+
+
+
+
+
+ );
+};
+
+const createRouter = () => {
+ return createBrowserRouter([
+ {
+ id: "root",
+ path: "",
+ element: ,
+ // This one gets used for loader errors (typically offline)
+ // We set an error boundary inside the routes too that logs render-time errors.
+ // ErrorBoundary doesn't work properly in the loader case at least.
+ errorElement: ,
+ children: [
+ {
+ path: createHomePageUrl(),
+ element: ,
+ },
+ {
+ path: createNewPageUrl(),
+ element: ,
+ },
+ ...sessionPageConfigs.map((config) => {
+ return {
+ path: createSessionPageUrl(config.id),
+ element: ,
+ };
+ }),
+ {
+ path: "*",
+ element: ,
+ },
+ ],
+ },
+ ]);
+};
+
+const App = () => {
+ const router = useMemo(createRouter, []);
+ return (
+
+
+
+ );
+};
+
+export default App;
diff --git a/src/StaticConfiguration.ts b/src/StaticConfiguration.ts
deleted file mode 100644
index ff3bbd69b..000000000
--- a/src/StaticConfiguration.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-/**
- * Static configuration values. These values are not expected to change, while the application is running.
- */
-import { PinTurnOnState } from './components/output/PinSelectorUtil';
-import MBSpecs from './script/microbit-interfacing/MBSpecs';
-
-export enum HexOrigin {
- UNKNOWN,
- MAKECODE,
- PROPRIETARY,
-}
-
-class StaticConfiguration {
- public static readonly connectTimeoutDuration: number = 10000;
- public static readonly requestDeviceTimeoutDuration: number = 30000;
-
- // After how long should we consider the connection lost if ping was not able to conclude?
- public static readonly connectionLostTimeoutDuration: number = 3000;
-
- // Which pins are supported?
- public static supportedPins: MBSpecs.UsableIOPin[] = [0, 1, 2];
- public static readonly defaultOutputPin: MBSpecs.UsableIOPin = 0; // Which pin should be selected by default?
- // In milliseconds, after turning on, how long should an output be on for?
- public static readonly defaultPinToggleTime = 1500;
- public static readonly defaultPinTurnOnState: PinTurnOnState = PinTurnOnState.X_TIME;
- public static readonly pinIOEnabledByDefault: boolean = true;
-
- // How long may gesture names be?
- public static readonly gestureNameMaxLength = 18;
-
- // Default required confidence level
- public static readonly defaultRequiredConfidence = 0.8;
-
- // Duration before assuming the microbit is outdated? (in milliseconds)
- public static readonly versionIdentificationTimeoutDuration = 4000;
-
- // Link to the MakeCode firmware template
- public static readonly makecodeFirmwareUrl =
- 'https://makecode.microbit.org/#pub:54705-16835-80762-83855';
-
- public static readonly isMicrobitOutdated = (origin: HexOrigin, version: number) => {
- // Current versions, remember to update these, whenever changes to firmware are made!
- if (origin === HexOrigin.UNKNOWN) return true;
-
- const versionNumbers = new Map();
- versionNumbers.set(HexOrigin.MAKECODE, 1);
- versionNumbers.set(HexOrigin.PROPRIETARY, 1);
- return versionNumbers.get(origin) !== version;
- };
-}
-export default StaticConfiguration;
diff --git a/src/__tests__/cookie.test.ts b/src/__tests__/cookie.test.ts
deleted file mode 100644
index 398f3de0e..000000000
--- a/src/__tests__/cookie.test.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import CookieManager from '../script/CookieManager';
-import Cookies from 'js-cookie';
-
-describe('Cookie tests', () => {
- test('Should get feature flag if set', () => {
- const someFlag = 'someflag';
- Cookies.set('fflags', 'someflag + some junk');
- expect(CookieManager.hasFeatureFlag(someFlag)).toBeTruthy();
- });
-
- test('Should NOT get feature flag if NOT set', () => {
- const someFlag = 'someflag';
- Cookies.set('fflags', 'some junk');
- expect(CookieManager.hasFeatureFlag(someFlag)).toBeFalsy();
- });
-
- test('Should NOT get feature flag if no fflags cookie is set', () => {
- const someFlag = 'someflag';
- expect(CookieManager.hasFeatureFlag(someFlag)).toBeFalsy();
- });
-});
diff --git a/src/__tests__/datafunctions.test.ts b/src/__tests__/datafunctions.test.ts
deleted file mode 100644
index 6258ea933..000000000
--- a/src/__tests__/datafunctions.test.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import { determineFilter, Filters } from '../script/datafunctions';
-function enumKeys(obj: O): K[] {
- return Object.keys(obj).filter(k => Number.isNaN(+k)) as K[];
-}
-describe('Data functions architecture test', () => {
- test('All filters should be implemented in determineFilter', () => {
- for (const filter of enumKeys(Filters)) {
- expect(() => determineFilter(Filters[filter])).not.toThrow();
- }
- });
-});
diff --git a/src/__tests__/default-build-config.test.ts b/src/__tests__/default-build-config.test.ts
deleted file mode 100644
index a5564468e..000000000
--- a/src/__tests__/default-build-config.test.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import fs from 'fs';
-
-describe('Default build config test', () => {
- test('Windi config should not be ml-machine', () => {
- const fileContent = fs.readFileSync('windi.config.js');
- expect(fileContent.includes("primary: '#2B5EA7'")).toBeFalsy();
- expect(fileContent.includes("secondary: '#2CCAC0'")).toBeFalsy();
- });
-});
diff --git a/src/__tests__/fixtures/gesture-data-bad-labels.json b/src/__tests__/fixtures/gesture-data-bad-labels.json
deleted file mode 100644
index 79f01fc5a..000000000
--- a/src/__tests__/fixtures/gesture-data-bad-labels.json
+++ /dev/null
@@ -1,1024 +0,0 @@
-[
- {
- "ID": 1705437833024,
- "name": "Circle",
- "recordings": [
- {
- "ID": 1705437969952,
- "data": {
- "x": [
- -0.064, -0.06, -0.06, -0.06, -0.06, -0.064, -0.056, -0.056, -0.06, -0.06,
- -0.064, -0.056, -0.056, -0.056, -0.06, -0.052, -0.064, -0.06, -0.064, -0.06,
- -0.06, -0.052, -0.056, -0.06, -0.064, -0.06, -0.064, -0.06, -0.06, -0.068,
- -0.056, -0.056, -0.048, -0.064, -0.056, -0.06, -0.056, -0.056, -0.056, -0.056,
- -0.06, -0.06, -0.056, -0.064, -0.064, -0.056, -0.056, -0.056, -0.06, -0.056,
- -0.064, -0.06, -0.056, -0.064, -0.064, -0.056, -0.056, -0.064, -0.056, -0.06,
- -0.052, -0.06, -0.056, -0.06, -0.06, -0.06, -0.06, -0.056, -0.06, -0.052,
- -0.048, -0.06, -0.06, -0.056, -0.064, -0.06, -0.056, -0.056, -0.06, -0.056,
- -0.064, -0.06, -0.056, -0.06, -0.06, -0.052, -0.064, -0.056, -0.068, -0.06,
- -0.06, -0.052, -0.06
- ],
- "y": [
- 0.768, 0.768, 0.772, 0.76, 0.76, 0.772, 0.764, 0.76, 0.764, 0.764, 0.772,
- 0.764, 0.76, 0.764, 0.76, 0.768, 0.764, 0.76, 0.764, 0.76, 0.772, 0.76, 0.764,
- 0.768, 0.764, 0.764, 0.76, 0.764, 0.756, 0.764, 0.764, 0.76, 0.76, 0.764,
- 0.764, 0.76, 0.756, 0.76, 0.76, 0.756, 0.76, 0.764, 0.768, 0.764, 0.752, 0.76,
- 0.76, 0.756, 0.756, 0.772, 0.76, 0.764, 0.76, 0.764, 0.76, 0.768, 0.764,
- 0.756, 0.76, 0.764, 0.764, 0.764, 0.76, 0.756, 0.768, 0.764, 0.756, 0.76,
- 0.764, 0.764, 0.764, 0.764, 0.764, 0.756, 0.76, 0.76, 0.772, 0.76, 0.764,
- 0.76, 0.772, 0.764, 0.756, 0.76, 0.768, 0.752, 0.76, 0.76, 0.76, 0.756, 0.76,
- 0.764, 0.752
- ],
- "z": [
- -0.7, -0.684, -0.7, -0.688, -0.696, -0.696, -0.7, -0.696, -0.7, -0.692,
- -0.696, -0.704, -0.696, -0.692, -0.7, -0.696, -0.696, -0.688, -0.692, -0.684,
- -0.7, -0.696, -0.704, -0.692, -0.704, -0.7, -0.7, -0.7, -0.708, -0.7, -0.696,
- -0.692, -0.696, -0.7, -0.7, -0.692, -0.704, -0.692, -0.708, -0.696, -0.704,
- -0.7, -0.692, -0.692, -0.708, -0.704, -0.696, -0.704, -0.704, -0.704, -0.704,
- -0.704, -0.7, -0.696, -0.708, -0.7, -0.696, -0.696, -0.692, -0.704, -0.696,
- -0.696, -0.688, -0.7, -0.708, -0.696, -0.704, -0.696, -0.708, -0.7, -0.712,
- -0.708, -0.696, -0.7, -0.696, -0.696, -0.7, -0.696, -0.704, -0.696, -0.708,
- -0.7, -0.7, -0.7, -0.704, -0.7, -0.684, -0.692, -0.696, -0.704, -0.704, -0.7,
- -0.7
- ]
- }
- },
- {
- "ID": 1705437870493,
- "data": {
- "x": [
- -0.804, -0.836, -0.848, -0.812, -0.768, -0.784, -0.808, -0.776, -0.7, -0.648,
- -0.636, -0.664, -0.672, -0.704, -0.712, -0.72, -0.756, -0.752, -0.704, -0.68,
- -0.692, -0.708, -0.72, -0.756, -0.764, -0.768, -0.772, -0.736, -0.748, -0.74,
- -0.772, -0.764, -0.752, -0.736, -0.732, -0.756, -0.76, -0.772, -0.74, -0.74,
- -0.748, -0.748, -0.752, -0.772, -0.756, -0.748, -0.732, -0.74, -0.752, -0.756,
- -0.748, -0.732, -0.74, -0.76, -0.752, -0.772, -0.764, -0.74, -0.736, -0.748,
- -0.764, -0.756, -0.728, -0.74, -0.756, -0.752, -0.744, -0.756, -0.744, -0.732,
- -0.728, -0.74, -0.752, -0.76, -0.776, -0.78, -0.772, -0.74, -0.732, -0.74,
- -0.764, -0.776, -0.772, -0.764, -0.748, -0.76, -0.736, -0.748, -0.744, -0.768,
- -0.812, -0.808
- ],
- "y": [
- -0.48, -0.472, -0.48, -0.492, -0.476, -0.432, -0.428, -0.476, -0.548, -0.552,
- -0.536, -0.516, -0.496, -0.484, -0.476, -0.484, -0.484, -0.5, -0.504, -0.508,
- -0.484, -0.492, -0.496, -0.484, -0.48, -0.476, -0.484, -0.492, -0.468, -0.484,
- -0.476, -0.484, -0.492, -0.5, -0.488, -0.484, -0.476, -0.476, -0.488, -0.496,
- -0.492, -0.472, -0.464, -0.464, -0.476, -0.48, -0.488, -0.484, -0.468, -0.468,
- -0.484, -0.488, -0.484, -0.488, -0.472, -0.476, -0.476, -0.48, -0.492, -0.476,
- -0.472, -0.476, -0.484, -0.484, -0.484, -0.484, -0.492, -0.488, -0.456, -0.48,
- -0.484, -0.472, -0.476, -0.46, -0.472, -0.472, -0.46, -0.472, -0.488, -0.476,
- -0.472, -0.488, -0.492, -0.5, -0.492, -0.488, -0.484, -0.492, -0.488, -0.472,
- -0.428, -0.436
- ],
- "z": [
- -0.56, -0.592, -0.572, -0.52, -0.512, -0.568, -0.656, -0.656, -0.56, -0.504,
- -0.54, -0.608, -0.636, -0.652, -0.66, -0.64, -0.66, -0.66, -0.584, -0.56,
- -0.576, -0.6, -0.592, -0.58, -0.62, -0.608, -0.616, -0.576, -0.596, -0.572,
- -0.604, -0.592, -0.568, -0.572, -0.56, -0.584, -0.584, -0.612, -0.572, -0.568,
- -0.576, -0.588, -0.6, -0.596, -0.572, -0.564, -0.568, -0.592, -0.6, -0.604,
- -0.588, -0.572, -0.58, -0.584, -0.588, -0.596, -0.584, -0.564, -0.568, -0.592,
- -0.596, -0.592, -0.588, -0.572, -0.588, -0.6, -0.576, -0.592, -0.624, -0.572,
- -0.564, -0.584, -0.588, -0.6, -0.6, -0.592, -0.58, -0.564, -0.552, -0.564,
- -0.58, -0.592, -0.588, -0.584, -0.568, -0.58, -0.56, -0.568, -0.548, -0.58,
- -0.636, -0.608
- ]
- }
- },
- {
- "ID": 1705437864426,
- "data": {
- "x": [
- 0.892, 0.972, 0.972, 0.92, 0.916, 0.964, 0.924, 0.932, 0.984, 0.932, 0.876,
- 0.88, 0.904, 0.92, 0.948, 0.984, 0.992, 0.948, 0.948, 0.992, 0.98, 0.952,
- 0.948, 0.928, 0.964, 0.94, 0.94, 0.948, 0.976, 0.964, 0.956, 0.936, 0.948,
- 0.94, 0.932, 0.96, 0.952, 0.936, 0.98, 0.984, 0.948, 0.94, 0.928, 0.928, 0.94,
- 0.96, 0.94, 0.94, 0.94, 0.936, 0.948, 0.948, 0.952, 0.952, 0.936, 0.96, 0.96,
- 0.956, 0.96, 0.952, 0.94, 0.956, 0.94, 0.94, 0.948, 0.94, 0.952, 0.952, 0.952,
- 0.944, 0.944, 0.96, 0.976, 0.968, 0.944, 0.928, 0.94, 0.956, 0.952, 0.952,
- 0.948, 0.952, 0.948, 0.944, 0.944, 0.94, 0.92, 0.94, 0.952, 0.964, 0.968,
- 0.968, 0.944
- ],
- "y": [
- -0.02, -0.088, -0.116, -0.144, -0.14, -0.016, 0.012, -0.04, -0.1, -0.076,
- -0.088, -0.096, -0.104, -0.088, -0.092, -0.096, -0.076, -0.072, -0.072, -0.08,
- -0.076, -0.084, -0.104, -0.088, -0.104, -0.088, -0.116, -0.116, -0.132,
- -0.116, -0.108, -0.104, -0.12, -0.116, -0.1, -0.108, -0.112, -0.096, -0.108,
- -0.112, -0.1, -0.1, -0.1, -0.104, -0.116, -0.12, -0.096, -0.108, -0.12,
- -0.116, -0.108, -0.104, -0.112, -0.112, -0.096, -0.096, -0.104, -0.088,
- -0.096, -0.1, -0.108, -0.1, -0.108, -0.096, -0.1, -0.104, -0.108, -0.104,
- -0.1, -0.088, -0.092, -0.1, -0.1, -0.096, -0.088, -0.092, -0.096, -0.096,
- -0.104, -0.088, -0.08, -0.108, -0.092, -0.096, -0.1, -0.1, -0.08, -0.1,
- -0.096, -0.092, -0.092, -0.112, -0.088
- ],
- "z": [
- 0.208, -0.032, -0.252, -0.316, -0.292, -0.224, -0.14, 0.116, 0, -0.196,
- -0.188, -0.16, -0.172, -0.096, -0.152, -0.228, -0.268, -0.248, -0.172, -0.14,
- -0.136, -0.188, -0.204, -0.14, -0.116, -0.104, -0.18, -0.216, -0.192, -0.168,
- -0.132, -0.16, -0.188, -0.184, -0.14, -0.124, -0.176, -0.176, -0.16, -0.18,
- -0.176, -0.152, -0.156, -0.168, -0.176, -0.172, -0.168, -0.152, -0.16, -0.156,
- -0.18, -0.168, -0.176, -0.188, -0.172, -0.18, -0.176, -0.188, -0.168, -0.16,
- -0.196, -0.192, -0.184, -0.152, -0.148, -0.2, -0.2, -0.172, -0.168, -0.168,
- -0.18, -0.176, -0.168, -0.16, -0.148, -0.148, -0.164, -0.184, -0.184, -0.176,
- -0.144, -0.156, -0.176, -0.184, -0.172, -0.172, -0.144, -0.168, -0.188, -0.18,
- -0.176, -0.14, -0.144
- ]
- }
- },
- {
- "ID": 1705437860385,
- "data": {
- "x": [
- 0, 0.004, 0, 0.004, 0.016, 0, 0.004, -0.06, -0.004, -0.04, -0.048, -0.052,
- -0.056, -0.048, -0.052, -0.044, -0.052, -0.044, -0.048, -0.04, -0.056, -0.052,
- -0.052, -0.056, -0.056, -0.044, -0.044, -0.056, -0.052, -0.048, -0.048,
- -0.048, -0.048, -0.048, -0.06, -0.056, -0.052, -0.056, -0.056, -0.052, -0.056,
- -0.056, -0.056, -0.048, -0.048, -0.048, -0.06, -0.052, -0.056, -0.048, -0.052,
- -0.048, -0.048, -0.048, -0.044, -0.048, -0.052, -0.052, -0.056, -0.056,
- -0.044, -0.048, -0.052, -0.052, -0.048, -0.052, -0.056, -0.052, -0.056,
- -0.044, -0.048, -0.052, -0.048, -0.052, -0.052, -0.052, -0.048, -0.056,
- -0.056, -0.048, -0.052, -0.056, -0.048, -0.056, -0.048, -0.048, -0.052,
- -0.052, -0.048, -0.052, -0.052, -0.044
- ],
- "y": [
- 0.16, 0.172, 0.184, 0.184, 0.168, 0.188, 0.192, 0.212, 0.16, 0.208, 0.224,
- 0.224, 0.22, 0.22, 0.224, 0.22, 0.22, 0.216, 0.2, 0.216, 0.228, 0.224, 0.224,
- 0.232, 0.228, 0.232, 0.224, 0.224, 0.228, 0.228, 0.228, 0.228, 0.232, 0.236,
- 0.232, 0.232, 0.228, 0.22, 0.232, 0.228, 0.228, 0.232, 0.236, 0.232, 0.232,
- 0.224, 0.224, 0.232, 0.224, 0.236, 0.228, 0.232, 0.228, 0.224, 0.228, 0.232,
- 0.228, 0.228, 0.232, 0.232, 0.228, 0.224, 0.224, 0.232, 0.236, 0.228, 0.228,
- 0.236, 0.232, 0.224, 0.228, 0.224, 0.236, 0.236, 0.232, 0.228, 0.228, 0.236,
- 0.232, 0.228, 0.232, 0.232, 0.228, 0.232, 0.228, 0.228, 0.228, 0.228, 0.224,
- 0.232, 0.232, 0.232
- ],
- "z": [
- 1, 1.016, 1.032, 1.02, 0.98, 1.004, 0.788, 1.06, 1.028, 1.004, 0.996, 1.012,
- 1, 1.012, 1.008, 1.004, 0.996, 1.008, 1.012, 1.012, 1.012, 1.012, 1.012, 1,
- 1.012, 1.008, 1.004, 1.012, 1.008, 1.008, 1.008, 1.008, 0.996, 0.996, 1.008,
- 1.012, 1.008, 1.012, 1.008, 1.012, 1.004, 1.008, 1.004, 1.004, 1.004, 1,
- 1.008, 1.004, 1.004, 1.012, 1.008, 1.004, 1.004, 1.008, 1.008, 1.008, 1,
- 1.004, 1, 1, 1, 1.008, 1.004, 1, 1.004, 1.004, 1.004, 1, 1.008, 1.012, 1.004,
- 1.004, 1.008, 1.008, 1, 1.012, 1.004, 0.996, 1.008, 1, 1.008, 1.012, 0.996,
- 0.996, 1.004, 1.008, 1.012, 1.008, 1.004, 1.008, 1.008, 1.008
- ]
- }
- },
- {
- "ID": 1705437854703,
- "data": {
- "x": [
- -0.076, -0.076, -0.072, -0.068, -0.076, -0.072, -0.072, -0.056, -0.104,
- -0.068, -0.072, -0.064, -0.072, -0.044, -0.072, -0.064, -0.064, -0.068,
- -0.076, -0.076, -0.068, -0.068, -0.072, -0.068, -0.072, -0.068, -0.072,
- -0.068, -0.056, -0.064, -0.068, -0.068, -0.068, -0.068, -0.06, -0.072, -0.076,
- -0.072, -0.068, -0.064, -0.072, -0.06, -0.072, -0.068, -0.064, -0.06, -0.064,
- -0.068, -0.064, -0.072, -0.064, -0.068, -0.076, -0.068, -0.064, -0.064,
- -0.064, -0.068, -0.064, -0.072, -0.068, -0.072, -0.06, -0.06, -0.076, -0.06,
- -0.064, -0.064, -0.06, -0.068, -0.076, -0.064, -0.064, -0.064, -0.072, -0.068,
- -0.064, -0.064, -0.088, -0.06, -0.06, -0.06, -0.064, -0.056, -0.06, -0.064,
- -0.064, -0.064, -0.064, -0.068, -0.072, -0.068, -0.06
- ],
- "y": [
- 0.968, 0.96, 0.956, 0.964, 0.964, 0.96, 0.96, 0.976, 0.96, 0.96, 0.96, 0.96,
- 0.956, 0.948, 0.952, 0.956, 0.944, 0.944, 0.944, 0.944, 0.948, 0.952, 0.944,
- 0.948, 0.948, 0.94, 0.948, 0.944, 0.956, 0.948, 0.944, 0.952, 0.952, 0.952,
- 0.952, 0.952, 0.948, 0.948, 0.948, 0.952, 0.944, 0.944, 0.948, 0.948, 0.944,
- 0.948, 0.952, 0.948, 0.952, 0.948, 0.94, 0.944, 0.952, 0.952, 0.936, 0.948,
- 0.948, 0.944, 0.948, 0.944, 0.944, 0.944, 0.94, 0.956, 0.944, 0.952, 0.94,
- 0.952, 0.944, 0.944, 0.944, 0.956, 0.948, 0.952, 0.944, 0.94, 0.936, 0.944,
- 0.936, 0.94, 0.956, 0.952, 0.948, 0.944, 0.952, 0.94, 0.948, 0.948, 0.952,
- 0.948, 0.948, 0.948, 0.948
- ],
- "z": [
- -0.396, -0.388, -0.392, -0.388, -0.38, -0.36, -0.404, -0.416, -0.396, -0.42,
- -0.388, -0.42, -0.42, -0.564, -0.424, -0.416, -0.424, -0.44, -0.432, -0.428,
- -0.428, -0.432, -0.428, -0.428, -0.432, -0.428, -0.424, -0.432, -0.436,
- -0.428, -0.428, -0.432, -0.432, -0.428, -0.424, -0.436, -0.428, -0.432,
- -0.432, -0.436, -0.424, -0.424, -0.428, -0.424, -0.436, -0.432, -0.42, -0.428,
- -0.436, -0.424, -0.424, -0.424, -0.436, -0.428, -0.428, -0.424, -0.428,
- -0.436, -0.424, -0.428, -0.44, -0.424, -0.428, -0.432, -0.432, -0.42, -0.428,
- -0.428, -0.428, -0.436, -0.428, -0.428, -0.42, -0.428, -0.436, -0.432, -0.436,
- -0.44, -0.428, -0.432, -0.432, -0.432, -0.432, -0.428, -0.44, -0.444, -0.436,
- -0.424, -0.424, -0.432, -0.424, -0.432, -0.436
- ]
- }
- },
- {
- "ID": 1705437847993,
- "data": {
- "x": [
- 0.744, 0.76, 0.66, 0.688, 0.784, 0.736, 0.704, 0.712, 0.732, 0.72, 0.768,
- 0.772, 0.76, 0.784, 0.76, 0.776, 0.776, 0.776, 0.744, 0.744, 0.76, 0.748,
- 0.764, 0.76, 0.764, 0.776, 0.772, 0.752, 0.76, 0.752, 0.764, 0.76, 0.748,
- 0.752, 0.744, 0.76, 0.78, 0.772, 0.768, 0.756, 0.756, 0.748, 0.752, 0.744,
- 0.744, 0.752, 0.756, 0.756, 0.752, 0.752, 0.748, 0.752, 0.756, 0.764, 0.756,
- 0.756, 0.752, 0.748, 0.752, 0.748, 0.748, 0.744, 0.744, 0.752, 0.76, 0.76,
- 0.756, 0.752, 0.756, 0.756, 0.752, 0.744, 0.732, 0.74, 0.744, 0.748, 0.732,
- 0.736, 0.732, 0.748, 0.752, 0.748, 0.74, 0.744, 0.752, 0.744, 0.748, 0.732,
- 0.736, 0.74, 0.752, 0.74
- ],
- "y": [
- 0.292, 0.284, 0.24, 0.264, 0.224, 0.176, 0.232, 0.272, 0.268, 0.264, 0.248,
- 0.224, 0.248, 0.248, 0.252, 0.232, 0.248, 0.264, 0.268, 0.268, 0.268, 0.272,
- 0.268, 0.268, 0.256, 0.256, 0.26, 0.268, 0.264, 0.264, 0.264, 0.268, 0.268,
- 0.276, 0.276, 0.256, 0.256, 0.264, 0.268, 0.272, 0.268, 0.272, 0.272, 0.3,
- 0.276, 0.276, 0.284, 0.268, 0.284, 0.276, 0.276, 0.272, 0.276, 0.264, 0.276,
- 0.276, 0.28, 0.272, 0.276, 0.28, 0.28, 0.28, 0.284, 0.276, 0.272, 0.264,
- 0.268, 0.272, 0.272, 0.272, 0.272, 0.276, 0.28, 0.276, 0.284, 0.288, 0.284,
- 0.3, 0.288, 0.272, 0.28, 0.28, 0.276, 0.272, 0.276, 0.284, 0.284, 0.288,
- 0.284, 0.276, 0.272, 0.276
- ],
- "z": [
- -0.56, -0.604, -0.56, -0.588, -0.616, -0.616, -0.644, -0.572, -0.564, -0.552,
- -0.572, -0.552, -0.54, -0.556, -0.56, -0.568, -0.568, -0.572, -0.552, -0.548,
- -0.54, -0.544, -0.556, -0.56, -0.56, -0.544, -0.536, -0.54, -0.532, -0.556,
- -0.564, -0.572, -0.556, -0.552, -0.536, -0.544, -0.544, -0.548, -0.552, -0.56,
- -0.552, -0.556, -0.568, -0.56, -0.56, -0.552, -0.552, -0.556, -0.556, -0.536,
- -0.528, -0.536, -0.56, -0.564, -0.556, -0.544, -0.536, -0.54, -0.568, -0.56,
- -0.552, -0.54, -0.544, -0.56, -0.568, -0.552, -0.544, -0.548, -0.548, -0.56,
- -0.556, -0.544, -0.552, -0.56, -0.556, -0.56, -0.568, -0.564, -0.56, -0.548,
- -0.556, -0.56, -0.568, -0.572, -0.564, -0.56, -0.556, -0.552, -0.568, -0.56,
- -0.564, -0.56
- ]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- },
- {
- "ID": 1705437876740,
- "name": "Shake",
- "recordings": [
- {
- "ID": 1705438034019,
- "data": {
- "x": [
- -0.148, -0.388, -0.552, -0.64, -0.544, -0.616, -0.528, -0.612, -0.536, -0.456,
- -0.532, -0.672, -0.796, -0.836, -0.716, -0.756, -0.916, -0.956, -1.032, -1.1,
- -1.228, -1.284, -1.312, -1.36, -1.356, -1.296, -1.224, -1.096, -0.844, -0.964,
- -0.948, -0.984, -0.896, -0.884, -0.884, -0.772, -0.64, -0.508, -0.388, -0.348,
- -0.392, -0.392, -0.396, -0.344, -0.3, -0.264, -0.28, -0.252, -0.2, -0.22,
- -0.236, -0.244, -0.208, -0.188, -0.22, -0.252, -0.244, -0.288, -0.36, -0.476,
- -0.496, -0.472, -0.452, -0.504, -0.552, -0.576, -0.532, -0.532, -0.608,
- -0.652, -0.668, -0.652, -0.764, -0.892, -0.92, -0.864, -0.848, -0.884, -0.872,
- -0.848, -0.888, -0.952, -0.992, -1.02, -1.084, -1.068, -0.952, -0.82, -0.748,
- -0.732, -0.84
- ],
- "y": [
- 0.48, 0.444, 0.34, 0.376, 0.392, 0.424, 0.44, 0.42, 0.416, 0.42, 0.392, 0.376,
- 0.352, 0.384, 0.348, 0.284, 0.22, 0.204, 0.284, 0.28, 0.2, 0.152, 0.128, 0.16,
- 0.144, 0.108, 0.06, 0.072, 0.02, 0.224, 0.284, 0.372, 0.284, 0.348, 0.412,
- 0.408, 0.376, 0.36, 0.396, 0.452, 0.484, 0.424, 0.36, 0.296, 0.296, 0.296,
- 0.312, 0.34, 0.356, 0.332, 0.344, 0.344, 0.344, 0.336, 0.336, 0.332, 0.336,
- 0.324, 0.308, 0.328, 0.328, 0.316, 0.304, 0.28, 0.284, 0.296, 0.328, 0.348,
- 0.348, 0.348, 0.392, 0.428, 0.432, 0.432, 0.452, 0.424, 0.38, 0.356, 0.384,
- 0.392, 0.336, 0.272, 0.28, 0.328, 0.348, 0.304, 0.256, 0.224, 0.24, 0.292,
- 0.324
- ],
- "z": [
- -0.764, -0.612, -0.512, -0.524, -0.512, -0.404, -0.344, -0.372, -0.388,
- -0.396, -0.328, -0.252, -0.18, -0.208, -0.228, -0.22, -0.204, -0.272, -0.308,
- -0.308, -0.388, -0.424, -0.512, -0.592, -0.66, -0.696, -0.772, -0.812, -0.968,
- -0.948, -1.02, -1.168, -1.064, -1.072, -1.128, -1.148, -1.128, -1.148, -1.164,
- -1.12, -1.108, -1.12, -1.156, -1.248, -1.26, -1.196, -1.124, -1.008, -0.96,
- -0.924, -0.896, -0.848, -0.796, -0.728, -0.708, -0.68, -0.636, -0.556, -0.532,
- -0.5, -0.48, -0.456, -0.412, -0.384, -0.364, -0.384, -0.392, -0.356, -0.364,
- -0.388, -0.376, -0.388, -0.42, -0.408, -0.416, -0.376, -0.372, -0.368, -0.412,
- -0.464, -0.492, -0.516, -0.58, -0.584, -0.68, -0.768, -0.848, -0.876, -0.924,
- -0.976, -0.972
- ]
- }
- },
- {
- "ID": 1705438029559,
- "data": {
- "x": [
- -0.4, -0.504, -0.556, -0.656, -0.988, -0.568, -0.644, -0.664, -0.644, -0.536,
- -0.496, -0.776, -0.804, -0.888, -0.868, -0.904, -0.94, -0.912, -0.888, -0.816,
- -0.836, -0.872, -0.844, -0.848, -0.832, -0.792, -0.756, -0.74, -0.692, -0.684,
- -0.664, -0.636, -0.624, -0.592, -0.568, -0.532, -0.516, -0.412, -0.412,
- -0.364, -0.292, -0.2, -0.164, -0.1, -0.1, -0.072, -0.048, 0.004, -0.02, 0.068,
- -0.004, -0.072, -0.124, -0.188, -0.192, -0.172, -0.152, -0.172, -0.264,
- -0.292, -0.312, -0.288, -0.276, -0.348, -0.48, -0.612, -0.552, -0.576, -0.676,
- -0.804, -0.876, -0.864, -0.856, -0.844, -0.836, -0.836, -0.864, -0.92, -0.924,
- -0.856, -0.792, -0.744, -0.672, -0.664, -0.644, -0.66, -0.68, -0.724, -0.716,
- -0.668, -0.588, -0.508
- ],
- "y": [
- 0.228, 0.248, 0.252, 0.252, 0.192, 0.132, 0.2, 0.28, 0.364, 0.276, 0.132,
- 0.216, 0.24, 0.296, 0.26, 0.228, 0.26, 0.268, 0.304, 0.232, 0.232, 0.256,
- 0.24, 0.232, 0.276, 0.268, 0.268, 0.304, 0.292, 0.296, 0.296, 0.292, 0.304,
- 0.312, 0.3, 0.304, 0.328, 0.308, 0.32, 0.348, 0.368, 0.352, 0.356, 0.328,
- 0.304, 0.308, 0.32, 0.3, 0.324, 0.24, 0.184, 0.26, 0.276, 0.28, 0.216, 0.224,
- 0.24, 0.248, 0.232, 0.196, 0.184, 0.22, 0.232, 0.196, 0.212, 0.188, 0.18,
- 0.176, 0.152, 0.144, 0.14, 0.176, 0.184, 0.18, 0.184, 0.18, 0.184, 0.216,
- 0.252, 0.188, 0.2, 0.18, 0.208, 0.244, 0.252, 0.248, 0.244, 0.236, 0.244,
- 0.276, 0.248, 0.236
- ],
- "z": [
- -1.18, -1.18, -1.12, -1.32, -0.928, -1.048, -1.18, -1.024, -1.224, -1.064,
- -1.008, -1.02, -0.888, -0.88, -0.812, -0.78, -0.736, -0.696, -0.672, -0.712,
- -0.784, -0.516, -0.64, -0.54, -0.524, -0.536, -0.524, -0.484, -0.468, -0.516,
- -0.54, -0.596, -0.624, -0.6, -0.596, -0.6, -0.624, -0.632, -0.656, -0.632,
- -0.7, -0.744, -0.76, -0.768, -0.788, -0.816, -0.904, -0.908, -1.012, -0.996,
- -0.78, -1.112, -1.06, -1, -1.06, -1.1, -1.136, -1.184, -1.216, -1.264, -1.24,
- -1.228, -1.228, -1.172, -1.16, -1.068, -1.12, -1.112, -1.068, -1.064, -0.996,
- -1.008, -0.976, -0.924, -0.88, -0.864, -0.824, -0.796, -0.808, -0.812, -0.74,
- -0.76, -0.72, -0.744, -0.728, -0.704, -0.692, -0.636, -0.644, -0.656, -0.676,
- -0.616
- ]
- }
- },
- {
- "ID": 1705438027130,
- "data": {
- "x": [
- -0.064, -0.104, -0.14, -0.208, -0.3, -0.316, -0.428, -0.564, -0.456, -0.532,
- -0.676, -0.74, -0.728, -0.692, -0.792, -1.024, -1.076, -1.056, -0.968, -0.9,
- -0.912, -0.86, -0.876, -0.872, -0.848, -0.848, -0.8, -0.788, -0.748, -0.728,
- -0.636, -0.56, -0.532, -0.504, -0.492, -0.432, -0.424, -0.464, -0.428, -0.408,
- -0.336, -0.296, -0.252, -0.24, -0.248, -0.28, -0.22, -0.204, -0.128, 0,
- -0.168, -0.136, -0.064, -0.088, -0.148, -0.228, -0.26, -0.296, -0.352, -0.392,
- -0.376, -0.352, -0.364, -0.436, -0.46, -0.496, -0.52, -0.596, -0.628, -0.624,
- -0.628, -0.668, -0.792, -0.808, -0.812, -0.824, -0.84, -0.864, -0.888, -0.924,
- -0.936, -0.88, -0.848, -0.888, -0.88, -0.832, -0.768, -0.724, -0.68, -0.664,
- -0.664, -0.62, -0.572
- ],
- "y": [
- 0.228, 0.212, 0.224, 0.236, 0.192, 0.204, 0.208, 0.34, 0.208, 0.184, 0.164,
- 0.148, 0.144, 0.104, 0.064, 0.132, 0.104, 0.124, 0.14, 0.188, 0.208, 0.212,
- 0.24, 0.224, 0.212, 0.24, 0.256, 0.288, 0.296, 0.308, 0.324, 0.316, 0.32,
- 0.316, 0.348, 0.348, 0.312, 0.308, 0.3, 0.3, 0.276, 0.248, 0.232, 0.252,
- 0.248, 0.152, 0.172, 0.204, 0.18, -0.08, 0.176, 0.156, 0.136, 0.16, 0.18,
- 0.208, 0.224, 0.204, 0.18, 0.188, 0.2, 0.188, 0.184, 0.168, 0.16, 0.14, 0.108,
- 0.104, 0.112, 0.084, 0.052, 0.004, 0.056, 0.056, 0.096, 0.084, 0.092, 0.12,
- 0.1, 0.14, 0.152, 0.164, 0.156, 0.184, 0.212, 0.224, 0.228, 0.228, 0.236,
- 0.268, 0.276, 0.284, 0.296
- ],
- "z": [
- -0.908, -0.98, -0.956, -1.076, -1.096, -1.176, -1.12, -1.06, -1.124, -1.176,
- -1.12, -1.112, -1.064, -1.06, -1.024, -0.984, -1.012, -0.964, -0.904, -0.824,
- -0.816, -0.748, -0.7, -0.676, -0.64, -0.628, -0.568, -0.56, -0.528, -0.468,
- -0.492, -0.488, -0.48, -0.492, -0.472, -0.532, -0.544, -0.6, -0.644, -0.656,
- -0.704, -0.732, -0.764, -0.776, -0.82, -0.68, -0.912, -0.988, -0.868, -1.148,
- -1.056, -1.152, -1.072, -1.12, -1.088, -1.092, -1.092, -1.152, -1.208, -1.208,
- -1.18, -1.172, -1.2, -1.192, -1.184, -1.18, -1.104, -1.076, -1.072, -1.028,
- -1.028, -0.984, -0.944, -0.968, -0.96, -0.964, -0.964, -0.952, -0.904, -0.856,
- -0.808, -0.788, -0.756, -0.696, -0.708, -0.652, -0.672, -0.64, -0.62, -0.584,
- -0.604, -0.592, -0.588
- ]
- }
- },
- {
- "ID": 1705437979405,
- "data": {
- "x": [
- 0.24, 0.22, 0.104, -0.036, -0.1, -0.096, -0.152, -0.22, -0.256, -0.204,
- -0.256, -0.056, -0.028, -0.076, -0.108, -0.088, -0.068, -0.136, -0.28, -0.392,
- -0.468, -0.508, -0.52, -0.516, -0.476, -0.46, -0.464, -0.516, -0.616, -0.648,
- -0.6, -0.52, -0.48, -0.468, -0.468, -0.46, -0.432, -0.404, -0.392, -0.304,
- -0.256, -0.208, -0.204, -0.292, -0.388, -0.488, -0.544, -0.656, -0.736,
- -0.792, -0.776, -0.716, -0.668, -0.572, -0.504, -0.484, -0.456, -0.404, -0.38,
- -0.356, -0.34, -0.328, -0.324, -0.276, -0.2, -0.148, -0.128, -0.136, -0.104,
- 0.016, 0.152, 0.268, 0.244, 0.168, 0.128, 0.096, 0.096, 0.092, 0.04, 0,
- -0.028, -0.004, 0.128, 0.184, 0.276, 0.348, 0.364, 0.312, 0.188, 0.036, -0.06,
- -0.156, -0.248
- ],
- "y": [
- 0.488, 0.44, 0.364, 0.304, 0.268, 0.272, 0.416, 0.436, 0.408, 0.364, 0.364,
- 0.216, 0.224, 0.264, 0.26, 0.248, 0.288, 0.344, 0.388, 0.392, 0.392, 0.364,
- 0.344, 0.332, 0.308, 0.304, 0.316, 0.336, 0.34, 0.336, 0.312, 0.296, 0.312,
- 0.336, 0.336, 0.34, 0.34, 0.364, 0.372, 0.38, 0.376, 0.316, 0.292, 0.308,
- 0.296, 0.324, 0.44, 0.54, 0.584, 0.624, 0.708, 0.728, 0.74, 0.748, 0.716,
- 0.68, 0.624, 0.592, 0.564, 0.536, 0.524, 0.504, 0.48, 0.464, 0.444, 0.428,
- 0.416, 0.408, 0.42, 0.408, 0.412, 0.38, 0.388, 0.408, 0.436, 0.448, 0.436,
- 0.448, 0.44, 0.464, 0.452, 0.456, 0.312, 0.424, 0.376, 0.388, 0.36, 0.336,
- 0.348, 0.368, 0.412, 0.484, 0.5
- ],
- "z": [
- -0.996, -0.96, -0.964, -0.896, -0.82, -0.696, -0.552, -0.52, -0.568, -0.652,
- -0.652, -1.104, -1.196, -1.4, -1.516, -1.58, -1.54, -1.456, -1.364, -1.312,
- -1.248, -1.208, -1.172, -1.112, -1.072, -1.032, -1.004, -0.996, -1.036,
- -1.056, -1.032, -0.996, -0.932, -0.868, -0.864, -0.824, -0.808, -0.764,
- -0.708, -0.652, -0.624, -0.632, -0.644, -0.628, -0.612, -0.616, -0.692,
- -0.788, -0.884, -0.932, -0.956, -0.936, -0.852, -0.824, -0.812, -0.788,
- -0.784, -0.74, -0.732, -0.7, -0.668, -0.64, -0.6, -0.56, -0.552, -0.56, -0.56,
- -0.556, -0.528, -0.56, -0.616, -0.7, -0.78, -0.844, -0.88, -0.884, -0.92,
- -0.96, -1, -1.004, -0.956, -1.008, -1.024, -1.092, -1.076, -1.092, -1.132,
- -1.152, -1.148, -1.132, -1.088, -1.084, -1.06
- ]
- }
- },
- {
- "ID": 1705437977128,
- "data": {
- "x": [
- -0.084, -0.124, -0.188, -0.112, -0.264, -0.244, -0.092, 0.12, 0.228, 0.16,
- 0.316, 0.296, 0.224, -0.084, -0.28, -0.372, -0.372, -0.352, -0.42, -0.596,
- -0.792, -0.7, -0.612, -0.696, -0.82, -0.82, -0.824, -0.8, -0.868, -0.968,
- -0.94, -0.852, -0.756, -0.684, -0.632, -0.516, -0.456, -0.396, -0.436, -0.476,
- -0.416, -0.364, -0.296, -0.292, -0.304, -0.332, -0.324, -0.272, -0.208,
- -0.156, -0.112, -0.08, -0.008, 0.016, 0.04, 0.092, 0.14, 0.16, 0.136, 0.144,
- 0.168, 0.176, 0.152, 0.236, 0.304, 0.248, 0.22, 0.12, 0.044, 0.04, 0.128,
- 0.156, 0.108, -0.044, -0.188, -0.248, -0.256, -0.408, -0.516, -0.484, -0.404,
- -0.396, -0.504, -0.592, -0.636, -0.64, -0.636, -0.596, -0.58, -0.52, -0.428
- ],
- "y": [
- 0.3, 0.304, 0.392, 0.324, 0.236, 0.268, 0.268, 0.36, 0.256, 0.332, 0.316, 0.5,
- 0.288, 0.336, 0.392, 0.448, 0.452, 0.46, 0.46, 0.5, 0.52, 0.44, 0.44, 0.464,
- 0.488, 0.464, 0.456, 0.484, 0.536, 0.584, 0.604, 0.584, 0.62, 0.608, 0.58,
- 0.56, 0.564, 0.576, 0.592, 0.58, 0.532, 0.492, 0.444, 0.444, 0.452, 0.476,
- 0.456, 0.44, 0.4, 0.376, 0.352, 0.356, 0.324, 0.316, 0.296, 0.332, 0.348,
- 0.38, 0.392, 0.436, 0.452, 0.384, 0.34, 0.3, 0.236, 0.208, 0.22, 0.232, 0.212,
- 0.244, 0.28, 0.308, 0.32, 0.312, 0.332, 0.352, 0.34, 0.372, 0.392, 0.392,
- 0.352, 0.34, 0.332, 0.36, 0.436, 0.372, 0.396, 0.412, 0.464, 0.416, 0.428
- ],
- "z": [
- -0.652, -0.644, -0.74, -0.748, -0.732, -0.756, -0.924, -0.8, -0.828, -0.816,
- -0.872, -0.832, -1.012, -0.992, -1.04, -1.124, -1.144, -1.18, -1.196, -1.236,
- -1.2, -1.244, -1.228, -1.112, -1.104, -1.084, -1.04, -0.964, -0.888, -0.856,
- -0.772, -0.696, -0.62, -0.564, -0.6, -0.592, -0.536, -0.48, -0.432, -0.448,
- -0.48, -0.484, -0.516, -0.464, -0.456, -0.452, -0.46, -0.46, -0.504, -0.544,
- -0.62, -0.668, -0.76, -0.8, -0.808, -0.844, -0.832, -0.804, -0.788, -0.816,
- -0.84, -0.876, -1, -1.048, -1.356, -1.068, -1.184, -1.252, -1.392, -1.36,
- -1.32, -1.256, -1.204, -1.208, -1.248, -1.24, -1.22, -1.212, -1.184, -1.152,
- -1.108, -1.084, -1.08, -1.092, -1.184, -1.136, -1.084, -1.044, -1, -1, -1.012
- ]
- }
- },
- {
- "ID": 1705437922352,
- "data": {
- "x": [
- -0.244, -0.216, -0.076, -0.112, -0.196, -0.184, -0.136, -0.044, 0.064, 0.064,
- -0.088, -0.244, -0.416, -0.452, -0.48, -0.516, -0.568, -0.688, -0.728, -0.772,
- -0.784, -0.768, -0.732, -0.696, -0.648, -0.576, -0.544, -0.52, -0.504, -0.492,
- -0.492, -0.484, -0.436, -0.388, -0.376, -0.352, -0.32, -0.268, -0.252, -0.244,
- -0.248, -0.22, -0.208, -0.212, -0.212, -0.18, -0.208, -0.252, -0.32, -0.356,
- -0.332, -0.252, -0.228, -0.236, -0.212, -0.148, -0.116, -0.112, -0.088,
- -0.056, -0.056, -0.04, 0.032, 0.076, 0.004, -0.148, -0.188, -0.176, -0.176,
- -0.264, -0.412, -0.476, -0.42, -0.344, -0.32, -0.312, -0.376, -0.46, -0.436,
- -0.348, -0.26, -0.268, -0.376, -0.484, -0.508, -0.5, -0.512, -0.492, -0.488,
- -0.456, -0.436, -0.448, -0.46
- ],
- "y": [
- 0.664, 0.58, 0.64, 0.796, 0.9, 0.844, 0.764, 0.792, 0.788, 0.78, 0.884, 1.036,
- 1.16, 1.228, 1.248, 1.252, 1.264, 1.292, 1.26, 1.264, 1.236, 1.188, 1.176,
- 1.136, 1.124, 1.06, 1.004, 0.964, 0.964, 1.008, 1.036, 1.004, 1.004, 1, 0.992,
- 0.98, 0.94, 0.92, 0.896, 0.884, 0.884, 0.852, 0.816, 0.792, 0.792, 0.764,
- 0.76, 0.728, 0.712, 0.724, 0.728, 0.728, 0.72, 0.7, 0.708, 0.728, 0.708,
- 0.696, 0.732, 0.752, 0.76, 0.752, 0.756, 0.684, 0.668, 0.752, 0.9, 0.96,
- 0.932, 0.892, 0.94, 1, 1.028, 1.04, 1.04, 1.044, 1.052, 1.06, 1.02, 0.98,
- 0.932, 0.916, 0.928, 0.96, 0.996, 0.98, 1.024, 1.028, 1, 0.968, 0.924, 0.928,
- 0.9
- ],
- "z": [
- -0.524, -0.62, -0.732, -0.652, -0.576, -0.608, -0.648, -0.796, -0.868, -0.848,
- -0.744, -0.648, -0.604, -0.576, -0.568, -0.528, -0.504, -0.444, -0.416, -0.38,
- -0.36, -0.316, -0.26, -0.2, -0.152, -0.136, -0.116, -0.116, -0.108, -0.044,
- -0.004, 0.036, 0.072, 0.072, 0.064, 0.072, 0.068, 0.076, 0.08, 0.088, 0.104,
- 0.096, 0.092, 0.068, -0.008, -0.084, -0.092, -0.144, -0.184, -0.224, -0.272,
- -0.324, -0.332, -0.352, -0.404, -0.436, -0.452, -0.484, -0.492, -0.532, -0.56,
- -0.612, -0.688, -0.74, -0.744, -0.688, -0.624, -0.608, -0.628, -0.656, -0.672,
- -0.524, -0.46, -0.468, -0.532, -0.596, -0.604, -0.6, -0.644, -0.66, -0.748,
- -0.752, -0.76, -0.676, -0.608, -0.508, -0.392, -0.34, -0.296, -0.304, -0.344,
- -0.372, -0.38
- ]
- }
- },
- {
- "ID": 1705437913803,
- "data": {
- "x": [
- 0.864, 0.94, 1.108, 1.224, 1.232, 1.22, 1.212, 1.228, 1.012, 0.944, 0.86,
- 0.804, 0.788, 0.76, 0.732, 0.68, 0.64, 0.676, 0.496, 0.356, 0.204, 0.044,
- -0.02, -0.008, -0.028, -0.072, -0.184, -0.324, -0.488, -0.536, -0.488, -0.404,
- -0.4, -0.448, -0.316, -0.34, -0.516, -0.652, -0.548, -0.376, -0.444, -0.496,
- -0.496, -0.428, -0.344, -0.724, -0.196, 0.044, 0.112, 0.248, 0.328, 0.392,
- 0.372, 0.34, 0.296, 0.22, 0.192, 0.212, 0.228, 0.32, 0.332, 0.38, 0.416,
- 0.456, 0.5, 0.516, 0.508, 0.496, 0.46, 0.448, 0.444, 0.424, 0.34, 0.324,
- 0.344, 0.252, 0.228, 0.18, 0.088, 0.016, 0.012, 0.016, 0.004, -0.024, -0.108,
- -0.16, -0.212, -0.316, -0.412, -0.42, -0.38, -0.296, -0.244
- ],
- "y": [
- 0.056, 0.036, 0.02, -0.044, -0.104, -0.136, -0.152, 0.064, -0.228, -0.192,
- -0.224, -0.2, -0.216, -0.2, -0.188, -0.184, -0.164, -0.08, -0.044, -0.004,
- 0.068, 0.176, 0.236, 0.24, 0.232, 0.244, 0.308, 0.36, 0.396, 0.424, 0.4,
- 0.368, 0.348, 0.388, 0.36, 0.328, 0.3, 0.332, 0.344, 0.244, 0.068, -0.096,
- -0.092, -0.06, -0.02, 0.452, -0.112, -0.112, -0.032, 0.056, 0.152, 0.096,
- 0.06, 0.072, 0.072, 0.18, 0.236, 0.212, 0.136, 0.1, 0.092, 0.108, 0.108,
- 0.076, 0.04, 0.028, 0.052, 0.096, 0.124, 0.088, 0.064, 0.056, 0.148, 0.26,
- 0.304, 0.272, 0.26, 0.308, 0.34, 0.416, 0.452, 0.404, 0.428, 0.456, 0.52,
- 0.536, 0.528, 0.552, 0.604, 0.648, 0.696, 0.64, 0.596
- ],
- "z": [
- -1.236, -1.128, -0.992, -0.916, -0.844, -0.796, -0.724, -0.672, -0.576,
- -0.496, -0.552, -0.448, -0.472, -0.452, -0.38, -0.312, -0.28, -0.18, -0.248,
- -0.324, -0.428, -0.468, -0.464, -0.432, -0.48, -0.524, -0.58, -0.66, -0.78,
- -0.808, -0.784, -0.732, -0.76, -0.744, -0.744, -0.8, -0.904, -1.032, -1.076,
- -1.14, -1.3, -1.504, -1.62, -1.652, -1.604, -1.556, -1.52, -1.432, -1.252,
- -1.08, -1.064, -1.1, -1.1, -1.048, -1.044, -1.064, -1.132, -1.184, -1.24,
- -1.332, -1.292, -1.268, -1.232, -1.224, -1.18, -1.14, -1.088, -1.016, -0.892,
- -0.832, -0.812, -0.836, -0.82, -0.792, -0.748, -0.708, -0.764, -0.736, -0.712,
- -0.68, -0.668, -0.68, -0.66, -0.672, -0.656, -0.636, -0.64, -0.692, -0.724,
- -0.752, -0.768, -0.772, -0.792
- ]
- }
- },
- {
- "ID": 1705437908508,
- "data": {
- "x": [
- -0.432, -0.432, -0.404, -0.48, -0.588, -0.9, -0.752, -0.852, -1.02, -1.108,
- -1.044, -0.944, -0.888, -0.876, -0.852, -0.756, -0.828, -0.868, -0.908,
- -0.928, -0.84, -0.756, -0.66, -0.576, -0.512, -0.484, -0.424, -0.42, -0.436,
- -0.408, -0.352, -0.272, -0.216, -0.208, -0.236, -0.188, -0.148, -0.104,
- -0.084, -0.08, -0.076, -0.064, -0.08, -0.108, -0.132, -0.188, -0.232, -0.212,
- -0.212, -0.288, -0.384, -0.392, -0.372, -0.348, -0.388, -0.528, -0.732, -0.76,
- -0.684, -0.732, -0.9, -1.032, -1.092, -1.004, -0.98, -1, -0.972, -0.992, -1,
- -1.06, -1.084, -1.052, -1.012, -0.996, -0.904, -0.796, -0.692, -0.564, -0.404,
- -0.388, -0.312, -0.32, -0.324, -0.324, -0.364, -0.428, -0.484, -0.508, -0.496,
- -0.508, -0.508, -0.508, -0.496
- ],
- "y": [
- 0.68, 0.644, 0.576, 0.52, 0.496, 0.492, 0.548, 0.68, 0.704, 0.696, 0.712,
- 0.772, 0.804, 0.82, 0.812, 0.84, 0.888, 0.948, 0.94, 0.96, 0.96, 0.972, 0.96,
- 0.924, 0.916, 0.888, 0.9, 0.904, 0.88, 0.86, 0.876, 0.832, 0.824, 0.8, 0.74,
- 0.716, 0.692, 0.672, 0.628, 0.572, 0.604, 0.608, 0.608, 0.592, 0.572, 0.564,
- 0.54, 0.528, 0.54, 0.544, 0.512, 0.512, 0.524, 0.536, 0.524, 0.536, 0.468,
- 0.472, 0.492, 0.52, 0.564, 0.596, 0.692, 0.748, 0.764, 0.748, 0.812, 0.876,
- 0.872, 0.816, 0.8, 0.86, 0.904, 0.892, 0.892, 0.912, 0.932, 0.936, 0.824, 1,
- 0.844, 0.86, 0.832, 0.808, 0.788, 0.776, 0.78, 0.76, 0.756, 0.776, 0.772,
- 0.772, 0.776
- ],
- "z": [
- -0.252, -0.272, -0.324, -0.252, -0.216, -0.104, -0.072, -0.012, -0.036,
- -0.128, -0.248, -0.308, -0.364, -0.424, -0.408, -0.572, -0.464, -0.508,
- -0.468, -0.504, -0.452, -0.464, -0.496, -0.58, -0.664, -0.72, -0.704, -0.744,
- -0.784, -0.856, -0.884, -0.94, -0.856, -0.84, -0.86, -0.864, -0.832, -0.788,
- -0.744, -0.744, -0.716, -0.648, -0.556, -0.516, -0.468, -0.38, -0.312, -0.272,
- -0.228, -0.184, -0.16, -0.144, -0.108, -0.048, -0.044, -0.004, 0.02, -0.012,
- 0.044, 0.1, 0.144, 0.152, 0.156, 0.128, 0.104, 0.116, 0.172, 0.148, 0.088,
- 0.032, -0.032, -0.092, -0.188, -0.34, -0.452, -0.548, -0.592, -0.684, -0.652,
- -0.912, -0.672, -0.604, -0.6, -0.584, -0.564, -0.504, -0.504, -0.496, -0.484,
- -0.472, -0.46, -0.456, -0.448
- ]
- }
- },
- {
- "ID": 1705437905957,
- "data": {
- "x": [
- -0.436, -0.42, -0.432, -0.388, -0.36, -0.22, -0.12, -0.156, -0.336, -0.496,
- -0.56, -0.6, -0.684, -0.856, -1.036, -1.14, -1.048, -0.908, -0.884, -0.936,
- -1.016, -1.056, -1.06, -1.024, -1.028, -1.04, -0.964, -0.872, -0.824, -0.796,
- -0.832, -0.868, -0.804, -0.716, -0.64, -0.608, -0.584, -0.572, -0.544, -0.512,
- -0.516, -0.5, -0.476, -0.464, -0.448, -0.444, -0.444, -0.364, -0.28, -0.212,
- -0.228, -0.312, -0.392, -0.4, -0.376, -0.332, -0.256, -0.232, -0.244, -0.244,
- -0.26, -0.396, -0.552, -0.68, -0.836, -0.888, -0.852, -0.928, -0.972, -1.004,
- -0.976, -0.928, -0.92, -0.94, -0.952, -0.904, -0.848, -0.828, -0.856, -0.844,
- -0.804, -0.78, -0.764, -0.764, -0.732, -0.712, -0.712, -0.692, -0.688, -0.692,
- -0.64, -0.6, -0.588
- ],
- "y": [
- 0.54, 0.504, 0.48, 0.512, 0.524, 0.6, 0.752, 0.936, 0.916, 0.936, 0.92, 0.992,
- 0.992, 1.028, 1.056, 1.072, 1.064, 1.016, 0.976, 0.908, 0.856, 0.848, 0.812,
- 0.796, 0.784, 0.792, 0.78, 0.752, 0.744, 0.732, 0.724, 0.708, 0.7, 0.692,
- 0.672, 0.672, 0.68, 0.652, 0.644, 0.64, 0.628, 0.6, 0.56, 0.552, 0.516, 0.496,
- 0.492, 0.472, 0.508, 0.524, 0.556, 0.592, 0.632, 0.664, 0.66, 0.712, 0.768,
- 0.808, 0.812, 0.848, 0.876, 0.908, 0.932, 0.984, 1.012, 1.02, 1.004, 0.968,
- 0.916, 0.86, 0.868, 0.816, 0.784, 0.74, 0.72, 0.692, 0.684, 0.676, 0.7, 0.712,
- 0.732, 0.74, 0.764, 0.788, 0.776, 0.756, 0.776, 0.764, 0.752, 0.732, 0.716,
- 0.724, 0.712
- ],
- "z": [
- -0.288, -0.312, -0.356, -0.36, -0.44, -0.7, -0.964, -0.852, -0.704, -0.612,
- -0.592, -0.588, -0.524, -0.468, -0.368, -0.364, -0.364, -0.356, -0.328,
- -0.288, -0.248, -0.256, -0.296, -0.292, -0.232, -0.204, -0.176, -0.148,
- -0.132, -0.072, -0.004, 0.08, 0.132, 0.164, 0.188, 0.216, 0.204, 0.164, 0.088,
- 0.032, 0.044, 0.04, 0.068, 0.06, 0.016, -0.048, -0.124, -0.208, -0.296,
- -0.404, -0.428, -0.4, -0.38, -0.408, -0.512, -0.624, -0.7, -0.712, -0.76,
- -0.8, -0.872, -0.88, -0.824, -0.684, -0.6, -0.528, -0.468, -0.384, -0.292,
- -0.272, -0.28, -0.3, -0.296, -0.276, -0.3, -0.32, -0.34, -0.372, -0.388,
- -0.376, -0.396, -0.412, -0.404, -0.376, -0.38, -0.368, -0.364, -0.396, -0.4,
- -0.38, -0.356, -0.32, -0.328
- ]
- }
- },
- {
- "ID": 1705437896254,
- "data": {
- "x": [
- -0.632, -0.608, -0.592, -0.584, -0.644, -0.868, -0.492, -0.528, -0.712,
- -0.784, -0.708, -0.588, -0.632, -0.752, -0.876, -0.852, -0.808, -0.84, -0.944,
- -0.936, -0.9, -0.936, -1.02, -1.104, -1.084, -1.076, -1.048, -1.048, -1.112,
- -1.144, -1.188, -1.208, -1.228, -1.288, -1.296, -1.264, -1.2, -1.18, -1.132,
- -1.02, -0.956, -0.912, -0.872, -0.848, -0.824, -0.876, -0.892, -0.844, -0.808,
- -0.732, -0.716, -0.78, -0.852, -0.76, -0.62, -0.588, -0.636, -0.632, -0.564,
- -0.52, -0.508, -0.52, -0.484, -0.412, -0.432, -0.428, -0.444, -0.496, -0.48,
- -0.452, -0.46, -0.508, -0.516, -0.512, -0.448, -0.4, -0.404, -0.46, -0.532,
- -0.568, -0.484, -0.38, -0.444, -0.572, -0.728, -0.728, -0.616, -0.644, -0.656,
- -0.704, -0.688, -0.644, -0.652
- ],
- "y": [
- 0.364, 0.344, 0.352, 0.38, 0.396, 0.604, 0.4, 0.428, 0.468, 0.48, 0.472,
- 0.436, 0.42, 0.408, 0.42, 0.424, 0.38, 0.304, 0.26, 0.244, 0.244, 0.232,
- 0.184, 0.176, 0.112, 0.128, 0.14, 0.12, 0.092, 0.072, 0.056, 0.076, 0.104,
- 0.124, 0.14, 0.164, 0.2, 0.216, 0.224, 0.248, 0.28, 0.308, 0.324, 0.348, 0.38,
- 0.404, 0.408, 0.408, 0.384, 0.372, 0.356, 0.372, 0.3, 0.284, 0.352, 0.372,
- 0.38, 0.364, 0.412, 0.32, 0.36, 0.32, 0.308, 0.276, 0.332, 0.34, 0.324, 0.344,
- 0.372, 0.368, 0.368, 0.408, 0.464, 0.476, 0.44, 0.424, 0.468, 0.484, 0.496,
- 0.468, 0.46, 0.484, 0.5, 0.504, 0.464, 0.448, 0.432, 0.396, 0.352, 0.34, 0.32,
- 0.32, 0.316
- ],
- "z": [
- -0.524, -0.552, -0.576, -0.58, -0.58, -0.724, -0.484, -0.496, -0.556, -0.524,
- -0.552, -0.58, -0.648, -0.732, -0.784, -0.596, -0.644, -0.72, -0.756, -0.744,
- -0.724, -0.7, -0.684, -0.716, -0.716, -0.68, -0.668, -0.656, -0.708, -0.736,
- -0.696, -0.712, -0.684, -0.7, -0.688, -0.644, -0.596, -0.556, -0.572, -0.552,
- -0.524, -0.496, -0.472, -0.504, -0.464, -0.368, -0.412, -0.42, -0.42, -0.436,
- -0.372, -0.352, -0.352, -0.4, -0.372, -0.336, -0.292, -0.376, -0.392, -0.444,
- -0.456, -0.436, -0.504, -0.56, -0.58, -0.62, -0.68, -0.716, -0.76, -0.76,
- -0.768, -0.764, -0.792, -0.784, -0.76, -0.74, -0.728, -0.66, -0.7, -0.756,
- -0.86, -0.776, -0.76, -0.812, -0.876, -0.872, -0.908, -0.96, -0.976, -0.996,
- -1.032, -0.976, -0.96
- ]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- },
- {
- "ID": 1705437793875,
- "name": "Still",
- "recordings": [
- {
- "ID": 1705437992143,
- "data": {
- "x": [
- -0.112, -0.356, -0.62, -0.892, -1.508, -1.848, -2.04, -2.04, -1.868, -1.3,
- -0.824, -0.48, 0.256, 0.752, 0.864, -0.044, -0.908, -1.716, -2.04, -2.008,
- -1.856, -1.336, -0.84, 0.192, 0.58, 0.504, -0.008, -0.232, -1.132, -2.04,
- -2.04, -2.04, -1.012, -0.48, 0.028, 0.256, 0.608, 0.332, -0.004, -0.876,
- -2.04, -2.04, -2.04, -1.688, -1.396, -0.828, -0.032, 0.36, 0.492, 0.288,
- 0.008, -0.492, -1.368, -2.04, -2.04, -1.828, -1.368, -0.668, -0.248, 0.108,
- 0.664, 0.544, 0.248, -0.404, -1.388, -2.04, -2.04, -1.86, -1.372, -1.072,
- -0.612, 0.16, 0.52, 0.488, 0.256, -0.144, -0.752, -1.732, -2.04, -2.04,
- -1.668, -1.208, -0.884, -0.556, 0.024, 0.48, 0.556, 0.248, -0.096, -0.9,
- -2.04, -2.04, -1.992
- ],
- "y": [
- 0.436, 0.416, 0.308, 0.168, 0.148, -0.056, 0.352, 0.356, 0.3, 0.244, 0.324,
- 0.264, 0.16, 0.396, 0.456, 0.208, 0.244, 0.252, 0.312, 0.396, 0.328, 0.364,
- 0.204, 0.188, 0.548, 0.536, 0.388, 0.22, 0.052, 0.54, 1.076, -0.116, 0.048,
- 0.132, 0.448, 0.528, 0.608, 0.6, 0.412, 0.152, 0.524, 0.416, 0.252, 0.308,
- 0.376, 0.316, 0.356, 0.644, 0.672, 0.544, 0.404, 0.164, 0.208, 0.624, 0.536,
- 0.256, 0.272, 0.404, 0.492, 0.5, 0.712, 0.656, 0.568, 0.264, 0.296, 0.496,
- 0.284, 0.28, 0.288, 0.42, 0.492, 0.488, 0.616, 0.684, 0.588, 0.396, 0.232,
- 0.452, 0.98, 0.484, 0.36, 0.372, 0.544, 0.48, 0.496, 0.6, 0.692, 0.528, 0.288,
- 0.204, 0.476, 1.112, 0.2
- ],
- "z": [
- -0.576, -0.592, -0.516, -0.38, -0.368, 0.208, -0.028, 0.048, 0.008, -0.096,
- -0.288, -0.396, -0.516, -0.556, -0.312, -0.056, -0.168, -0.108, 0.196, 0.268,
- 0.1, -0.16, -0.32, -0.64, -0.692, -0.56, -0.26, -0.092, -0.204, 0.304, 0.78,
- 0.364, 0.108, -0.24, -0.528, -0.608, -0.552, -0.208, -0.048, -0.14, 0.42,
- 0.552, 0.42, 0.128, 0.276, -0.332, -0.648, -0.648, -0.544, -0.212, 0.036,
- -0.004, -0.148, 0.304, 0.212, 0.344, 0.352, 0.064, -0.572, -0.628, -0.616,
- -0.276, -0.008, -0.18, -0.044, 0.012, 0.368, 0.32, 0.372, -0.092, -0.288,
- -0.608, -0.712, -0.432, -0.252, -0.024, 0.044, -0.052, 0.4, 0.504, 0.196,
- -0.016, -0.172, -0.308, -0.66, -0.72, -0.52, -0.268, -0.072, -0.176, 0.136,
- 0.34, 0.7
- ]
- }
- },
- {
- "ID": 1705437989960,
- "data": {
- "x": [
- -0.4, 0.232, 0.708, 1.068, 1.284, 1.36, 1.02, 0.816, 0.332, -0.152, -1.496,
- -2.04, -2.04, -1.14, -0.968, -0.648, 0.232, 1, 1.34, 1.32, 0.864, 0.256,
- -0.696, -1.884, -2.04, -2.04, -1.62, -1.028, -0.196, 0.42, 0.608, 0.488,
- 0.168, -0.528, -1.488, -2.028, -2.04, -2.04, -1.588, -1.08, -0.512, -0.028,
- 0.216, 0.268, 0.052, -0.38, -0.684, -0.788, -1.056, -1.768, -2.04, -2.04,
- -1.344, -0.8, -0.436, -0.172, 0.22, 0.456, -0.124, -0.504, -0.864, -1.14,
- -1.544, -2.02, -2.016, -1.52, -1.004, -0.456, -0.156, 0.064, 0.128, -0.204,
- -0.46, -0.816, -1.22, -1.596, -1.884, -1.816, -1.44, -0.948, -0.516, -0.196,
- 0.06, 0.124, -0.16, -0.504, -0.72, -0.928, -1.42, -1.8, -2.032, -1.76
- ],
- "y": [
- 0.592, 0.364, 0.128, -0.004, -0.06, -0.156, -0.04, 0.08, 0.284, 0.456, 0.188,
- 1.104, 0.9, 0.6, 0.536, 0.388, 0.34, 0.316, 0.292, 0.32, 0.252, 0.208, 0.152,
- 0.3, 0.792, 0.776, 0.748, 0.588, 0.44, 0.372, 0.4, 0.424, 0.376, 0.296, 0.448,
- 0.596, 0.644, 0.732, 0.58, 0.496, 0.46, 0.444, 0.568, 0.56, 0.456, 0.408,
- 0.38, 0.284, 0.22, 0.352, 0.792, 0.636, 0.452, 0.456, 0.468, 0.392, 0.376,
- 0.348, 0.34, 0.396, 0.456, 0.364, 0.432, 0.704, 0.728, 0.584, 0.416, 0.424,
- 0.428, 0.432, 0.288, 0.3, 0.368, 0.392, 0.436, 0.512, 0.684, 0.664, 0.556,
- 0.496, 0.472, 0.456, 0.444, 0.7, 0.304, 0.36, 0.292, 0.276, 0.328, 0.536,
- 0.78, 0.7
- ],
- "z": [
- -1.196, -0.908, -0.712, -0.556, -0.44, -0.42, -0.548, -0.512, -0.596, -0.696,
- -1.364, -0.26, -0.592, -0.788, -0.876, -0.84, -0.888, -0.948, -0.972, -1.192,
- -1.148, -0.808, -0.636, -0.42, 0.076, 0.42, 0.124, -0.224, -0.572, -0.924,
- -1.032, -0.972, -0.656, -0.708, -0.492, -0.096, 0.428, 0.548, 0.196, -0.012,
- -0.364, -0.744, -0.996, -1.08, -1.448, -1.444, -1.136, -0.652, -0.104, 0.528,
- 1.116, 0.88, 0.384, 0.048, -0.348, -0.804, -1.34, -1.604, -1.624, -1.3, -0.7,
- -0.116, 0.544, 0.996, 0.784, 0.448, 0.084, -0.468, -0.964, -1.508, -1.86,
- -1.5, -1.08, -0.54, 0.112, 0.68, 1.224, 1.028, 0.66, 0.256, -0.24, -0.712,
- -1.24, -1.232, -1.604, -1.456, -1.004, -0.428, 0.18, 0.576, 1.292, 0.92
- ]
- }
- },
- {
- "ID": 1705437987590,
- "data": {
- "x": [
- -1.464, -1.144, -0.92, -0.696, -0.22, -0.016, 0.168, 0.384, 0.552, 0.872,
- 1.164, 1.284, 1.192, 0.904, 0.38, -1.068, -1.9, -0.784, -0.312, -0.144, 0.076,
- 0.36, 0.812, 1.116, 1.18, 1.072, 0.752, 0.004, -1.244, -0.88, -0.372, -0.04,
- 0.252, 0.616, 1.016, 1.332, 1.296, 1.068, 0.748, 0.384, -0.748, -1.776, -0.68,
- -0.312, -0.052, 0.396, 0.932, 1.264, 1.364, 1.144, 0.84, 0.328, -0.696,
- -1.504, -0.78, -0.38, -0.1, 0.244, 0.608, 0.86, 1.172, 1.436, 1.492, 1.268,
- 0.784, -0.5, -1.484, -0.62, -0.272, -0.128, 0.324, 0.716, 1.168, 1.568, 1.692,
- 1.452, 0.88, -0.108, -1.46, -1.128, -0.616, -0.432, 0.008, 0.68, 1.264, 1.68,
- 1.804, 1.496, 0.884, -0.14, -1.08, -0.852
- ],
- "y": [
- 0.668, 0.576, 0.556, 0.508, 0.36, 0.472, 0.384, 0.34, 0.24, 0.124, 0.068,
- 0.052, 0.052, 0.12, 0.02, 0.124, 0.836, 0.556, 0.612, 0.62, 0.588, 0.452,
- 0.304, 0.26, 0.108, 0.096, 0.108, -0.108, 0.072, 0.372, 0.344, 0.456, 0.368,
- 0.3, 0.316, 0.332, 0.272, 0.204, 0.196, 0.104, 0, 0.484, 0.416, 0.384, 0.356,
- 0.32, 0.216, 0.244, 0.284, 0.208, 0.196, 0.136, -0.06, 0.52, 0.34, 0.332,
- 0.336, 0.26, 0.224, 0.184, 0.104, 0.116, 0.132, 0.116, 0.084, 0.068, 0.588,
- 0.42, 0.396, 0.364, 0.272, 0.196, 0.044, -0.008, 0.02, 0, 0.048, -0.02, 0.428,
- 0.592, 0.552, 0.524, 0.324, 0.128, -0.1, -0.128, -0.068, -0.052, 0.044, 0.08,
- 0.352, 0.632
- ],
- "z": [
- -0.148, -0.472, -0.476, -0.388, -0.684, -0.404, -0.46, -0.38, -0.36, -0.384,
- -0.572, -0.792, -1.084, -1.36, -1.62, -2.04, -1.748, -1.216, -0.844, -0.48,
- -0.168, 0.036, 0.048, -0.032, -0.232, -0.596, -1.076, -1.596, -1.952, -2.016,
- -1.496, -1.008, -0.52, -0.216, -0.04, 0.04, -0.06, -0.324, -0.676, -1.124,
- -1.784, -2.04, -1.748, -1.408, -0.936, -0.444, -0.108, 0.104, 0.088, -0.116,
- -0.396, -0.836, -1.608, -2.04, -1.964, -1.612, -1.184, -0.764, -0.46, -0.156,
- 0.112, 0.204, 0.056, -0.304, -0.76, -1.54, -2.04, -2.04, -1.768, -1.204,
- -0.708, -0.244, 0.152, 0.332, 0.264, -0.024, -0.424, -0.984, -1.7, -2.04,
- -1.984, -1.372, -0.764, -0.296, 0.084, 0.216, 0.12, -0.136, -0.472, -0.992,
- -1.876, -2.04
- ]
- }
- },
- {
- "ID": 1705437985014,
- "data": {
- "x": [
- -0.392, -0.532, -0.452, -0.576, -0.748, -0.908, -0.984, -1.12, -1.04, -0.82,
- -0.668, -0.184, 0.18, 0.428, 0.816, 1.248, 1.38, 1.188, 0.936, 0.456, 0.132,
- -0.5, -1.94, -2.04, -2.04, -1.536, -0.74, -0.38, 0.056, 0.4, 0.984, 1.208,
- 0.812, 0.396, -0.2, -1.508, -2.024, -1.576, -0.732, -0.212, 0.252, 0.536,
- 0.776, 0.716, 0.46, -0.036, -1.18, -1.752, -1.272, -0.952, -0.592, -0.348,
- 0.148, 0.316, 0.884, 0.832, 0.688, 0.452, -0.216, -1.084, -1.94, -1.252,
- -0.792, -0.544, -0.16, 0.284, 0.676, 0.672, 0.56, 0.34, -0.036, -0.916,
- -2.036, -1.516, -0.892, -0.536, -0.256, -0.068, 0.256, 0.528, 0.584, 0.452,
- 0.124, -0.424, -1.404, -1.912, -1.208, -0.78, -0.54, -0.264, 0.076, 0.544,
- 0.528
- ],
- "y": [
- 0.328, 0.336, 0.336, 0.304, 0.328, 0.38, 0.396, 0.384, 0.348, 0.46, 0.512,
- 0.408, 0.348, 0.18, -0.028, -0.08, -0.036, 0.02, 0.136, 0.164, 0.048, -0.22,
- 0.464, 1.092, 1.044, 0.812, 0.496, 0.348, 0.236, 0.132, 0.064, 0.124, 0.152,
- 0.304, 0.248, 0.896, 1.34, 1.08, 0.76, 0.636, 0.436, 0.244, 0.224, 0.176,
- 0.236, 0.24, 0.66, 1.26, 1.124, 1.04, 0.784, 0.572, 0.008, 0.272, 0.068,
- 0.124, 0.192, 0.244, 0.564, 0.636, 1.372, 0.976, 0.904, 0.68, 0.416, 0.036,
- 0.076, 0.092, 0.208, 0.348, 0.412, 0.768, 1.088, 1, 0.844, 0.708, 0.54, 0.424,
- 0.228, 0.196, 0.116, 0.232, 0.34, 0.492, 0.84, 1.196, 0.956, 0.844, 0.672,
- 0.496, 0.26, 0.232, 0.228
- ],
- "z": [
- -0.932, -0.884, -1.076, -0.972, -0.776, -0.744, -0.856, -0.884, -0.892,
- -0.844, -0.744, -0.572, -0.504, -0.576, -0.668, -1, -1.204, -1.144, -1.044,
- -0.832, -0.664, -1.024, -0.46, 0.276, -0.064, -0.16, -0.476, -0.416, -0.764,
- -0.892, -1.332, -1.872, -1.152, -0.744, -0.904, -0.704, -0.028, -0.296,
- -0.256, -0.592, -0.848, -1, -1.404, -1.22, -1.3, -0.76, -0.848, 0.028, -0.14,
- -0.14, -0.3, -0.576, -1.052, -0.276, -2.04, -1.556, -1.308, -1.328, -0.572,
- -0.492, -0.212, 0.076, -0.28, -0.44, -0.688, -0.856, -1.768, -1.464, -1.268,
- -0.9, -0.588, -0.46, -0.352, -0.18, -0.328, -0.404, -0.576, -0.9, -1.328,
- -1.48, -1.444, -1.12, -0.704, -0.876, -0.452, -0.156, -0.256, -0.28, -0.424,
- -0.608, -0.652, -1.504, -1.412
- ]
- }
- },
- {
- "ID": 1705437822437,
- "data": {
- "x": [
- -0.684, -0.688, -0.672, -0.668, -0.628, -0.564, -0.576, -0.7, -0.896, -0.96,
- -1.016, -0.888, -0.752, -0.564, -0.46, -0.36, -0.288, -0.204, -0.12, -0.164,
- -0.248, -0.236, -0.088, -0.644, -1.068, -0.812, -0.644, -0.56, -0.372, -0.292,
- -0.272, -0.076, -0.04, -0.08, -0.172, -0.288, -0.276, -0.06, -0.532, -1.132,
- -0.828, -0.72, -0.712, -0.368, -0.296, -0.34, -0.28, -0.216, -0.164, -0.18,
- -0.272, -0.408, -0.644, -0.764, -0.732, -0.636, -0.62, -0.524, -0.344, -0.16,
- -0.032, -0.088, -0.136, -0.224, -0.252, -0.18, -0.484, -0.872, -0.844, -0.72,
- -0.624, -0.572, -0.48, -0.392, -0.356, -0.292, -0.244, -0.208, -0.288, -0.372,
- -0.364, -0.216, -0.464, -1.016, -0.904, -0.956, -0.812, -0.564, -0.632,
- -0.468, -0.34, -0.272
- ],
- "y": [
- 0.1, 0.048, 0.028, 0.24, 0.336, 0.376, 0.208, -0.328, -1.1, -1.368, -1.216,
- -0.936, -0.488, -0.032, 0.468, 1.056, 1.708, 1.856, 1.896, 1.692, 1.224,
- 0.592, -0.744, -2.04, -2.04, -2.04, -1.404, -0.66, -0.204, 0.568, 0.92, 1.304,
- 1.768, 1.876, 1.5, 1.056, 0.596, -0.508, -2.04, -2.04, -2.032, -1.288, -0.796,
- 0.108, 1.112, 1.588, 1.832, 1.832, 1.588, 1.176, 0.232, -0.968, -2.04, -2.04,
- -2.04, -1.68, -1.08, -0.388, 0.248, 1.02, 1.704, 2.04, 1.98, 1.488, 0.868,
- -0.08, -1.912, -2.04, -2.04, -1.916, -1.296, -0.684, 0.088, 0.532, 0.92,
- 1.156, 1.348, 1.58, 1.616, 1.312, 0.816, -0.012, -2.04, -2.04, -2.04, -2.004,
- -1.492, -0.904, 0.028, 0.564, 0.976, 1.292
- ],
- "z": [
- -0.736, -0.788, -0.756, -0.768, -0.796, -0.908, -0.936, -1.024, -0.764,
- -0.412, -0.34, -0.408, -0.56, -0.62, -0.624, -0.896, -1.092, -1.164, -1.144,
- -0.992, -0.844, -0.808, -0.736, -0.016, 0.356, -0.172, -0.32, -0.58, -0.672,
- -0.952, -0.988, -1.092, -1.16, -1.104, -1.032, -0.924, -0.872, -0.736, -0.256,
- 0.276, -0.392, -0.444, -0.476, -0.656, -1.124, -1.136, -1.156, -1.18, -1.004,
- -0.884, -0.812, -0.664, -0.508, -0.284, -0.312, -0.392, -0.5, -0.64, -0.84,
- -1.172, -1.3, -1.352, -1.128, -0.968, -0.836, -0.764, -0.5, -0.152, -0.372,
- -0.372, -0.432, -0.612, -0.892, -1.08, -1.212, -1.324, -1.208, -0.992, -0.828,
- -0.744, -0.86, -0.872, -0.732, 0.012, 0.256, -0.084, -0.124, -0.208, -0.512,
- -0.816, -1.18, -1.332
- ]
- }
- },
- {
- "ID": 1705437819739,
- "data": {
- "x": [
- -0.268, -0.048, 0.06, 0.028, -0.108, -0.3, -0.412, -0.536, -0.668, -0.928,
- -1.18, -1.26, -0.86, -0.372, 0.344, 0.564, 0.548, 0.392, 0.14, -0.124, -0.264,
- -0.324, -0.376, -0.636, -1.312, -1.216, -1.036, -0.744, -0.256, 0.188, 0.132,
- 0.112, 0.164, 0.008, -0.132, -0.22, -0.28, -0.504, -0.924, -1.192, -1.176,
- -0.988, -0.648, -0.088, 0.08, 0.212, 0.104, 0.144, 0.008, -0.112, -0.264,
- -0.336, -0.312, -0.468, -0.856, -1.132, -1.12, -0.932, -0.692, -0.384, -0.084,
- 0.132, 0.064, 0.02, 0.016, -0.116, -0.212, -0.288, -0.28, -0.468, -1.032,
- -1.404, -1.112, -0.844, -0.616, -0.22, -0.044, -0.132, -0.22, -0.088, -0.164,
- -0.252, -0.32, -0.368, -0.432, -0.604, -0.876, -1.016, -1, -0.92, -0.848
- ],
- "y": [
- -0.22, -0.116, -0.016, 0.048, 0.056, 0, -0.02, 0.036, 0.056, -0.256, -1.256,
- -1.636, -1.248, -0.856, -0.344, 0.048, 0.54, 1.044, 1.216, 1.132, 0.848,
- 0.468, -0.156, -1.38, -1.892, -1.296, -0.94, -0.836, -0.496, -0.092, 0.288,
- 0.664, 0.7, 0.648, 0.716, 0.6, 0.232, -0.704, -1.436, -1.448, -1.124, -0.968,
- -0.736, -0.62, 0.052, 0.148, 0.328, 0.54, 0.572, 0.564, 0.544, 0.32, -0.064,
- -0.828, -1.444, -1.42, -1.224, -0.952, -0.748, -0.524, -0.44, -0.744, 0.068,
- 0.456, 0.816, 0.788, 0.824, 0.536, 0.124, -0.688, -1.372, -1.516, -0.964,
- -0.58, -0.488, -0.46, -0.132, 0.264, 0.432, 0.58, 0.7, 0.624, 0.556, 0.312,
- 0.036, -0.832, -1.244, -1.18, -0.9, -0.764, -0.8
- ],
- "z": [
- -1.448, -1.808, -2.04, -2.04, -1.684, -1.22, -0.936, -0.54, 0.412, 1.76, 2.04,
- 1.732, 0.708, -0.084, -1.284, -2.04, -2.04, -2.04, -2.04, -1.44, -1.12, -0.88,
- -0.312, 0.328, 0.988, 1.404, 1.352, 0.476, -0.152, -1.276, -2.04, -2.04,
- -2.04, -2.04, -1.668, -1.176, -0.596, -0.04, 0.844, 1.492, 1.636, 1.064,
- 0.636, -0.136, -1.344, -2.04, -2.04, -2.04, -2.04, -1.82, -1.36, -1.044,
- -0.616, 0.18, 0.912, 1.432, 1.756, 1.2, 0.528, 0.064, -0.612, -1.708, -2.04,
- -2.04, -2.04, -1.932, -1.668, -1.3, -0.744, -0.032, 0.692, 1.284, 1.32, 0.712,
- 0.16, -0.344, -1.06, -2.04, -2.04, -2.04, -2.04, -1.692, -1.396, -1.04,
- -0.636, 0.04, 0.568, 0.784, 0.948, 1.012, 0.68
- ]
- }
- },
- {
- "ID": 1705437816208,
- "data": {
- "x": [
- -0.692, -0.644, -0.548, -0.516, -0.74, -0.872, -0.26, 0.108, 0.268, 0.436,
- 0.248, -0.04, -0.224, -0.272, -0.176, 0.316, -0.408, -1.336, -1.112, -0.712,
- -0.52, -0.432, -0.188, 0.088, 0.148, 0.028, -0.072, -0.164, -0.204, -0.144,
- 0.252, -0.232, -1.312, -1.132, -0.92, -0.764, -0.432, -0.072, 0.096, 0.184,
- 0.156, 0.052, -0.02, -0.068, 0.136, -0.276, -1.244, -1.136, -0.996, -0.872,
- -0.576, -0.328, -0.172, -0.084, -0.072, -0.08, -0.168, -0.22, -0.128, -0.112,
- -1.036, -1.22, -1.008, -0.856, -0.688, -0.368, -0.196, -0.036, 0.052, 0.092,
- 0.076, 0.04, -0.084, -0.212, -0.168, 0.124, -0.724, -1.376, -1.048, -0.872,
- -0.776, -0.608, -0.324, -0.128, -0.004, 0.024, 0.024, -0.008, -0.12, -0.248,
- -0.384, -0.356
- ],
- "y": [
- -1.164, -1.268, -1.532, -1.984, -2.04, -2.04, -1.672, -0.532, 0.236, 1.008,
- 1.736, 2.012, 1.868, 1.056, 0.692, -0.156, -2.04, -2.04, -2.04, -2.04, -1.464,
- -0.956, -0.604, 0.364, 1.252, 1.812, 2.04, 1.88, 1.476, 0.836, -0.228, -2.04,
- -2.04, -2.04, -2.024, -1.712, -1.132, -0.2, 0.816, 1.624, 2.04, 2.04, 1.904,
- 1.084, 0.184, -2.04, -2.04, -2.04, -1.536, -1.236, -0.616, 0, 0.796, 1.36,
- 1.648, 1.532, 1.3, 0.904, 0.28, -1.288, -2.04, -2.04, -1.864, -1.692, -1.2,
- -0.572, 0.008, 0.548, 1.228, 1.792, 2.02, 1.8, 1.408, 1.012, 0.528, -0.748,
- -2.04, -2.04, -1.896, -1.128, -1.06, -0.936, -0.468, 0.244, 0.868, 1.392,
- 1.772, 1.712, 1.304, 0.924, 0.544, 0.144
- ],
- "z": [
- -0.116, -0.136, -0.024, 0.108, 0.696, 0.724, 0.424, 0.18, 0.196, -0.072,
- -0.788, -1.488, -1.564, -0.98, -0.712, -0.504, -0.528, 0.736, 0.544, 0.124,
- -0.104, -0.204, -0.084, -0.356, -0.752, -1.048, -1.136, -1, -0.92, -0.82,
- -0.736, -0.34, 0.824, 0.26, -0.084, -0.072, -0.176, -0.42, -0.6, -0.852,
- -1.132, -1.308, -1.16, -0.968, -0.868, -0.744, 0.668, 0.048, -0.156, -0.248,
- -0.364, -0.6, -0.932, -1.116, -1.224, -1.196, -1.16, -1.044, -0.884, -0.748,
- 0.392, 0.376, -0.156, -0.228, -0.268, -0.54, -0.74, -0.784, -0.816, -0.92,
- -1.024, -0.984, -0.904, -0.868, -0.86, -1.072, 0.016, 0.704, -0.076, -0.348,
- -0.336, -0.372, -0.38, -0.628, -0.84, -0.964, -1.06, -1.116, -1.044, -0.972,
- -0.912, -0.944
- ]
- }
- },
- {
- "ID": 1705437808407,
- "data": {
- "x": [
- -0.756, -0.972, -0.836, -0.82, -0.832, -0.728, -0.904, -0.376, -0.464, -0.328,
- -0.112, 0.084, 0.172, 0.292, 0.404, 0.356, 0.3, 0.116, 0.068, -0.084, -0.348,
- -0.396, -0.628, -0.752, -0.744, -0.856, -0.82, -0.808, -0.688, -0.572, -0.436,
- -0.308, -0.324, -0.068, 0.184, 0.24, 0.276, 0.268, 0.284, 0.26, 0.028, 0.016,
- -0.224, -0.472, -0.54, -0.612, -0.764, -0.916, -0.976, -0.984, -0.94, -0.844,
- -0.8, -0.524, -0.432, -0.256, -0.1, 0.124, 0.208, 0.284, 0.272, 0.288, 0.232,
- 0.152, 0.004, -0.28, -0.408, -0.656, -0.836, -1.068, -1.036, -1.016, -0.952,
- -0.844, -0.724, -0.68, -0.796, -0.564, -0.34, -0.208, -0.104, 0.052, 0.168,
- 0.292, 0.42, 0.408, 0.436, 0.352, 0.164, -0.04, -0.352, -0.488
- ],
- "y": [
- 0.668, 0.968, 0.696, 0.572, 0.688, 0.628, 0.932, 0.596, 0.836, 0.78, 0.556,
- 0.52, 0.492, 0.38, 0.452, 0.304, 0.08, 0.144, 0.264, 0.184, 0.144, 0.472,
- 0.904, 1.004, 0.752, 0.7, 0.808, 1.032, 0.988, 0.676, 0.524, 0.688, 0.664,
- 0.536, 0.4, 0.304, 0.256, 0.276, 0.32, 0.296, 0.408, 0.18, 0.468, 0.744,
- 0.724, 0.684, 0.88, 1.072, 1.108, 1, 0.912, 0.816, 0.912, 0.756, 0.728, 0.668,
- 0.5, 0.404, 0.364, 0.368, 0.372, 0.364, 0.424, 0.356, 0.316, 0.532, 0.62,
- 0.908, 1.184, 1.192, 1.028, 0.988, 1.188, 1.344, 1.268, 0.952, 0.816, 0.824,
- 0.812, 0.78, 0.704, 0.56, 0.428, 0.328, 0.26, 0.256, 0.104, 0.172, 0.096,
- 0.452, 0.732, 0.976
- ],
- "z": [
- -1.704, -1.86, -1.568, -1.4, -1.512, -1.552, -1.24, -1.304, -1.22, -0.76,
- -0.304, -0.084, 0.088, 0.2, 0.396, 0.468, 0.192, -0.008, -0.492, -0.796,
- -0.96, -1.336, -1.768, -1.676, -1.424, -1.296, -1.3, -1.488, -1.508, -1.12,
- -1.056, -0.924, -0.6, -0.18, -0.084, -0.008, -0.012, 0, 0.016, 0.028, -0.012,
- -0.3, -0.692, -1.236, -1.444, -1.212, -1.236, -1.4, -1.524, -1.456, -1.54,
- -1.524, -1.288, -0.888, -0.58, -0.268, -0.092, -0.04, 0.02, 0.104, 0.14,
- 0.144, 0.18, 0.116, -0.116, -0.504, -0.78, -0.996, -1.284, -1.42, -1.38,
- -1.304, -1.312, -1.304, -1.288, -1.24, -1.036, -0.704, -0.484, -0.292, -0.132,
- -0.004, 0.032, 0.156, 0.248, 0.28, 0.22, 0.092, -0.144, -0.56, -1.076, -1.304
- ]
- }
- },
- {
- "ID": 1705437804840,
- "data": {
- "x": [
- 0.42, 0.624, 0.688, 0.412, 0.552, 0.592, 0.532, 0.592, 0.292, -0.084, -0.284,
- -0.044, -0.428, 0.824, 1.172, 0.508, 0.428, 0.344, 0.512, 0, -0.616, 0.156,
- 0.232, 0.268, 0.78, 0.636, 0.428, 0.688, 0.764, 0.416, 0.432, 0.444, 0.32,
- 0.312, 0.348, 0.32, 0.472, 0.292, 0.092, 0.268, 0.348, 0.424, 0.508, 0.716,
- 0.708, 0.684, 0.516, 0.46, 0.3, 0.084, 0.08, 0.108, -0.036, -0.012, 0.088,
- 0.032, 0.092, 0.136, 0.252, 0.032, 0.36, 0.476, 0.656, 0.744, 0.72, 0.692,
- 0.62, 0.572, 0.464, 0.248, -0.016, 0.096, -0.18, -0.176, -0.004, -0.04, 0.112,
- 0.22, 0.024, 0.02, 0.136, 0.208, 0.136, 0.448, 0.764, 0.808, 0.752, 0.72, 0.7,
- 0.48, 0.304, 0.052
- ],
- "y": [
- -1.136, -1.324, -0.948, -1, -1.404, -1.46, -1.192, -0.868, -0.432, 0.144,
- 0.528, 0.496, 1.672, 2.04, 2.04, 2.04, 2.04, 1.416, 1.6, 1.212, 0.732, -1.24,
- -0.648, -0.616, -1.356, -1.124, -0.792, -0.728, -0.816, -0.044, 0.556, 1.332,
- 1.496, 1.224, 1.184, 1.48, 1.644, 1.06, 0.524, 0.012, -0.1, -0.472, -0.9,
- -1.224, -1.252, -1.116, -1.024, -0.592, -0.216, 0.372, 1.112, 1.648, 2.008,
- 1.844, 1.728, 1.544, 1.108, 0.768, 0.512, 0.396, -0.436, -0.692, -0.892,
- -0.976, -0.912, -0.756, -0.58, -0.432, -0.296, -0.108, 0.472, 1.108, 1.772,
- 1.7, 1.284, 1.516, 1.564, 1.552, 0.992, 0.436, 0.384, 0.356, -0.376, -0.936,
- -1.132, -1.172, -0.964, -0.828, -0.592, -0.408, -0.208, 0.248
- ],
- "z": [
- -0.468, -0.332, -0.256, 0.184, -0.152, -0.46, -0.5, -0.568, -0.408, -0.296,
- -0.144, -0.636, -1.18, -1.696, -0.276, -0.22, 0.472, 0.252, -0.284, -0.884,
- -0.368, -0.308, -0.66, -0.488, -1.112, -1.176, -0.8, -0.732, -0.292, -0.34,
- -0.56, -0.452, -0.856, -0.984, -1.1, -0.888, -0.752, -0.66, -0.652, -0.716,
- -0.632, -0.48, -0.452, -0.532, -0.684, -0.684, -0.568, -0.404, -0.608, -0.8,
- -1.24, -1, -0.872, -0.684, -0.516, -0.828, -0.7, -0.732, -0.432, -0.452,
- -0.54, -0.552, -0.868, -0.7, -0.56, -0.56, -0.772, -0.772, -0.792, -0.796,
- -1.1, -0.88, -0.996, -0.608, -0.492, -0.436, -0.648, -0.608, -0.6, -0.716,
- -0.628, -0.592, -0.848, -0.792, -0.816, -0.768, -0.604, -0.56, -0.504, -0.652,
- -0.704, -0.916
- ]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- }
-]
diff --git a/src/__tests__/fixtures/gesture-data.json b/src/__tests__/fixtures/gesture-data.json
deleted file mode 100644
index a8f9852be..000000000
--- a/src/__tests__/fixtures/gesture-data.json
+++ /dev/null
@@ -1,1024 +0,0 @@
-[
- {
- "ID": 1705437793875,
- "name": "Shake",
- "recordings": [
- {
- "ID": 1705437992143,
- "data": {
- "x": [
- -0.112, -0.356, -0.62, -0.892, -1.508, -1.848, -2.04, -2.04, -1.868, -1.3,
- -0.824, -0.48, 0.256, 0.752, 0.864, -0.044, -0.908, -1.716, -2.04, -2.008,
- -1.856, -1.336, -0.84, 0.192, 0.58, 0.504, -0.008, -0.232, -1.132, -2.04,
- -2.04, -2.04, -1.012, -0.48, 0.028, 0.256, 0.608, 0.332, -0.004, -0.876,
- -2.04, -2.04, -2.04, -1.688, -1.396, -0.828, -0.032, 0.36, 0.492, 0.288,
- 0.008, -0.492, -1.368, -2.04, -2.04, -1.828, -1.368, -0.668, -0.248, 0.108,
- 0.664, 0.544, 0.248, -0.404, -1.388, -2.04, -2.04, -1.86, -1.372, -1.072,
- -0.612, 0.16, 0.52, 0.488, 0.256, -0.144, -0.752, -1.732, -2.04, -2.04,
- -1.668, -1.208, -0.884, -0.556, 0.024, 0.48, 0.556, 0.248, -0.096, -0.9,
- -2.04, -2.04, -1.992
- ],
- "y": [
- 0.436, 0.416, 0.308, 0.168, 0.148, -0.056, 0.352, 0.356, 0.3, 0.244, 0.324,
- 0.264, 0.16, 0.396, 0.456, 0.208, 0.244, 0.252, 0.312, 0.396, 0.328, 0.364,
- 0.204, 0.188, 0.548, 0.536, 0.388, 0.22, 0.052, 0.54, 1.076, -0.116, 0.048,
- 0.132, 0.448, 0.528, 0.608, 0.6, 0.412, 0.152, 0.524, 0.416, 0.252, 0.308,
- 0.376, 0.316, 0.356, 0.644, 0.672, 0.544, 0.404, 0.164, 0.208, 0.624, 0.536,
- 0.256, 0.272, 0.404, 0.492, 0.5, 0.712, 0.656, 0.568, 0.264, 0.296, 0.496,
- 0.284, 0.28, 0.288, 0.42, 0.492, 0.488, 0.616, 0.684, 0.588, 0.396, 0.232,
- 0.452, 0.98, 0.484, 0.36, 0.372, 0.544, 0.48, 0.496, 0.6, 0.692, 0.528, 0.288,
- 0.204, 0.476, 1.112, 0.2
- ],
- "z": [
- -0.576, -0.592, -0.516, -0.38, -0.368, 0.208, -0.028, 0.048, 0.008, -0.096,
- -0.288, -0.396, -0.516, -0.556, -0.312, -0.056, -0.168, -0.108, 0.196, 0.268,
- 0.1, -0.16, -0.32, -0.64, -0.692, -0.56, -0.26, -0.092, -0.204, 0.304, 0.78,
- 0.364, 0.108, -0.24, -0.528, -0.608, -0.552, -0.208, -0.048, -0.14, 0.42,
- 0.552, 0.42, 0.128, 0.276, -0.332, -0.648, -0.648, -0.544, -0.212, 0.036,
- -0.004, -0.148, 0.304, 0.212, 0.344, 0.352, 0.064, -0.572, -0.628, -0.616,
- -0.276, -0.008, -0.18, -0.044, 0.012, 0.368, 0.32, 0.372, -0.092, -0.288,
- -0.608, -0.712, -0.432, -0.252, -0.024, 0.044, -0.052, 0.4, 0.504, 0.196,
- -0.016, -0.172, -0.308, -0.66, -0.72, -0.52, -0.268, -0.072, -0.176, 0.136,
- 0.34, 0.7
- ]
- }
- },
- {
- "ID": 1705437989960,
- "data": {
- "x": [
- -0.4, 0.232, 0.708, 1.068, 1.284, 1.36, 1.02, 0.816, 0.332, -0.152, -1.496,
- -2.04, -2.04, -1.14, -0.968, -0.648, 0.232, 1, 1.34, 1.32, 0.864, 0.256,
- -0.696, -1.884, -2.04, -2.04, -1.62, -1.028, -0.196, 0.42, 0.608, 0.488,
- 0.168, -0.528, -1.488, -2.028, -2.04, -2.04, -1.588, -1.08, -0.512, -0.028,
- 0.216, 0.268, 0.052, -0.38, -0.684, -0.788, -1.056, -1.768, -2.04, -2.04,
- -1.344, -0.8, -0.436, -0.172, 0.22, 0.456, -0.124, -0.504, -0.864, -1.14,
- -1.544, -2.02, -2.016, -1.52, -1.004, -0.456, -0.156, 0.064, 0.128, -0.204,
- -0.46, -0.816, -1.22, -1.596, -1.884, -1.816, -1.44, -0.948, -0.516, -0.196,
- 0.06, 0.124, -0.16, -0.504, -0.72, -0.928, -1.42, -1.8, -2.032, -1.76
- ],
- "y": [
- 0.592, 0.364, 0.128, -0.004, -0.06, -0.156, -0.04, 0.08, 0.284, 0.456, 0.188,
- 1.104, 0.9, 0.6, 0.536, 0.388, 0.34, 0.316, 0.292, 0.32, 0.252, 0.208, 0.152,
- 0.3, 0.792, 0.776, 0.748, 0.588, 0.44, 0.372, 0.4, 0.424, 0.376, 0.296, 0.448,
- 0.596, 0.644, 0.732, 0.58, 0.496, 0.46, 0.444, 0.568, 0.56, 0.456, 0.408,
- 0.38, 0.284, 0.22, 0.352, 0.792, 0.636, 0.452, 0.456, 0.468, 0.392, 0.376,
- 0.348, 0.34, 0.396, 0.456, 0.364, 0.432, 0.704, 0.728, 0.584, 0.416, 0.424,
- 0.428, 0.432, 0.288, 0.3, 0.368, 0.392, 0.436, 0.512, 0.684, 0.664, 0.556,
- 0.496, 0.472, 0.456, 0.444, 0.7, 0.304, 0.36, 0.292, 0.276, 0.328, 0.536,
- 0.78, 0.7
- ],
- "z": [
- -1.196, -0.908, -0.712, -0.556, -0.44, -0.42, -0.548, -0.512, -0.596, -0.696,
- -1.364, -0.26, -0.592, -0.788, -0.876, -0.84, -0.888, -0.948, -0.972, -1.192,
- -1.148, -0.808, -0.636, -0.42, 0.076, 0.42, 0.124, -0.224, -0.572, -0.924,
- -1.032, -0.972, -0.656, -0.708, -0.492, -0.096, 0.428, 0.548, 0.196, -0.012,
- -0.364, -0.744, -0.996, -1.08, -1.448, -1.444, -1.136, -0.652, -0.104, 0.528,
- 1.116, 0.88, 0.384, 0.048, -0.348, -0.804, -1.34, -1.604, -1.624, -1.3, -0.7,
- -0.116, 0.544, 0.996, 0.784, 0.448, 0.084, -0.468, -0.964, -1.508, -1.86,
- -1.5, -1.08, -0.54, 0.112, 0.68, 1.224, 1.028, 0.66, 0.256, -0.24, -0.712,
- -1.24, -1.232, -1.604, -1.456, -1.004, -0.428, 0.18, 0.576, 1.292, 0.92
- ]
- }
- },
- {
- "ID": 1705437987590,
- "data": {
- "x": [
- -1.464, -1.144, -0.92, -0.696, -0.22, -0.016, 0.168, 0.384, 0.552, 0.872,
- 1.164, 1.284, 1.192, 0.904, 0.38, -1.068, -1.9, -0.784, -0.312, -0.144, 0.076,
- 0.36, 0.812, 1.116, 1.18, 1.072, 0.752, 0.004, -1.244, -0.88, -0.372, -0.04,
- 0.252, 0.616, 1.016, 1.332, 1.296, 1.068, 0.748, 0.384, -0.748, -1.776, -0.68,
- -0.312, -0.052, 0.396, 0.932, 1.264, 1.364, 1.144, 0.84, 0.328, -0.696,
- -1.504, -0.78, -0.38, -0.1, 0.244, 0.608, 0.86, 1.172, 1.436, 1.492, 1.268,
- 0.784, -0.5, -1.484, -0.62, -0.272, -0.128, 0.324, 0.716, 1.168, 1.568, 1.692,
- 1.452, 0.88, -0.108, -1.46, -1.128, -0.616, -0.432, 0.008, 0.68, 1.264, 1.68,
- 1.804, 1.496, 0.884, -0.14, -1.08, -0.852
- ],
- "y": [
- 0.668, 0.576, 0.556, 0.508, 0.36, 0.472, 0.384, 0.34, 0.24, 0.124, 0.068,
- 0.052, 0.052, 0.12, 0.02, 0.124, 0.836, 0.556, 0.612, 0.62, 0.588, 0.452,
- 0.304, 0.26, 0.108, 0.096, 0.108, -0.108, 0.072, 0.372, 0.344, 0.456, 0.368,
- 0.3, 0.316, 0.332, 0.272, 0.204, 0.196, 0.104, 0, 0.484, 0.416, 0.384, 0.356,
- 0.32, 0.216, 0.244, 0.284, 0.208, 0.196, 0.136, -0.06, 0.52, 0.34, 0.332,
- 0.336, 0.26, 0.224, 0.184, 0.104, 0.116, 0.132, 0.116, 0.084, 0.068, 0.588,
- 0.42, 0.396, 0.364, 0.272, 0.196, 0.044, -0.008, 0.02, 0, 0.048, -0.02, 0.428,
- 0.592, 0.552, 0.524, 0.324, 0.128, -0.1, -0.128, -0.068, -0.052, 0.044, 0.08,
- 0.352, 0.632
- ],
- "z": [
- -0.148, -0.472, -0.476, -0.388, -0.684, -0.404, -0.46, -0.38, -0.36, -0.384,
- -0.572, -0.792, -1.084, -1.36, -1.62, -2.04, -1.748, -1.216, -0.844, -0.48,
- -0.168, 0.036, 0.048, -0.032, -0.232, -0.596, -1.076, -1.596, -1.952, -2.016,
- -1.496, -1.008, -0.52, -0.216, -0.04, 0.04, -0.06, -0.324, -0.676, -1.124,
- -1.784, -2.04, -1.748, -1.408, -0.936, -0.444, -0.108, 0.104, 0.088, -0.116,
- -0.396, -0.836, -1.608, -2.04, -1.964, -1.612, -1.184, -0.764, -0.46, -0.156,
- 0.112, 0.204, 0.056, -0.304, -0.76, -1.54, -2.04, -2.04, -1.768, -1.204,
- -0.708, -0.244, 0.152, 0.332, 0.264, -0.024, -0.424, -0.984, -1.7, -2.04,
- -1.984, -1.372, -0.764, -0.296, 0.084, 0.216, 0.12, -0.136, -0.472, -0.992,
- -1.876, -2.04
- ]
- }
- },
- {
- "ID": 1705437985014,
- "data": {
- "x": [
- -0.392, -0.532, -0.452, -0.576, -0.748, -0.908, -0.984, -1.12, -1.04, -0.82,
- -0.668, -0.184, 0.18, 0.428, 0.816, 1.248, 1.38, 1.188, 0.936, 0.456, 0.132,
- -0.5, -1.94, -2.04, -2.04, -1.536, -0.74, -0.38, 0.056, 0.4, 0.984, 1.208,
- 0.812, 0.396, -0.2, -1.508, -2.024, -1.576, -0.732, -0.212, 0.252, 0.536,
- 0.776, 0.716, 0.46, -0.036, -1.18, -1.752, -1.272, -0.952, -0.592, -0.348,
- 0.148, 0.316, 0.884, 0.832, 0.688, 0.452, -0.216, -1.084, -1.94, -1.252,
- -0.792, -0.544, -0.16, 0.284, 0.676, 0.672, 0.56, 0.34, -0.036, -0.916,
- -2.036, -1.516, -0.892, -0.536, -0.256, -0.068, 0.256, 0.528, 0.584, 0.452,
- 0.124, -0.424, -1.404, -1.912, -1.208, -0.78, -0.54, -0.264, 0.076, 0.544,
- 0.528
- ],
- "y": [
- 0.328, 0.336, 0.336, 0.304, 0.328, 0.38, 0.396, 0.384, 0.348, 0.46, 0.512,
- 0.408, 0.348, 0.18, -0.028, -0.08, -0.036, 0.02, 0.136, 0.164, 0.048, -0.22,
- 0.464, 1.092, 1.044, 0.812, 0.496, 0.348, 0.236, 0.132, 0.064, 0.124, 0.152,
- 0.304, 0.248, 0.896, 1.34, 1.08, 0.76, 0.636, 0.436, 0.244, 0.224, 0.176,
- 0.236, 0.24, 0.66, 1.26, 1.124, 1.04, 0.784, 0.572, 0.008, 0.272, 0.068,
- 0.124, 0.192, 0.244, 0.564, 0.636, 1.372, 0.976, 0.904, 0.68, 0.416, 0.036,
- 0.076, 0.092, 0.208, 0.348, 0.412, 0.768, 1.088, 1, 0.844, 0.708, 0.54, 0.424,
- 0.228, 0.196, 0.116, 0.232, 0.34, 0.492, 0.84, 1.196, 0.956, 0.844, 0.672,
- 0.496, 0.26, 0.232, 0.228
- ],
- "z": [
- -0.932, -0.884, -1.076, -0.972, -0.776, -0.744, -0.856, -0.884, -0.892,
- -0.844, -0.744, -0.572, -0.504, -0.576, -0.668, -1, -1.204, -1.144, -1.044,
- -0.832, -0.664, -1.024, -0.46, 0.276, -0.064, -0.16, -0.476, -0.416, -0.764,
- -0.892, -1.332, -1.872, -1.152, -0.744, -0.904, -0.704, -0.028, -0.296,
- -0.256, -0.592, -0.848, -1, -1.404, -1.22, -1.3, -0.76, -0.848, 0.028, -0.14,
- -0.14, -0.3, -0.576, -1.052, -0.276, -2.04, -1.556, -1.308, -1.328, -0.572,
- -0.492, -0.212, 0.076, -0.28, -0.44, -0.688, -0.856, -1.768, -1.464, -1.268,
- -0.9, -0.588, -0.46, -0.352, -0.18, -0.328, -0.404, -0.576, -0.9, -1.328,
- -1.48, -1.444, -1.12, -0.704, -0.876, -0.452, -0.156, -0.256, -0.28, -0.424,
- -0.608, -0.652, -1.504, -1.412
- ]
- }
- },
- {
- "ID": 1705437822437,
- "data": {
- "x": [
- -0.684, -0.688, -0.672, -0.668, -0.628, -0.564, -0.576, -0.7, -0.896, -0.96,
- -1.016, -0.888, -0.752, -0.564, -0.46, -0.36, -0.288, -0.204, -0.12, -0.164,
- -0.248, -0.236, -0.088, -0.644, -1.068, -0.812, -0.644, -0.56, -0.372, -0.292,
- -0.272, -0.076, -0.04, -0.08, -0.172, -0.288, -0.276, -0.06, -0.532, -1.132,
- -0.828, -0.72, -0.712, -0.368, -0.296, -0.34, -0.28, -0.216, -0.164, -0.18,
- -0.272, -0.408, -0.644, -0.764, -0.732, -0.636, -0.62, -0.524, -0.344, -0.16,
- -0.032, -0.088, -0.136, -0.224, -0.252, -0.18, -0.484, -0.872, -0.844, -0.72,
- -0.624, -0.572, -0.48, -0.392, -0.356, -0.292, -0.244, -0.208, -0.288, -0.372,
- -0.364, -0.216, -0.464, -1.016, -0.904, -0.956, -0.812, -0.564, -0.632,
- -0.468, -0.34, -0.272
- ],
- "y": [
- 0.1, 0.048, 0.028, 0.24, 0.336, 0.376, 0.208, -0.328, -1.1, -1.368, -1.216,
- -0.936, -0.488, -0.032, 0.468, 1.056, 1.708, 1.856, 1.896, 1.692, 1.224,
- 0.592, -0.744, -2.04, -2.04, -2.04, -1.404, -0.66, -0.204, 0.568, 0.92, 1.304,
- 1.768, 1.876, 1.5, 1.056, 0.596, -0.508, -2.04, -2.04, -2.032, -1.288, -0.796,
- 0.108, 1.112, 1.588, 1.832, 1.832, 1.588, 1.176, 0.232, -0.968, -2.04, -2.04,
- -2.04, -1.68, -1.08, -0.388, 0.248, 1.02, 1.704, 2.04, 1.98, 1.488, 0.868,
- -0.08, -1.912, -2.04, -2.04, -1.916, -1.296, -0.684, 0.088, 0.532, 0.92,
- 1.156, 1.348, 1.58, 1.616, 1.312, 0.816, -0.012, -2.04, -2.04, -2.04, -2.004,
- -1.492, -0.904, 0.028, 0.564, 0.976, 1.292
- ],
- "z": [
- -0.736, -0.788, -0.756, -0.768, -0.796, -0.908, -0.936, -1.024, -0.764,
- -0.412, -0.34, -0.408, -0.56, -0.62, -0.624, -0.896, -1.092, -1.164, -1.144,
- -0.992, -0.844, -0.808, -0.736, -0.016, 0.356, -0.172, -0.32, -0.58, -0.672,
- -0.952, -0.988, -1.092, -1.16, -1.104, -1.032, -0.924, -0.872, -0.736, -0.256,
- 0.276, -0.392, -0.444, -0.476, -0.656, -1.124, -1.136, -1.156, -1.18, -1.004,
- -0.884, -0.812, -0.664, -0.508, -0.284, -0.312, -0.392, -0.5, -0.64, -0.84,
- -1.172, -1.3, -1.352, -1.128, -0.968, -0.836, -0.764, -0.5, -0.152, -0.372,
- -0.372, -0.432, -0.612, -0.892, -1.08, -1.212, -1.324, -1.208, -0.992, -0.828,
- -0.744, -0.86, -0.872, -0.732, 0.012, 0.256, -0.084, -0.124, -0.208, -0.512,
- -0.816, -1.18, -1.332
- ]
- }
- },
- {
- "ID": 1705437819739,
- "data": {
- "x": [
- -0.268, -0.048, 0.06, 0.028, -0.108, -0.3, -0.412, -0.536, -0.668, -0.928,
- -1.18, -1.26, -0.86, -0.372, 0.344, 0.564, 0.548, 0.392, 0.14, -0.124, -0.264,
- -0.324, -0.376, -0.636, -1.312, -1.216, -1.036, -0.744, -0.256, 0.188, 0.132,
- 0.112, 0.164, 0.008, -0.132, -0.22, -0.28, -0.504, -0.924, -1.192, -1.176,
- -0.988, -0.648, -0.088, 0.08, 0.212, 0.104, 0.144, 0.008, -0.112, -0.264,
- -0.336, -0.312, -0.468, -0.856, -1.132, -1.12, -0.932, -0.692, -0.384, -0.084,
- 0.132, 0.064, 0.02, 0.016, -0.116, -0.212, -0.288, -0.28, -0.468, -1.032,
- -1.404, -1.112, -0.844, -0.616, -0.22, -0.044, -0.132, -0.22, -0.088, -0.164,
- -0.252, -0.32, -0.368, -0.432, -0.604, -0.876, -1.016, -1, -0.92, -0.848
- ],
- "y": [
- -0.22, -0.116, -0.016, 0.048, 0.056, 0, -0.02, 0.036, 0.056, -0.256, -1.256,
- -1.636, -1.248, -0.856, -0.344, 0.048, 0.54, 1.044, 1.216, 1.132, 0.848,
- 0.468, -0.156, -1.38, -1.892, -1.296, -0.94, -0.836, -0.496, -0.092, 0.288,
- 0.664, 0.7, 0.648, 0.716, 0.6, 0.232, -0.704, -1.436, -1.448, -1.124, -0.968,
- -0.736, -0.62, 0.052, 0.148, 0.328, 0.54, 0.572, 0.564, 0.544, 0.32, -0.064,
- -0.828, -1.444, -1.42, -1.224, -0.952, -0.748, -0.524, -0.44, -0.744, 0.068,
- 0.456, 0.816, 0.788, 0.824, 0.536, 0.124, -0.688, -1.372, -1.516, -0.964,
- -0.58, -0.488, -0.46, -0.132, 0.264, 0.432, 0.58, 0.7, 0.624, 0.556, 0.312,
- 0.036, -0.832, -1.244, -1.18, -0.9, -0.764, -0.8
- ],
- "z": [
- -1.448, -1.808, -2.04, -2.04, -1.684, -1.22, -0.936, -0.54, 0.412, 1.76, 2.04,
- 1.732, 0.708, -0.084, -1.284, -2.04, -2.04, -2.04, -2.04, -1.44, -1.12, -0.88,
- -0.312, 0.328, 0.988, 1.404, 1.352, 0.476, -0.152, -1.276, -2.04, -2.04,
- -2.04, -2.04, -1.668, -1.176, -0.596, -0.04, 0.844, 1.492, 1.636, 1.064,
- 0.636, -0.136, -1.344, -2.04, -2.04, -2.04, -2.04, -1.82, -1.36, -1.044,
- -0.616, 0.18, 0.912, 1.432, 1.756, 1.2, 0.528, 0.064, -0.612, -1.708, -2.04,
- -2.04, -2.04, -1.932, -1.668, -1.3, -0.744, -0.032, 0.692, 1.284, 1.32, 0.712,
- 0.16, -0.344, -1.06, -2.04, -2.04, -2.04, -2.04, -1.692, -1.396, -1.04,
- -0.636, 0.04, 0.568, 0.784, 0.948, 1.012, 0.68
- ]
- }
- },
- {
- "ID": 1705437816208,
- "data": {
- "x": [
- -0.692, -0.644, -0.548, -0.516, -0.74, -0.872, -0.26, 0.108, 0.268, 0.436,
- 0.248, -0.04, -0.224, -0.272, -0.176, 0.316, -0.408, -1.336, -1.112, -0.712,
- -0.52, -0.432, -0.188, 0.088, 0.148, 0.028, -0.072, -0.164, -0.204, -0.144,
- 0.252, -0.232, -1.312, -1.132, -0.92, -0.764, -0.432, -0.072, 0.096, 0.184,
- 0.156, 0.052, -0.02, -0.068, 0.136, -0.276, -1.244, -1.136, -0.996, -0.872,
- -0.576, -0.328, -0.172, -0.084, -0.072, -0.08, -0.168, -0.22, -0.128, -0.112,
- -1.036, -1.22, -1.008, -0.856, -0.688, -0.368, -0.196, -0.036, 0.052, 0.092,
- 0.076, 0.04, -0.084, -0.212, -0.168, 0.124, -0.724, -1.376, -1.048, -0.872,
- -0.776, -0.608, -0.324, -0.128, -0.004, 0.024, 0.024, -0.008, -0.12, -0.248,
- -0.384, -0.356
- ],
- "y": [
- -1.164, -1.268, -1.532, -1.984, -2.04, -2.04, -1.672, -0.532, 0.236, 1.008,
- 1.736, 2.012, 1.868, 1.056, 0.692, -0.156, -2.04, -2.04, -2.04, -2.04, -1.464,
- -0.956, -0.604, 0.364, 1.252, 1.812, 2.04, 1.88, 1.476, 0.836, -0.228, -2.04,
- -2.04, -2.04, -2.024, -1.712, -1.132, -0.2, 0.816, 1.624, 2.04, 2.04, 1.904,
- 1.084, 0.184, -2.04, -2.04, -2.04, -1.536, -1.236, -0.616, 0, 0.796, 1.36,
- 1.648, 1.532, 1.3, 0.904, 0.28, -1.288, -2.04, -2.04, -1.864, -1.692, -1.2,
- -0.572, 0.008, 0.548, 1.228, 1.792, 2.02, 1.8, 1.408, 1.012, 0.528, -0.748,
- -2.04, -2.04, -1.896, -1.128, -1.06, -0.936, -0.468, 0.244, 0.868, 1.392,
- 1.772, 1.712, 1.304, 0.924, 0.544, 0.144
- ],
- "z": [
- -0.116, -0.136, -0.024, 0.108, 0.696, 0.724, 0.424, 0.18, 0.196, -0.072,
- -0.788, -1.488, -1.564, -0.98, -0.712, -0.504, -0.528, 0.736, 0.544, 0.124,
- -0.104, -0.204, -0.084, -0.356, -0.752, -1.048, -1.136, -1, -0.92, -0.82,
- -0.736, -0.34, 0.824, 0.26, -0.084, -0.072, -0.176, -0.42, -0.6, -0.852,
- -1.132, -1.308, -1.16, -0.968, -0.868, -0.744, 0.668, 0.048, -0.156, -0.248,
- -0.364, -0.6, -0.932, -1.116, -1.224, -1.196, -1.16, -1.044, -0.884, -0.748,
- 0.392, 0.376, -0.156, -0.228, -0.268, -0.54, -0.74, -0.784, -0.816, -0.92,
- -1.024, -0.984, -0.904, -0.868, -0.86, -1.072, 0.016, 0.704, -0.076, -0.348,
- -0.336, -0.372, -0.38, -0.628, -0.84, -0.964, -1.06, -1.116, -1.044, -0.972,
- -0.912, -0.944
- ]
- }
- },
- {
- "ID": 1705437808407,
- "data": {
- "x": [
- -0.756, -0.972, -0.836, -0.82, -0.832, -0.728, -0.904, -0.376, -0.464, -0.328,
- -0.112, 0.084, 0.172, 0.292, 0.404, 0.356, 0.3, 0.116, 0.068, -0.084, -0.348,
- -0.396, -0.628, -0.752, -0.744, -0.856, -0.82, -0.808, -0.688, -0.572, -0.436,
- -0.308, -0.324, -0.068, 0.184, 0.24, 0.276, 0.268, 0.284, 0.26, 0.028, 0.016,
- -0.224, -0.472, -0.54, -0.612, -0.764, -0.916, -0.976, -0.984, -0.94, -0.844,
- -0.8, -0.524, -0.432, -0.256, -0.1, 0.124, 0.208, 0.284, 0.272, 0.288, 0.232,
- 0.152, 0.004, -0.28, -0.408, -0.656, -0.836, -1.068, -1.036, -1.016, -0.952,
- -0.844, -0.724, -0.68, -0.796, -0.564, -0.34, -0.208, -0.104, 0.052, 0.168,
- 0.292, 0.42, 0.408, 0.436, 0.352, 0.164, -0.04, -0.352, -0.488
- ],
- "y": [
- 0.668, 0.968, 0.696, 0.572, 0.688, 0.628, 0.932, 0.596, 0.836, 0.78, 0.556,
- 0.52, 0.492, 0.38, 0.452, 0.304, 0.08, 0.144, 0.264, 0.184, 0.144, 0.472,
- 0.904, 1.004, 0.752, 0.7, 0.808, 1.032, 0.988, 0.676, 0.524, 0.688, 0.664,
- 0.536, 0.4, 0.304, 0.256, 0.276, 0.32, 0.296, 0.408, 0.18, 0.468, 0.744,
- 0.724, 0.684, 0.88, 1.072, 1.108, 1, 0.912, 0.816, 0.912, 0.756, 0.728, 0.668,
- 0.5, 0.404, 0.364, 0.368, 0.372, 0.364, 0.424, 0.356, 0.316, 0.532, 0.62,
- 0.908, 1.184, 1.192, 1.028, 0.988, 1.188, 1.344, 1.268, 0.952, 0.816, 0.824,
- 0.812, 0.78, 0.704, 0.56, 0.428, 0.328, 0.26, 0.256, 0.104, 0.172, 0.096,
- 0.452, 0.732, 0.976
- ],
- "z": [
- -1.704, -1.86, -1.568, -1.4, -1.512, -1.552, -1.24, -1.304, -1.22, -0.76,
- -0.304, -0.084, 0.088, 0.2, 0.396, 0.468, 0.192, -0.008, -0.492, -0.796,
- -0.96, -1.336, -1.768, -1.676, -1.424, -1.296, -1.3, -1.488, -1.508, -1.12,
- -1.056, -0.924, -0.6, -0.18, -0.084, -0.008, -0.012, 0, 0.016, 0.028, -0.012,
- -0.3, -0.692, -1.236, -1.444, -1.212, -1.236, -1.4, -1.524, -1.456, -1.54,
- -1.524, -1.288, -0.888, -0.58, -0.268, -0.092, -0.04, 0.02, 0.104, 0.14,
- 0.144, 0.18, 0.116, -0.116, -0.504, -0.78, -0.996, -1.284, -1.42, -1.38,
- -1.304, -1.312, -1.304, -1.288, -1.24, -1.036, -0.704, -0.484, -0.292, -0.132,
- -0.004, 0.032, 0.156, 0.248, 0.28, 0.22, 0.092, -0.144, -0.56, -1.076, -1.304
- ]
- }
- },
- {
- "ID": 1705437804840,
- "data": {
- "x": [
- 0.42, 0.624, 0.688, 0.412, 0.552, 0.592, 0.532, 0.592, 0.292, -0.084, -0.284,
- -0.044, -0.428, 0.824, 1.172, 0.508, 0.428, 0.344, 0.512, 0, -0.616, 0.156,
- 0.232, 0.268, 0.78, 0.636, 0.428, 0.688, 0.764, 0.416, 0.432, 0.444, 0.32,
- 0.312, 0.348, 0.32, 0.472, 0.292, 0.092, 0.268, 0.348, 0.424, 0.508, 0.716,
- 0.708, 0.684, 0.516, 0.46, 0.3, 0.084, 0.08, 0.108, -0.036, -0.012, 0.088,
- 0.032, 0.092, 0.136, 0.252, 0.032, 0.36, 0.476, 0.656, 0.744, 0.72, 0.692,
- 0.62, 0.572, 0.464, 0.248, -0.016, 0.096, -0.18, -0.176, -0.004, -0.04, 0.112,
- 0.22, 0.024, 0.02, 0.136, 0.208, 0.136, 0.448, 0.764, 0.808, 0.752, 0.72, 0.7,
- 0.48, 0.304, 0.052
- ],
- "y": [
- -1.136, -1.324, -0.948, -1, -1.404, -1.46, -1.192, -0.868, -0.432, 0.144,
- 0.528, 0.496, 1.672, 2.04, 2.04, 2.04, 2.04, 1.416, 1.6, 1.212, 0.732, -1.24,
- -0.648, -0.616, -1.356, -1.124, -0.792, -0.728, -0.816, -0.044, 0.556, 1.332,
- 1.496, 1.224, 1.184, 1.48, 1.644, 1.06, 0.524, 0.012, -0.1, -0.472, -0.9,
- -1.224, -1.252, -1.116, -1.024, -0.592, -0.216, 0.372, 1.112, 1.648, 2.008,
- 1.844, 1.728, 1.544, 1.108, 0.768, 0.512, 0.396, -0.436, -0.692, -0.892,
- -0.976, -0.912, -0.756, -0.58, -0.432, -0.296, -0.108, 0.472, 1.108, 1.772,
- 1.7, 1.284, 1.516, 1.564, 1.552, 0.992, 0.436, 0.384, 0.356, -0.376, -0.936,
- -1.132, -1.172, -0.964, -0.828, -0.592, -0.408, -0.208, 0.248
- ],
- "z": [
- -0.468, -0.332, -0.256, 0.184, -0.152, -0.46, -0.5, -0.568, -0.408, -0.296,
- -0.144, -0.636, -1.18, -1.696, -0.276, -0.22, 0.472, 0.252, -0.284, -0.884,
- -0.368, -0.308, -0.66, -0.488, -1.112, -1.176, -0.8, -0.732, -0.292, -0.34,
- -0.56, -0.452, -0.856, -0.984, -1.1, -0.888, -0.752, -0.66, -0.652, -0.716,
- -0.632, -0.48, -0.452, -0.532, -0.684, -0.684, -0.568, -0.404, -0.608, -0.8,
- -1.24, -1, -0.872, -0.684, -0.516, -0.828, -0.7, -0.732, -0.432, -0.452,
- -0.54, -0.552, -0.868, -0.7, -0.56, -0.56, -0.772, -0.772, -0.792, -0.796,
- -1.1, -0.88, -0.996, -0.608, -0.492, -0.436, -0.648, -0.608, -0.6, -0.716,
- -0.628, -0.592, -0.848, -0.792, -0.816, -0.768, -0.604, -0.56, -0.504, -0.652,
- -0.704, -0.916
- ]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- },
- {
- "ID": 1705437833024,
- "name": "Still",
- "recordings": [
- {
- "ID": 1705437969952,
- "data": {
- "x": [
- -0.064, -0.06, -0.06, -0.06, -0.06, -0.064, -0.056, -0.056, -0.06, -0.06,
- -0.064, -0.056, -0.056, -0.056, -0.06, -0.052, -0.064, -0.06, -0.064, -0.06,
- -0.06, -0.052, -0.056, -0.06, -0.064, -0.06, -0.064, -0.06, -0.06, -0.068,
- -0.056, -0.056, -0.048, -0.064, -0.056, -0.06, -0.056, -0.056, -0.056, -0.056,
- -0.06, -0.06, -0.056, -0.064, -0.064, -0.056, -0.056, -0.056, -0.06, -0.056,
- -0.064, -0.06, -0.056, -0.064, -0.064, -0.056, -0.056, -0.064, -0.056, -0.06,
- -0.052, -0.06, -0.056, -0.06, -0.06, -0.06, -0.06, -0.056, -0.06, -0.052,
- -0.048, -0.06, -0.06, -0.056, -0.064, -0.06, -0.056, -0.056, -0.06, -0.056,
- -0.064, -0.06, -0.056, -0.06, -0.06, -0.052, -0.064, -0.056, -0.068, -0.06,
- -0.06, -0.052, -0.06
- ],
- "y": [
- 0.768, 0.768, 0.772, 0.76, 0.76, 0.772, 0.764, 0.76, 0.764, 0.764, 0.772,
- 0.764, 0.76, 0.764, 0.76, 0.768, 0.764, 0.76, 0.764, 0.76, 0.772, 0.76, 0.764,
- 0.768, 0.764, 0.764, 0.76, 0.764, 0.756, 0.764, 0.764, 0.76, 0.76, 0.764,
- 0.764, 0.76, 0.756, 0.76, 0.76, 0.756, 0.76, 0.764, 0.768, 0.764, 0.752, 0.76,
- 0.76, 0.756, 0.756, 0.772, 0.76, 0.764, 0.76, 0.764, 0.76, 0.768, 0.764,
- 0.756, 0.76, 0.764, 0.764, 0.764, 0.76, 0.756, 0.768, 0.764, 0.756, 0.76,
- 0.764, 0.764, 0.764, 0.764, 0.764, 0.756, 0.76, 0.76, 0.772, 0.76, 0.764,
- 0.76, 0.772, 0.764, 0.756, 0.76, 0.768, 0.752, 0.76, 0.76, 0.76, 0.756, 0.76,
- 0.764, 0.752
- ],
- "z": [
- -0.7, -0.684, -0.7, -0.688, -0.696, -0.696, -0.7, -0.696, -0.7, -0.692,
- -0.696, -0.704, -0.696, -0.692, -0.7, -0.696, -0.696, -0.688, -0.692, -0.684,
- -0.7, -0.696, -0.704, -0.692, -0.704, -0.7, -0.7, -0.7, -0.708, -0.7, -0.696,
- -0.692, -0.696, -0.7, -0.7, -0.692, -0.704, -0.692, -0.708, -0.696, -0.704,
- -0.7, -0.692, -0.692, -0.708, -0.704, -0.696, -0.704, -0.704, -0.704, -0.704,
- -0.704, -0.7, -0.696, -0.708, -0.7, -0.696, -0.696, -0.692, -0.704, -0.696,
- -0.696, -0.688, -0.7, -0.708, -0.696, -0.704, -0.696, -0.708, -0.7, -0.712,
- -0.708, -0.696, -0.7, -0.696, -0.696, -0.7, -0.696, -0.704, -0.696, -0.708,
- -0.7, -0.7, -0.7, -0.704, -0.7, -0.684, -0.692, -0.696, -0.704, -0.704, -0.7,
- -0.7
- ]
- }
- },
- {
- "ID": 1705437870493,
- "data": {
- "x": [
- -0.804, -0.836, -0.848, -0.812, -0.768, -0.784, -0.808, -0.776, -0.7, -0.648,
- -0.636, -0.664, -0.672, -0.704, -0.712, -0.72, -0.756, -0.752, -0.704, -0.68,
- -0.692, -0.708, -0.72, -0.756, -0.764, -0.768, -0.772, -0.736, -0.748, -0.74,
- -0.772, -0.764, -0.752, -0.736, -0.732, -0.756, -0.76, -0.772, -0.74, -0.74,
- -0.748, -0.748, -0.752, -0.772, -0.756, -0.748, -0.732, -0.74, -0.752, -0.756,
- -0.748, -0.732, -0.74, -0.76, -0.752, -0.772, -0.764, -0.74, -0.736, -0.748,
- -0.764, -0.756, -0.728, -0.74, -0.756, -0.752, -0.744, -0.756, -0.744, -0.732,
- -0.728, -0.74, -0.752, -0.76, -0.776, -0.78, -0.772, -0.74, -0.732, -0.74,
- -0.764, -0.776, -0.772, -0.764, -0.748, -0.76, -0.736, -0.748, -0.744, -0.768,
- -0.812, -0.808
- ],
- "y": [
- -0.48, -0.472, -0.48, -0.492, -0.476, -0.432, -0.428, -0.476, -0.548, -0.552,
- -0.536, -0.516, -0.496, -0.484, -0.476, -0.484, -0.484, -0.5, -0.504, -0.508,
- -0.484, -0.492, -0.496, -0.484, -0.48, -0.476, -0.484, -0.492, -0.468, -0.484,
- -0.476, -0.484, -0.492, -0.5, -0.488, -0.484, -0.476, -0.476, -0.488, -0.496,
- -0.492, -0.472, -0.464, -0.464, -0.476, -0.48, -0.488, -0.484, -0.468, -0.468,
- -0.484, -0.488, -0.484, -0.488, -0.472, -0.476, -0.476, -0.48, -0.492, -0.476,
- -0.472, -0.476, -0.484, -0.484, -0.484, -0.484, -0.492, -0.488, -0.456, -0.48,
- -0.484, -0.472, -0.476, -0.46, -0.472, -0.472, -0.46, -0.472, -0.488, -0.476,
- -0.472, -0.488, -0.492, -0.5, -0.492, -0.488, -0.484, -0.492, -0.488, -0.472,
- -0.428, -0.436
- ],
- "z": [
- -0.56, -0.592, -0.572, -0.52, -0.512, -0.568, -0.656, -0.656, -0.56, -0.504,
- -0.54, -0.608, -0.636, -0.652, -0.66, -0.64, -0.66, -0.66, -0.584, -0.56,
- -0.576, -0.6, -0.592, -0.58, -0.62, -0.608, -0.616, -0.576, -0.596, -0.572,
- -0.604, -0.592, -0.568, -0.572, -0.56, -0.584, -0.584, -0.612, -0.572, -0.568,
- -0.576, -0.588, -0.6, -0.596, -0.572, -0.564, -0.568, -0.592, -0.6, -0.604,
- -0.588, -0.572, -0.58, -0.584, -0.588, -0.596, -0.584, -0.564, -0.568, -0.592,
- -0.596, -0.592, -0.588, -0.572, -0.588, -0.6, -0.576, -0.592, -0.624, -0.572,
- -0.564, -0.584, -0.588, -0.6, -0.6, -0.592, -0.58, -0.564, -0.552, -0.564,
- -0.58, -0.592, -0.588, -0.584, -0.568, -0.58, -0.56, -0.568, -0.548, -0.58,
- -0.636, -0.608
- ]
- }
- },
- {
- "ID": 1705437864426,
- "data": {
- "x": [
- 0.892, 0.972, 0.972, 0.92, 0.916, 0.964, 0.924, 0.932, 0.984, 0.932, 0.876,
- 0.88, 0.904, 0.92, 0.948, 0.984, 0.992, 0.948, 0.948, 0.992, 0.98, 0.952,
- 0.948, 0.928, 0.964, 0.94, 0.94, 0.948, 0.976, 0.964, 0.956, 0.936, 0.948,
- 0.94, 0.932, 0.96, 0.952, 0.936, 0.98, 0.984, 0.948, 0.94, 0.928, 0.928, 0.94,
- 0.96, 0.94, 0.94, 0.94, 0.936, 0.948, 0.948, 0.952, 0.952, 0.936, 0.96, 0.96,
- 0.956, 0.96, 0.952, 0.94, 0.956, 0.94, 0.94, 0.948, 0.94, 0.952, 0.952, 0.952,
- 0.944, 0.944, 0.96, 0.976, 0.968, 0.944, 0.928, 0.94, 0.956, 0.952, 0.952,
- 0.948, 0.952, 0.948, 0.944, 0.944, 0.94, 0.92, 0.94, 0.952, 0.964, 0.968,
- 0.968, 0.944
- ],
- "y": [
- -0.02, -0.088, -0.116, -0.144, -0.14, -0.016, 0.012, -0.04, -0.1, -0.076,
- -0.088, -0.096, -0.104, -0.088, -0.092, -0.096, -0.076, -0.072, -0.072, -0.08,
- -0.076, -0.084, -0.104, -0.088, -0.104, -0.088, -0.116, -0.116, -0.132,
- -0.116, -0.108, -0.104, -0.12, -0.116, -0.1, -0.108, -0.112, -0.096, -0.108,
- -0.112, -0.1, -0.1, -0.1, -0.104, -0.116, -0.12, -0.096, -0.108, -0.12,
- -0.116, -0.108, -0.104, -0.112, -0.112, -0.096, -0.096, -0.104, -0.088,
- -0.096, -0.1, -0.108, -0.1, -0.108, -0.096, -0.1, -0.104, -0.108, -0.104,
- -0.1, -0.088, -0.092, -0.1, -0.1, -0.096, -0.088, -0.092, -0.096, -0.096,
- -0.104, -0.088, -0.08, -0.108, -0.092, -0.096, -0.1, -0.1, -0.08, -0.1,
- -0.096, -0.092, -0.092, -0.112, -0.088
- ],
- "z": [
- 0.208, -0.032, -0.252, -0.316, -0.292, -0.224, -0.14, 0.116, 0, -0.196,
- -0.188, -0.16, -0.172, -0.096, -0.152, -0.228, -0.268, -0.248, -0.172, -0.14,
- -0.136, -0.188, -0.204, -0.14, -0.116, -0.104, -0.18, -0.216, -0.192, -0.168,
- -0.132, -0.16, -0.188, -0.184, -0.14, -0.124, -0.176, -0.176, -0.16, -0.18,
- -0.176, -0.152, -0.156, -0.168, -0.176, -0.172, -0.168, -0.152, -0.16, -0.156,
- -0.18, -0.168, -0.176, -0.188, -0.172, -0.18, -0.176, -0.188, -0.168, -0.16,
- -0.196, -0.192, -0.184, -0.152, -0.148, -0.2, -0.2, -0.172, -0.168, -0.168,
- -0.18, -0.176, -0.168, -0.16, -0.148, -0.148, -0.164, -0.184, -0.184, -0.176,
- -0.144, -0.156, -0.176, -0.184, -0.172, -0.172, -0.144, -0.168, -0.188, -0.18,
- -0.176, -0.14, -0.144
- ]
- }
- },
- {
- "ID": 1705437860385,
- "data": {
- "x": [
- 0, 0.004, 0, 0.004, 0.016, 0, 0.004, -0.06, -0.004, -0.04, -0.048, -0.052,
- -0.056, -0.048, -0.052, -0.044, -0.052, -0.044, -0.048, -0.04, -0.056, -0.052,
- -0.052, -0.056, -0.056, -0.044, -0.044, -0.056, -0.052, -0.048, -0.048,
- -0.048, -0.048, -0.048, -0.06, -0.056, -0.052, -0.056, -0.056, -0.052, -0.056,
- -0.056, -0.056, -0.048, -0.048, -0.048, -0.06, -0.052, -0.056, -0.048, -0.052,
- -0.048, -0.048, -0.048, -0.044, -0.048, -0.052, -0.052, -0.056, -0.056,
- -0.044, -0.048, -0.052, -0.052, -0.048, -0.052, -0.056, -0.052, -0.056,
- -0.044, -0.048, -0.052, -0.048, -0.052, -0.052, -0.052, -0.048, -0.056,
- -0.056, -0.048, -0.052, -0.056, -0.048, -0.056, -0.048, -0.048, -0.052,
- -0.052, -0.048, -0.052, -0.052, -0.044
- ],
- "y": [
- 0.16, 0.172, 0.184, 0.184, 0.168, 0.188, 0.192, 0.212, 0.16, 0.208, 0.224,
- 0.224, 0.22, 0.22, 0.224, 0.22, 0.22, 0.216, 0.2, 0.216, 0.228, 0.224, 0.224,
- 0.232, 0.228, 0.232, 0.224, 0.224, 0.228, 0.228, 0.228, 0.228, 0.232, 0.236,
- 0.232, 0.232, 0.228, 0.22, 0.232, 0.228, 0.228, 0.232, 0.236, 0.232, 0.232,
- 0.224, 0.224, 0.232, 0.224, 0.236, 0.228, 0.232, 0.228, 0.224, 0.228, 0.232,
- 0.228, 0.228, 0.232, 0.232, 0.228, 0.224, 0.224, 0.232, 0.236, 0.228, 0.228,
- 0.236, 0.232, 0.224, 0.228, 0.224, 0.236, 0.236, 0.232, 0.228, 0.228, 0.236,
- 0.232, 0.228, 0.232, 0.232, 0.228, 0.232, 0.228, 0.228, 0.228, 0.228, 0.224,
- 0.232, 0.232, 0.232
- ],
- "z": [
- 1, 1.016, 1.032, 1.02, 0.98, 1.004, 0.788, 1.06, 1.028, 1.004, 0.996, 1.012,
- 1, 1.012, 1.008, 1.004, 0.996, 1.008, 1.012, 1.012, 1.012, 1.012, 1.012, 1,
- 1.012, 1.008, 1.004, 1.012, 1.008, 1.008, 1.008, 1.008, 0.996, 0.996, 1.008,
- 1.012, 1.008, 1.012, 1.008, 1.012, 1.004, 1.008, 1.004, 1.004, 1.004, 1,
- 1.008, 1.004, 1.004, 1.012, 1.008, 1.004, 1.004, 1.008, 1.008, 1.008, 1,
- 1.004, 1, 1, 1, 1.008, 1.004, 1, 1.004, 1.004, 1.004, 1, 1.008, 1.012, 1.004,
- 1.004, 1.008, 1.008, 1, 1.012, 1.004, 0.996, 1.008, 1, 1.008, 1.012, 0.996,
- 0.996, 1.004, 1.008, 1.012, 1.008, 1.004, 1.008, 1.008, 1.008
- ]
- }
- },
- {
- "ID": 1705437854703,
- "data": {
- "x": [
- -0.076, -0.076, -0.072, -0.068, -0.076, -0.072, -0.072, -0.056, -0.104,
- -0.068, -0.072, -0.064, -0.072, -0.044, -0.072, -0.064, -0.064, -0.068,
- -0.076, -0.076, -0.068, -0.068, -0.072, -0.068, -0.072, -0.068, -0.072,
- -0.068, -0.056, -0.064, -0.068, -0.068, -0.068, -0.068, -0.06, -0.072, -0.076,
- -0.072, -0.068, -0.064, -0.072, -0.06, -0.072, -0.068, -0.064, -0.06, -0.064,
- -0.068, -0.064, -0.072, -0.064, -0.068, -0.076, -0.068, -0.064, -0.064,
- -0.064, -0.068, -0.064, -0.072, -0.068, -0.072, -0.06, -0.06, -0.076, -0.06,
- -0.064, -0.064, -0.06, -0.068, -0.076, -0.064, -0.064, -0.064, -0.072, -0.068,
- -0.064, -0.064, -0.088, -0.06, -0.06, -0.06, -0.064, -0.056, -0.06, -0.064,
- -0.064, -0.064, -0.064, -0.068, -0.072, -0.068, -0.06
- ],
- "y": [
- 0.968, 0.96, 0.956, 0.964, 0.964, 0.96, 0.96, 0.976, 0.96, 0.96, 0.96, 0.96,
- 0.956, 0.948, 0.952, 0.956, 0.944, 0.944, 0.944, 0.944, 0.948, 0.952, 0.944,
- 0.948, 0.948, 0.94, 0.948, 0.944, 0.956, 0.948, 0.944, 0.952, 0.952, 0.952,
- 0.952, 0.952, 0.948, 0.948, 0.948, 0.952, 0.944, 0.944, 0.948, 0.948, 0.944,
- 0.948, 0.952, 0.948, 0.952, 0.948, 0.94, 0.944, 0.952, 0.952, 0.936, 0.948,
- 0.948, 0.944, 0.948, 0.944, 0.944, 0.944, 0.94, 0.956, 0.944, 0.952, 0.94,
- 0.952, 0.944, 0.944, 0.944, 0.956, 0.948, 0.952, 0.944, 0.94, 0.936, 0.944,
- 0.936, 0.94, 0.956, 0.952, 0.948, 0.944, 0.952, 0.94, 0.948, 0.948, 0.952,
- 0.948, 0.948, 0.948, 0.948
- ],
- "z": [
- -0.396, -0.388, -0.392, -0.388, -0.38, -0.36, -0.404, -0.416, -0.396, -0.42,
- -0.388, -0.42, -0.42, -0.564, -0.424, -0.416, -0.424, -0.44, -0.432, -0.428,
- -0.428, -0.432, -0.428, -0.428, -0.432, -0.428, -0.424, -0.432, -0.436,
- -0.428, -0.428, -0.432, -0.432, -0.428, -0.424, -0.436, -0.428, -0.432,
- -0.432, -0.436, -0.424, -0.424, -0.428, -0.424, -0.436, -0.432, -0.42, -0.428,
- -0.436, -0.424, -0.424, -0.424, -0.436, -0.428, -0.428, -0.424, -0.428,
- -0.436, -0.424, -0.428, -0.44, -0.424, -0.428, -0.432, -0.432, -0.42, -0.428,
- -0.428, -0.428, -0.436, -0.428, -0.428, -0.42, -0.428, -0.436, -0.432, -0.436,
- -0.44, -0.428, -0.432, -0.432, -0.432, -0.432, -0.428, -0.44, -0.444, -0.436,
- -0.424, -0.424, -0.432, -0.424, -0.432, -0.436
- ]
- }
- },
- {
- "ID": 1705437847993,
- "data": {
- "x": [
- 0.744, 0.76, 0.66, 0.688, 0.784, 0.736, 0.704, 0.712, 0.732, 0.72, 0.768,
- 0.772, 0.76, 0.784, 0.76, 0.776, 0.776, 0.776, 0.744, 0.744, 0.76, 0.748,
- 0.764, 0.76, 0.764, 0.776, 0.772, 0.752, 0.76, 0.752, 0.764, 0.76, 0.748,
- 0.752, 0.744, 0.76, 0.78, 0.772, 0.768, 0.756, 0.756, 0.748, 0.752, 0.744,
- 0.744, 0.752, 0.756, 0.756, 0.752, 0.752, 0.748, 0.752, 0.756, 0.764, 0.756,
- 0.756, 0.752, 0.748, 0.752, 0.748, 0.748, 0.744, 0.744, 0.752, 0.76, 0.76,
- 0.756, 0.752, 0.756, 0.756, 0.752, 0.744, 0.732, 0.74, 0.744, 0.748, 0.732,
- 0.736, 0.732, 0.748, 0.752, 0.748, 0.74, 0.744, 0.752, 0.744, 0.748, 0.732,
- 0.736, 0.74, 0.752, 0.74
- ],
- "y": [
- 0.292, 0.284, 0.24, 0.264, 0.224, 0.176, 0.232, 0.272, 0.268, 0.264, 0.248,
- 0.224, 0.248, 0.248, 0.252, 0.232, 0.248, 0.264, 0.268, 0.268, 0.268, 0.272,
- 0.268, 0.268, 0.256, 0.256, 0.26, 0.268, 0.264, 0.264, 0.264, 0.268, 0.268,
- 0.276, 0.276, 0.256, 0.256, 0.264, 0.268, 0.272, 0.268, 0.272, 0.272, 0.3,
- 0.276, 0.276, 0.284, 0.268, 0.284, 0.276, 0.276, 0.272, 0.276, 0.264, 0.276,
- 0.276, 0.28, 0.272, 0.276, 0.28, 0.28, 0.28, 0.284, 0.276, 0.272, 0.264,
- 0.268, 0.272, 0.272, 0.272, 0.272, 0.276, 0.28, 0.276, 0.284, 0.288, 0.284,
- 0.3, 0.288, 0.272, 0.28, 0.28, 0.276, 0.272, 0.276, 0.284, 0.284, 0.288,
- 0.284, 0.276, 0.272, 0.276
- ],
- "z": [
- -0.56, -0.604, -0.56, -0.588, -0.616, -0.616, -0.644, -0.572, -0.564, -0.552,
- -0.572, -0.552, -0.54, -0.556, -0.56, -0.568, -0.568, -0.572, -0.552, -0.548,
- -0.54, -0.544, -0.556, -0.56, -0.56, -0.544, -0.536, -0.54, -0.532, -0.556,
- -0.564, -0.572, -0.556, -0.552, -0.536, -0.544, -0.544, -0.548, -0.552, -0.56,
- -0.552, -0.556, -0.568, -0.56, -0.56, -0.552, -0.552, -0.556, -0.556, -0.536,
- -0.528, -0.536, -0.56, -0.564, -0.556, -0.544, -0.536, -0.54, -0.568, -0.56,
- -0.552, -0.54, -0.544, -0.56, -0.568, -0.552, -0.544, -0.548, -0.548, -0.56,
- -0.556, -0.544, -0.552, -0.56, -0.556, -0.56, -0.568, -0.564, -0.56, -0.548,
- -0.556, -0.56, -0.568, -0.572, -0.564, -0.56, -0.556, -0.552, -0.568, -0.56,
- -0.564, -0.56
- ]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- },
- {
- "ID": 1705437876740,
- "name": "Circle",
- "recordings": [
- {
- "ID": 1705438034019,
- "data": {
- "x": [
- -0.148, -0.388, -0.552, -0.64, -0.544, -0.616, -0.528, -0.612, -0.536, -0.456,
- -0.532, -0.672, -0.796, -0.836, -0.716, -0.756, -0.916, -0.956, -1.032, -1.1,
- -1.228, -1.284, -1.312, -1.36, -1.356, -1.296, -1.224, -1.096, -0.844, -0.964,
- -0.948, -0.984, -0.896, -0.884, -0.884, -0.772, -0.64, -0.508, -0.388, -0.348,
- -0.392, -0.392, -0.396, -0.344, -0.3, -0.264, -0.28, -0.252, -0.2, -0.22,
- -0.236, -0.244, -0.208, -0.188, -0.22, -0.252, -0.244, -0.288, -0.36, -0.476,
- -0.496, -0.472, -0.452, -0.504, -0.552, -0.576, -0.532, -0.532, -0.608,
- -0.652, -0.668, -0.652, -0.764, -0.892, -0.92, -0.864, -0.848, -0.884, -0.872,
- -0.848, -0.888, -0.952, -0.992, -1.02, -1.084, -1.068, -0.952, -0.82, -0.748,
- -0.732, -0.84
- ],
- "y": [
- 0.48, 0.444, 0.34, 0.376, 0.392, 0.424, 0.44, 0.42, 0.416, 0.42, 0.392, 0.376,
- 0.352, 0.384, 0.348, 0.284, 0.22, 0.204, 0.284, 0.28, 0.2, 0.152, 0.128, 0.16,
- 0.144, 0.108, 0.06, 0.072, 0.02, 0.224, 0.284, 0.372, 0.284, 0.348, 0.412,
- 0.408, 0.376, 0.36, 0.396, 0.452, 0.484, 0.424, 0.36, 0.296, 0.296, 0.296,
- 0.312, 0.34, 0.356, 0.332, 0.344, 0.344, 0.344, 0.336, 0.336, 0.332, 0.336,
- 0.324, 0.308, 0.328, 0.328, 0.316, 0.304, 0.28, 0.284, 0.296, 0.328, 0.348,
- 0.348, 0.348, 0.392, 0.428, 0.432, 0.432, 0.452, 0.424, 0.38, 0.356, 0.384,
- 0.392, 0.336, 0.272, 0.28, 0.328, 0.348, 0.304, 0.256, 0.224, 0.24, 0.292,
- 0.324
- ],
- "z": [
- -0.764, -0.612, -0.512, -0.524, -0.512, -0.404, -0.344, -0.372, -0.388,
- -0.396, -0.328, -0.252, -0.18, -0.208, -0.228, -0.22, -0.204, -0.272, -0.308,
- -0.308, -0.388, -0.424, -0.512, -0.592, -0.66, -0.696, -0.772, -0.812, -0.968,
- -0.948, -1.02, -1.168, -1.064, -1.072, -1.128, -1.148, -1.128, -1.148, -1.164,
- -1.12, -1.108, -1.12, -1.156, -1.248, -1.26, -1.196, -1.124, -1.008, -0.96,
- -0.924, -0.896, -0.848, -0.796, -0.728, -0.708, -0.68, -0.636, -0.556, -0.532,
- -0.5, -0.48, -0.456, -0.412, -0.384, -0.364, -0.384, -0.392, -0.356, -0.364,
- -0.388, -0.376, -0.388, -0.42, -0.408, -0.416, -0.376, -0.372, -0.368, -0.412,
- -0.464, -0.492, -0.516, -0.58, -0.584, -0.68, -0.768, -0.848, -0.876, -0.924,
- -0.976, -0.972
- ]
- }
- },
- {
- "ID": 1705438029559,
- "data": {
- "x": [
- -0.4, -0.504, -0.556, -0.656, -0.988, -0.568, -0.644, -0.664, -0.644, -0.536,
- -0.496, -0.776, -0.804, -0.888, -0.868, -0.904, -0.94, -0.912, -0.888, -0.816,
- -0.836, -0.872, -0.844, -0.848, -0.832, -0.792, -0.756, -0.74, -0.692, -0.684,
- -0.664, -0.636, -0.624, -0.592, -0.568, -0.532, -0.516, -0.412, -0.412,
- -0.364, -0.292, -0.2, -0.164, -0.1, -0.1, -0.072, -0.048, 0.004, -0.02, 0.068,
- -0.004, -0.072, -0.124, -0.188, -0.192, -0.172, -0.152, -0.172, -0.264,
- -0.292, -0.312, -0.288, -0.276, -0.348, -0.48, -0.612, -0.552, -0.576, -0.676,
- -0.804, -0.876, -0.864, -0.856, -0.844, -0.836, -0.836, -0.864, -0.92, -0.924,
- -0.856, -0.792, -0.744, -0.672, -0.664, -0.644, -0.66, -0.68, -0.724, -0.716,
- -0.668, -0.588, -0.508
- ],
- "y": [
- 0.228, 0.248, 0.252, 0.252, 0.192, 0.132, 0.2, 0.28, 0.364, 0.276, 0.132,
- 0.216, 0.24, 0.296, 0.26, 0.228, 0.26, 0.268, 0.304, 0.232, 0.232, 0.256,
- 0.24, 0.232, 0.276, 0.268, 0.268, 0.304, 0.292, 0.296, 0.296, 0.292, 0.304,
- 0.312, 0.3, 0.304, 0.328, 0.308, 0.32, 0.348, 0.368, 0.352, 0.356, 0.328,
- 0.304, 0.308, 0.32, 0.3, 0.324, 0.24, 0.184, 0.26, 0.276, 0.28, 0.216, 0.224,
- 0.24, 0.248, 0.232, 0.196, 0.184, 0.22, 0.232, 0.196, 0.212, 0.188, 0.18,
- 0.176, 0.152, 0.144, 0.14, 0.176, 0.184, 0.18, 0.184, 0.18, 0.184, 0.216,
- 0.252, 0.188, 0.2, 0.18, 0.208, 0.244, 0.252, 0.248, 0.244, 0.236, 0.244,
- 0.276, 0.248, 0.236
- ],
- "z": [
- -1.18, -1.18, -1.12, -1.32, -0.928, -1.048, -1.18, -1.024, -1.224, -1.064,
- -1.008, -1.02, -0.888, -0.88, -0.812, -0.78, -0.736, -0.696, -0.672, -0.712,
- -0.784, -0.516, -0.64, -0.54, -0.524, -0.536, -0.524, -0.484, -0.468, -0.516,
- -0.54, -0.596, -0.624, -0.6, -0.596, -0.6, -0.624, -0.632, -0.656, -0.632,
- -0.7, -0.744, -0.76, -0.768, -0.788, -0.816, -0.904, -0.908, -1.012, -0.996,
- -0.78, -1.112, -1.06, -1, -1.06, -1.1, -1.136, -1.184, -1.216, -1.264, -1.24,
- -1.228, -1.228, -1.172, -1.16, -1.068, -1.12, -1.112, -1.068, -1.064, -0.996,
- -1.008, -0.976, -0.924, -0.88, -0.864, -0.824, -0.796, -0.808, -0.812, -0.74,
- -0.76, -0.72, -0.744, -0.728, -0.704, -0.692, -0.636, -0.644, -0.656, -0.676,
- -0.616
- ]
- }
- },
- {
- "ID": 1705438027130,
- "data": {
- "x": [
- -0.064, -0.104, -0.14, -0.208, -0.3, -0.316, -0.428, -0.564, -0.456, -0.532,
- -0.676, -0.74, -0.728, -0.692, -0.792, -1.024, -1.076, -1.056, -0.968, -0.9,
- -0.912, -0.86, -0.876, -0.872, -0.848, -0.848, -0.8, -0.788, -0.748, -0.728,
- -0.636, -0.56, -0.532, -0.504, -0.492, -0.432, -0.424, -0.464, -0.428, -0.408,
- -0.336, -0.296, -0.252, -0.24, -0.248, -0.28, -0.22, -0.204, -0.128, 0,
- -0.168, -0.136, -0.064, -0.088, -0.148, -0.228, -0.26, -0.296, -0.352, -0.392,
- -0.376, -0.352, -0.364, -0.436, -0.46, -0.496, -0.52, -0.596, -0.628, -0.624,
- -0.628, -0.668, -0.792, -0.808, -0.812, -0.824, -0.84, -0.864, -0.888, -0.924,
- -0.936, -0.88, -0.848, -0.888, -0.88, -0.832, -0.768, -0.724, -0.68, -0.664,
- -0.664, -0.62, -0.572
- ],
- "y": [
- 0.228, 0.212, 0.224, 0.236, 0.192, 0.204, 0.208, 0.34, 0.208, 0.184, 0.164,
- 0.148, 0.144, 0.104, 0.064, 0.132, 0.104, 0.124, 0.14, 0.188, 0.208, 0.212,
- 0.24, 0.224, 0.212, 0.24, 0.256, 0.288, 0.296, 0.308, 0.324, 0.316, 0.32,
- 0.316, 0.348, 0.348, 0.312, 0.308, 0.3, 0.3, 0.276, 0.248, 0.232, 0.252,
- 0.248, 0.152, 0.172, 0.204, 0.18, -0.08, 0.176, 0.156, 0.136, 0.16, 0.18,
- 0.208, 0.224, 0.204, 0.18, 0.188, 0.2, 0.188, 0.184, 0.168, 0.16, 0.14, 0.108,
- 0.104, 0.112, 0.084, 0.052, 0.004, 0.056, 0.056, 0.096, 0.084, 0.092, 0.12,
- 0.1, 0.14, 0.152, 0.164, 0.156, 0.184, 0.212, 0.224, 0.228, 0.228, 0.236,
- 0.268, 0.276, 0.284, 0.296
- ],
- "z": [
- -0.908, -0.98, -0.956, -1.076, -1.096, -1.176, -1.12, -1.06, -1.124, -1.176,
- -1.12, -1.112, -1.064, -1.06, -1.024, -0.984, -1.012, -0.964, -0.904, -0.824,
- -0.816, -0.748, -0.7, -0.676, -0.64, -0.628, -0.568, -0.56, -0.528, -0.468,
- -0.492, -0.488, -0.48, -0.492, -0.472, -0.532, -0.544, -0.6, -0.644, -0.656,
- -0.704, -0.732, -0.764, -0.776, -0.82, -0.68, -0.912, -0.988, -0.868, -1.148,
- -1.056, -1.152, -1.072, -1.12, -1.088, -1.092, -1.092, -1.152, -1.208, -1.208,
- -1.18, -1.172, -1.2, -1.192, -1.184, -1.18, -1.104, -1.076, -1.072, -1.028,
- -1.028, -0.984, -0.944, -0.968, -0.96, -0.964, -0.964, -0.952, -0.904, -0.856,
- -0.808, -0.788, -0.756, -0.696, -0.708, -0.652, -0.672, -0.64, -0.62, -0.584,
- -0.604, -0.592, -0.588
- ]
- }
- },
- {
- "ID": 1705437979405,
- "data": {
- "x": [
- 0.24, 0.22, 0.104, -0.036, -0.1, -0.096, -0.152, -0.22, -0.256, -0.204,
- -0.256, -0.056, -0.028, -0.076, -0.108, -0.088, -0.068, -0.136, -0.28, -0.392,
- -0.468, -0.508, -0.52, -0.516, -0.476, -0.46, -0.464, -0.516, -0.616, -0.648,
- -0.6, -0.52, -0.48, -0.468, -0.468, -0.46, -0.432, -0.404, -0.392, -0.304,
- -0.256, -0.208, -0.204, -0.292, -0.388, -0.488, -0.544, -0.656, -0.736,
- -0.792, -0.776, -0.716, -0.668, -0.572, -0.504, -0.484, -0.456, -0.404, -0.38,
- -0.356, -0.34, -0.328, -0.324, -0.276, -0.2, -0.148, -0.128, -0.136, -0.104,
- 0.016, 0.152, 0.268, 0.244, 0.168, 0.128, 0.096, 0.096, 0.092, 0.04, 0,
- -0.028, -0.004, 0.128, 0.184, 0.276, 0.348, 0.364, 0.312, 0.188, 0.036, -0.06,
- -0.156, -0.248
- ],
- "y": [
- 0.488, 0.44, 0.364, 0.304, 0.268, 0.272, 0.416, 0.436, 0.408, 0.364, 0.364,
- 0.216, 0.224, 0.264, 0.26, 0.248, 0.288, 0.344, 0.388, 0.392, 0.392, 0.364,
- 0.344, 0.332, 0.308, 0.304, 0.316, 0.336, 0.34, 0.336, 0.312, 0.296, 0.312,
- 0.336, 0.336, 0.34, 0.34, 0.364, 0.372, 0.38, 0.376, 0.316, 0.292, 0.308,
- 0.296, 0.324, 0.44, 0.54, 0.584, 0.624, 0.708, 0.728, 0.74, 0.748, 0.716,
- 0.68, 0.624, 0.592, 0.564, 0.536, 0.524, 0.504, 0.48, 0.464, 0.444, 0.428,
- 0.416, 0.408, 0.42, 0.408, 0.412, 0.38, 0.388, 0.408, 0.436, 0.448, 0.436,
- 0.448, 0.44, 0.464, 0.452, 0.456, 0.312, 0.424, 0.376, 0.388, 0.36, 0.336,
- 0.348, 0.368, 0.412, 0.484, 0.5
- ],
- "z": [
- -0.996, -0.96, -0.964, -0.896, -0.82, -0.696, -0.552, -0.52, -0.568, -0.652,
- -0.652, -1.104, -1.196, -1.4, -1.516, -1.58, -1.54, -1.456, -1.364, -1.312,
- -1.248, -1.208, -1.172, -1.112, -1.072, -1.032, -1.004, -0.996, -1.036,
- -1.056, -1.032, -0.996, -0.932, -0.868, -0.864, -0.824, -0.808, -0.764,
- -0.708, -0.652, -0.624, -0.632, -0.644, -0.628, -0.612, -0.616, -0.692,
- -0.788, -0.884, -0.932, -0.956, -0.936, -0.852, -0.824, -0.812, -0.788,
- -0.784, -0.74, -0.732, -0.7, -0.668, -0.64, -0.6, -0.56, -0.552, -0.56, -0.56,
- -0.556, -0.528, -0.56, -0.616, -0.7, -0.78, -0.844, -0.88, -0.884, -0.92,
- -0.96, -1, -1.004, -0.956, -1.008, -1.024, -1.092, -1.076, -1.092, -1.132,
- -1.152, -1.148, -1.132, -1.088, -1.084, -1.06
- ]
- }
- },
- {
- "ID": 1705437977128,
- "data": {
- "x": [
- -0.084, -0.124, -0.188, -0.112, -0.264, -0.244, -0.092, 0.12, 0.228, 0.16,
- 0.316, 0.296, 0.224, -0.084, -0.28, -0.372, -0.372, -0.352, -0.42, -0.596,
- -0.792, -0.7, -0.612, -0.696, -0.82, -0.82, -0.824, -0.8, -0.868, -0.968,
- -0.94, -0.852, -0.756, -0.684, -0.632, -0.516, -0.456, -0.396, -0.436, -0.476,
- -0.416, -0.364, -0.296, -0.292, -0.304, -0.332, -0.324, -0.272, -0.208,
- -0.156, -0.112, -0.08, -0.008, 0.016, 0.04, 0.092, 0.14, 0.16, 0.136, 0.144,
- 0.168, 0.176, 0.152, 0.236, 0.304, 0.248, 0.22, 0.12, 0.044, 0.04, 0.128,
- 0.156, 0.108, -0.044, -0.188, -0.248, -0.256, -0.408, -0.516, -0.484, -0.404,
- -0.396, -0.504, -0.592, -0.636, -0.64, -0.636, -0.596, -0.58, -0.52, -0.428
- ],
- "y": [
- 0.3, 0.304, 0.392, 0.324, 0.236, 0.268, 0.268, 0.36, 0.256, 0.332, 0.316, 0.5,
- 0.288, 0.336, 0.392, 0.448, 0.452, 0.46, 0.46, 0.5, 0.52, 0.44, 0.44, 0.464,
- 0.488, 0.464, 0.456, 0.484, 0.536, 0.584, 0.604, 0.584, 0.62, 0.608, 0.58,
- 0.56, 0.564, 0.576, 0.592, 0.58, 0.532, 0.492, 0.444, 0.444, 0.452, 0.476,
- 0.456, 0.44, 0.4, 0.376, 0.352, 0.356, 0.324, 0.316, 0.296, 0.332, 0.348,
- 0.38, 0.392, 0.436, 0.452, 0.384, 0.34, 0.3, 0.236, 0.208, 0.22, 0.232, 0.212,
- 0.244, 0.28, 0.308, 0.32, 0.312, 0.332, 0.352, 0.34, 0.372, 0.392, 0.392,
- 0.352, 0.34, 0.332, 0.36, 0.436, 0.372, 0.396, 0.412, 0.464, 0.416, 0.428
- ],
- "z": [
- -0.652, -0.644, -0.74, -0.748, -0.732, -0.756, -0.924, -0.8, -0.828, -0.816,
- -0.872, -0.832, -1.012, -0.992, -1.04, -1.124, -1.144, -1.18, -1.196, -1.236,
- -1.2, -1.244, -1.228, -1.112, -1.104, -1.084, -1.04, -0.964, -0.888, -0.856,
- -0.772, -0.696, -0.62, -0.564, -0.6, -0.592, -0.536, -0.48, -0.432, -0.448,
- -0.48, -0.484, -0.516, -0.464, -0.456, -0.452, -0.46, -0.46, -0.504, -0.544,
- -0.62, -0.668, -0.76, -0.8, -0.808, -0.844, -0.832, -0.804, -0.788, -0.816,
- -0.84, -0.876, -1, -1.048, -1.356, -1.068, -1.184, -1.252, -1.392, -1.36,
- -1.32, -1.256, -1.204, -1.208, -1.248, -1.24, -1.22, -1.212, -1.184, -1.152,
- -1.108, -1.084, -1.08, -1.092, -1.184, -1.136, -1.084, -1.044, -1, -1, -1.012
- ]
- }
- },
- {
- "ID": 1705437922352,
- "data": {
- "x": [
- -0.244, -0.216, -0.076, -0.112, -0.196, -0.184, -0.136, -0.044, 0.064, 0.064,
- -0.088, -0.244, -0.416, -0.452, -0.48, -0.516, -0.568, -0.688, -0.728, -0.772,
- -0.784, -0.768, -0.732, -0.696, -0.648, -0.576, -0.544, -0.52, -0.504, -0.492,
- -0.492, -0.484, -0.436, -0.388, -0.376, -0.352, -0.32, -0.268, -0.252, -0.244,
- -0.248, -0.22, -0.208, -0.212, -0.212, -0.18, -0.208, -0.252, -0.32, -0.356,
- -0.332, -0.252, -0.228, -0.236, -0.212, -0.148, -0.116, -0.112, -0.088,
- -0.056, -0.056, -0.04, 0.032, 0.076, 0.004, -0.148, -0.188, -0.176, -0.176,
- -0.264, -0.412, -0.476, -0.42, -0.344, -0.32, -0.312, -0.376, -0.46, -0.436,
- -0.348, -0.26, -0.268, -0.376, -0.484, -0.508, -0.5, -0.512, -0.492, -0.488,
- -0.456, -0.436, -0.448, -0.46
- ],
- "y": [
- 0.664, 0.58, 0.64, 0.796, 0.9, 0.844, 0.764, 0.792, 0.788, 0.78, 0.884, 1.036,
- 1.16, 1.228, 1.248, 1.252, 1.264, 1.292, 1.26, 1.264, 1.236, 1.188, 1.176,
- 1.136, 1.124, 1.06, 1.004, 0.964, 0.964, 1.008, 1.036, 1.004, 1.004, 1, 0.992,
- 0.98, 0.94, 0.92, 0.896, 0.884, 0.884, 0.852, 0.816, 0.792, 0.792, 0.764,
- 0.76, 0.728, 0.712, 0.724, 0.728, 0.728, 0.72, 0.7, 0.708, 0.728, 0.708,
- 0.696, 0.732, 0.752, 0.76, 0.752, 0.756, 0.684, 0.668, 0.752, 0.9, 0.96,
- 0.932, 0.892, 0.94, 1, 1.028, 1.04, 1.04, 1.044, 1.052, 1.06, 1.02, 0.98,
- 0.932, 0.916, 0.928, 0.96, 0.996, 0.98, 1.024, 1.028, 1, 0.968, 0.924, 0.928,
- 0.9
- ],
- "z": [
- -0.524, -0.62, -0.732, -0.652, -0.576, -0.608, -0.648, -0.796, -0.868, -0.848,
- -0.744, -0.648, -0.604, -0.576, -0.568, -0.528, -0.504, -0.444, -0.416, -0.38,
- -0.36, -0.316, -0.26, -0.2, -0.152, -0.136, -0.116, -0.116, -0.108, -0.044,
- -0.004, 0.036, 0.072, 0.072, 0.064, 0.072, 0.068, 0.076, 0.08, 0.088, 0.104,
- 0.096, 0.092, 0.068, -0.008, -0.084, -0.092, -0.144, -0.184, -0.224, -0.272,
- -0.324, -0.332, -0.352, -0.404, -0.436, -0.452, -0.484, -0.492, -0.532, -0.56,
- -0.612, -0.688, -0.74, -0.744, -0.688, -0.624, -0.608, -0.628, -0.656, -0.672,
- -0.524, -0.46, -0.468, -0.532, -0.596, -0.604, -0.6, -0.644, -0.66, -0.748,
- -0.752, -0.76, -0.676, -0.608, -0.508, -0.392, -0.34, -0.296, -0.304, -0.344,
- -0.372, -0.38
- ]
- }
- },
- {
- "ID": 1705437913803,
- "data": {
- "x": [
- 0.864, 0.94, 1.108, 1.224, 1.232, 1.22, 1.212, 1.228, 1.012, 0.944, 0.86,
- 0.804, 0.788, 0.76, 0.732, 0.68, 0.64, 0.676, 0.496, 0.356, 0.204, 0.044,
- -0.02, -0.008, -0.028, -0.072, -0.184, -0.324, -0.488, -0.536, -0.488, -0.404,
- -0.4, -0.448, -0.316, -0.34, -0.516, -0.652, -0.548, -0.376, -0.444, -0.496,
- -0.496, -0.428, -0.344, -0.724, -0.196, 0.044, 0.112, 0.248, 0.328, 0.392,
- 0.372, 0.34, 0.296, 0.22, 0.192, 0.212, 0.228, 0.32, 0.332, 0.38, 0.416,
- 0.456, 0.5, 0.516, 0.508, 0.496, 0.46, 0.448, 0.444, 0.424, 0.34, 0.324,
- 0.344, 0.252, 0.228, 0.18, 0.088, 0.016, 0.012, 0.016, 0.004, -0.024, -0.108,
- -0.16, -0.212, -0.316, -0.412, -0.42, -0.38, -0.296, -0.244
- ],
- "y": [
- 0.056, 0.036, 0.02, -0.044, -0.104, -0.136, -0.152, 0.064, -0.228, -0.192,
- -0.224, -0.2, -0.216, -0.2, -0.188, -0.184, -0.164, -0.08, -0.044, -0.004,
- 0.068, 0.176, 0.236, 0.24, 0.232, 0.244, 0.308, 0.36, 0.396, 0.424, 0.4,
- 0.368, 0.348, 0.388, 0.36, 0.328, 0.3, 0.332, 0.344, 0.244, 0.068, -0.096,
- -0.092, -0.06, -0.02, 0.452, -0.112, -0.112, -0.032, 0.056, 0.152, 0.096,
- 0.06, 0.072, 0.072, 0.18, 0.236, 0.212, 0.136, 0.1, 0.092, 0.108, 0.108,
- 0.076, 0.04, 0.028, 0.052, 0.096, 0.124, 0.088, 0.064, 0.056, 0.148, 0.26,
- 0.304, 0.272, 0.26, 0.308, 0.34, 0.416, 0.452, 0.404, 0.428, 0.456, 0.52,
- 0.536, 0.528, 0.552, 0.604, 0.648, 0.696, 0.64, 0.596
- ],
- "z": [
- -1.236, -1.128, -0.992, -0.916, -0.844, -0.796, -0.724, -0.672, -0.576,
- -0.496, -0.552, -0.448, -0.472, -0.452, -0.38, -0.312, -0.28, -0.18, -0.248,
- -0.324, -0.428, -0.468, -0.464, -0.432, -0.48, -0.524, -0.58, -0.66, -0.78,
- -0.808, -0.784, -0.732, -0.76, -0.744, -0.744, -0.8, -0.904, -1.032, -1.076,
- -1.14, -1.3, -1.504, -1.62, -1.652, -1.604, -1.556, -1.52, -1.432, -1.252,
- -1.08, -1.064, -1.1, -1.1, -1.048, -1.044, -1.064, -1.132, -1.184, -1.24,
- -1.332, -1.292, -1.268, -1.232, -1.224, -1.18, -1.14, -1.088, -1.016, -0.892,
- -0.832, -0.812, -0.836, -0.82, -0.792, -0.748, -0.708, -0.764, -0.736, -0.712,
- -0.68, -0.668, -0.68, -0.66, -0.672, -0.656, -0.636, -0.64, -0.692, -0.724,
- -0.752, -0.768, -0.772, -0.792
- ]
- }
- },
- {
- "ID": 1705437908508,
- "data": {
- "x": [
- -0.432, -0.432, -0.404, -0.48, -0.588, -0.9, -0.752, -0.852, -1.02, -1.108,
- -1.044, -0.944, -0.888, -0.876, -0.852, -0.756, -0.828, -0.868, -0.908,
- -0.928, -0.84, -0.756, -0.66, -0.576, -0.512, -0.484, -0.424, -0.42, -0.436,
- -0.408, -0.352, -0.272, -0.216, -0.208, -0.236, -0.188, -0.148, -0.104,
- -0.084, -0.08, -0.076, -0.064, -0.08, -0.108, -0.132, -0.188, -0.232, -0.212,
- -0.212, -0.288, -0.384, -0.392, -0.372, -0.348, -0.388, -0.528, -0.732, -0.76,
- -0.684, -0.732, -0.9, -1.032, -1.092, -1.004, -0.98, -1, -0.972, -0.992, -1,
- -1.06, -1.084, -1.052, -1.012, -0.996, -0.904, -0.796, -0.692, -0.564, -0.404,
- -0.388, -0.312, -0.32, -0.324, -0.324, -0.364, -0.428, -0.484, -0.508, -0.496,
- -0.508, -0.508, -0.508, -0.496
- ],
- "y": [
- 0.68, 0.644, 0.576, 0.52, 0.496, 0.492, 0.548, 0.68, 0.704, 0.696, 0.712,
- 0.772, 0.804, 0.82, 0.812, 0.84, 0.888, 0.948, 0.94, 0.96, 0.96, 0.972, 0.96,
- 0.924, 0.916, 0.888, 0.9, 0.904, 0.88, 0.86, 0.876, 0.832, 0.824, 0.8, 0.74,
- 0.716, 0.692, 0.672, 0.628, 0.572, 0.604, 0.608, 0.608, 0.592, 0.572, 0.564,
- 0.54, 0.528, 0.54, 0.544, 0.512, 0.512, 0.524, 0.536, 0.524, 0.536, 0.468,
- 0.472, 0.492, 0.52, 0.564, 0.596, 0.692, 0.748, 0.764, 0.748, 0.812, 0.876,
- 0.872, 0.816, 0.8, 0.86, 0.904, 0.892, 0.892, 0.912, 0.932, 0.936, 0.824, 1,
- 0.844, 0.86, 0.832, 0.808, 0.788, 0.776, 0.78, 0.76, 0.756, 0.776, 0.772,
- 0.772, 0.776
- ],
- "z": [
- -0.252, -0.272, -0.324, -0.252, -0.216, -0.104, -0.072, -0.012, -0.036,
- -0.128, -0.248, -0.308, -0.364, -0.424, -0.408, -0.572, -0.464, -0.508,
- -0.468, -0.504, -0.452, -0.464, -0.496, -0.58, -0.664, -0.72, -0.704, -0.744,
- -0.784, -0.856, -0.884, -0.94, -0.856, -0.84, -0.86, -0.864, -0.832, -0.788,
- -0.744, -0.744, -0.716, -0.648, -0.556, -0.516, -0.468, -0.38, -0.312, -0.272,
- -0.228, -0.184, -0.16, -0.144, -0.108, -0.048, -0.044, -0.004, 0.02, -0.012,
- 0.044, 0.1, 0.144, 0.152, 0.156, 0.128, 0.104, 0.116, 0.172, 0.148, 0.088,
- 0.032, -0.032, -0.092, -0.188, -0.34, -0.452, -0.548, -0.592, -0.684, -0.652,
- -0.912, -0.672, -0.604, -0.6, -0.584, -0.564, -0.504, -0.504, -0.496, -0.484,
- -0.472, -0.46, -0.456, -0.448
- ]
- }
- },
- {
- "ID": 1705437905957,
- "data": {
- "x": [
- -0.436, -0.42, -0.432, -0.388, -0.36, -0.22, -0.12, -0.156, -0.336, -0.496,
- -0.56, -0.6, -0.684, -0.856, -1.036, -1.14, -1.048, -0.908, -0.884, -0.936,
- -1.016, -1.056, -1.06, -1.024, -1.028, -1.04, -0.964, -0.872, -0.824, -0.796,
- -0.832, -0.868, -0.804, -0.716, -0.64, -0.608, -0.584, -0.572, -0.544, -0.512,
- -0.516, -0.5, -0.476, -0.464, -0.448, -0.444, -0.444, -0.364, -0.28, -0.212,
- -0.228, -0.312, -0.392, -0.4, -0.376, -0.332, -0.256, -0.232, -0.244, -0.244,
- -0.26, -0.396, -0.552, -0.68, -0.836, -0.888, -0.852, -0.928, -0.972, -1.004,
- -0.976, -0.928, -0.92, -0.94, -0.952, -0.904, -0.848, -0.828, -0.856, -0.844,
- -0.804, -0.78, -0.764, -0.764, -0.732, -0.712, -0.712, -0.692, -0.688, -0.692,
- -0.64, -0.6, -0.588
- ],
- "y": [
- 0.54, 0.504, 0.48, 0.512, 0.524, 0.6, 0.752, 0.936, 0.916, 0.936, 0.92, 0.992,
- 0.992, 1.028, 1.056, 1.072, 1.064, 1.016, 0.976, 0.908, 0.856, 0.848, 0.812,
- 0.796, 0.784, 0.792, 0.78, 0.752, 0.744, 0.732, 0.724, 0.708, 0.7, 0.692,
- 0.672, 0.672, 0.68, 0.652, 0.644, 0.64, 0.628, 0.6, 0.56, 0.552, 0.516, 0.496,
- 0.492, 0.472, 0.508, 0.524, 0.556, 0.592, 0.632, 0.664, 0.66, 0.712, 0.768,
- 0.808, 0.812, 0.848, 0.876, 0.908, 0.932, 0.984, 1.012, 1.02, 1.004, 0.968,
- 0.916, 0.86, 0.868, 0.816, 0.784, 0.74, 0.72, 0.692, 0.684, 0.676, 0.7, 0.712,
- 0.732, 0.74, 0.764, 0.788, 0.776, 0.756, 0.776, 0.764, 0.752, 0.732, 0.716,
- 0.724, 0.712
- ],
- "z": [
- -0.288, -0.312, -0.356, -0.36, -0.44, -0.7, -0.964, -0.852, -0.704, -0.612,
- -0.592, -0.588, -0.524, -0.468, -0.368, -0.364, -0.364, -0.356, -0.328,
- -0.288, -0.248, -0.256, -0.296, -0.292, -0.232, -0.204, -0.176, -0.148,
- -0.132, -0.072, -0.004, 0.08, 0.132, 0.164, 0.188, 0.216, 0.204, 0.164, 0.088,
- 0.032, 0.044, 0.04, 0.068, 0.06, 0.016, -0.048, -0.124, -0.208, -0.296,
- -0.404, -0.428, -0.4, -0.38, -0.408, -0.512, -0.624, -0.7, -0.712, -0.76,
- -0.8, -0.872, -0.88, -0.824, -0.684, -0.6, -0.528, -0.468, -0.384, -0.292,
- -0.272, -0.28, -0.3, -0.296, -0.276, -0.3, -0.32, -0.34, -0.372, -0.388,
- -0.376, -0.396, -0.412, -0.404, -0.376, -0.38, -0.368, -0.364, -0.396, -0.4,
- -0.38, -0.356, -0.32, -0.328
- ]
- }
- },
- {
- "ID": 1705437896254,
- "data": {
- "x": [
- -0.632, -0.608, -0.592, -0.584, -0.644, -0.868, -0.492, -0.528, -0.712,
- -0.784, -0.708, -0.588, -0.632, -0.752, -0.876, -0.852, -0.808, -0.84, -0.944,
- -0.936, -0.9, -0.936, -1.02, -1.104, -1.084, -1.076, -1.048, -1.048, -1.112,
- -1.144, -1.188, -1.208, -1.228, -1.288, -1.296, -1.264, -1.2, -1.18, -1.132,
- -1.02, -0.956, -0.912, -0.872, -0.848, -0.824, -0.876, -0.892, -0.844, -0.808,
- -0.732, -0.716, -0.78, -0.852, -0.76, -0.62, -0.588, -0.636, -0.632, -0.564,
- -0.52, -0.508, -0.52, -0.484, -0.412, -0.432, -0.428, -0.444, -0.496, -0.48,
- -0.452, -0.46, -0.508, -0.516, -0.512, -0.448, -0.4, -0.404, -0.46, -0.532,
- -0.568, -0.484, -0.38, -0.444, -0.572, -0.728, -0.728, -0.616, -0.644, -0.656,
- -0.704, -0.688, -0.644, -0.652
- ],
- "y": [
- 0.364, 0.344, 0.352, 0.38, 0.396, 0.604, 0.4, 0.428, 0.468, 0.48, 0.472,
- 0.436, 0.42, 0.408, 0.42, 0.424, 0.38, 0.304, 0.26, 0.244, 0.244, 0.232,
- 0.184, 0.176, 0.112, 0.128, 0.14, 0.12, 0.092, 0.072, 0.056, 0.076, 0.104,
- 0.124, 0.14, 0.164, 0.2, 0.216, 0.224, 0.248, 0.28, 0.308, 0.324, 0.348, 0.38,
- 0.404, 0.408, 0.408, 0.384, 0.372, 0.356, 0.372, 0.3, 0.284, 0.352, 0.372,
- 0.38, 0.364, 0.412, 0.32, 0.36, 0.32, 0.308, 0.276, 0.332, 0.34, 0.324, 0.344,
- 0.372, 0.368, 0.368, 0.408, 0.464, 0.476, 0.44, 0.424, 0.468, 0.484, 0.496,
- 0.468, 0.46, 0.484, 0.5, 0.504, 0.464, 0.448, 0.432, 0.396, 0.352, 0.34, 0.32,
- 0.32, 0.316
- ],
- "z": [
- -0.524, -0.552, -0.576, -0.58, -0.58, -0.724, -0.484, -0.496, -0.556, -0.524,
- -0.552, -0.58, -0.648, -0.732, -0.784, -0.596, -0.644, -0.72, -0.756, -0.744,
- -0.724, -0.7, -0.684, -0.716, -0.716, -0.68, -0.668, -0.656, -0.708, -0.736,
- -0.696, -0.712, -0.684, -0.7, -0.688, -0.644, -0.596, -0.556, -0.572, -0.552,
- -0.524, -0.496, -0.472, -0.504, -0.464, -0.368, -0.412, -0.42, -0.42, -0.436,
- -0.372, -0.352, -0.352, -0.4, -0.372, -0.336, -0.292, -0.376, -0.392, -0.444,
- -0.456, -0.436, -0.504, -0.56, -0.58, -0.62, -0.68, -0.716, -0.76, -0.76,
- -0.768, -0.764, -0.792, -0.784, -0.76, -0.74, -0.728, -0.66, -0.7, -0.756,
- -0.86, -0.776, -0.76, -0.812, -0.876, -0.872, -0.908, -0.96, -0.976, -0.996,
- -1.032, -0.976, -0.96
- ]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- }
-]
diff --git a/src/__tests__/fixtures/test-data-shake-still.json b/src/__tests__/fixtures/test-data-shake-still.json
deleted file mode 100644
index 23acfa6c3..000000000
--- a/src/__tests__/fixtures/test-data-shake-still.json
+++ /dev/null
@@ -1,573 +0,0 @@
-[
- {
- "ID": 1705437793875,
- "name": "Shake",
- "recordings": [
- {
- "ID": 1718706806260,
- "data": {
- "x": [
- 2.04, 2.04, 2.008, 1.516, 1.152, 0.612, 0.056, -0.528, -1.224, -1.716, -1.632,
- -1.072, -0.512, 0.408, 1.4, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.68, 1.304,
- 0.836, 0.248, -0.412, -1.152, -1.776, -1.868, -1.384, -0.744, 0.232, 1.376,
- 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.584, 1.156, 0.656, 0.096, -0.6, -1.352,
- -1.792, -1.644, -0.996, -0.316, 0.612, 1.648, 2.04, 2.04, 2.04, 2.04, 2.04,
- 2.04, 1.5, 1.096, 0.6, -0.012, -0.656, -1.272, -1.596, -1.408, -0.872, -0.22,
- 0.544, 1.488, 2.036, 2.04, 2.04, 2.04, 2.04, 2.04, 1.948, 1.42, 0.928, 0.428,
- -0.216, -0.788, -1.272, -1.604, -1.396, -0.856, -0.268, 0.544, 1.488, 2.04,
- 2.04, 2.04
- ],
- "y": [
- 1.236, 0.976, 0.7, 0.58, 0.496, 0.316, 0.176, 0.004, -0.152, -0.248, -0.312,
- -0.372, -0.356, -0.024, 0.372, 0.816, 1.24, 1.416, 1.416, 1.216, 0.932, 0.688,
- 0.552, 0.388, 0.208, -0.028, -0.188, -0.292, -0.388, -0.464, -0.504, -0.268,
- 0.248, 0.78, 1.28, 1.52, 1.492, 1.26, 0.924, 0.628, 0.48, 0.332, 0.164,
- -0.032, -0.172, -0.288, -0.428, -0.416, -0.34, -0.036, 0.5, 0.996, 1.296,
- 1.52, 1.42, 1.168, 0.804, 0.6, 0.484, 0.344, 0.164, -0.028, -0.168, -0.264,
- -0.304, -0.3, -0.18, 0.084, 0.512, 0.832, 1.08, 1.228, 1.3, 1.268, 1.064,
- 0.764, 0.62, 0.452, 0.312, 0.12, -0.088, -0.184, -0.324, -0.404, -0.392,
- -0.308, -0.024, 0.408, 0.844, 1.252, 1.536
- ],
- "z": [
- 2.04, 2.024, 1.264, 0.56, 0.044, -0.34, -0.664, -1.004, -1.416, -1.656,
- -1.488, -0.916, -0.496, -0.2, 0.276, 0.928, 1.888, 2.04, 2.04, 2.04, 1.448,
- 0.712, 0.192, -0.2, -0.576, -0.888, -1.384, -1.7, -1.568, -1.144, -0.636,
- -0.208, 0.288, 0.952, 1.824, 2.04, 2.04, 2.04, 1.416, 0.68, 0.112, -0.328,
- -0.676, -1, -1.424, -1.568, -1.324, -0.852, -0.404, 0.104, 0.492, 1.204,
- 1.948, 2.04, 2.04, 1.98, 1.352, 0.632, 0.124, -0.352, -0.744, -0.988, -1.328,
- -1.368, -1.192, -0.812, -0.388, -0.004, 0.368, 0.892, 1.448, 1.944, 2.04,
- 2.036, 1.696, 1.1, 0.38, -0.032, -0.4, -0.732, -0.844, -1.196, -1.332, -1.12,
- -0.764, -0.428, -0.068, 0.4, 0.708, 1.248, 1.852
- ]
- }
- },
- {
- "ID": 1718706797873,
- "data": {
- "x": [
- -0.732, -0.276, 0.012, 0.188, 0.368, 0.704, 1.132, 1.32, 1.36, 1.184, 0.884,
- 0.628, 0.396, 0.156, -0.036, -0.388, -0.748, -1.092, -0.984, -0.592, -0.212,
- 0.056, 0.348, 0.612, 0.892, 1.228, 1.304, 1.272, 1.04, 0.792, 0.628, 0.452,
- 0.168, -0.14, -0.5, -0.9, -1.008, -0.736, -0.308, 0.064, 0.284, 0.532, 0.84,
- 1.216, 1.42, 1.384, 1.148, 0.928, 0.736, 0.536, 0.328, 0.092, -0.156, -0.504,
- -0.872, -1.112, -0.776, -0.324, 0.036, 0.292, 0.472, 0.772, 1.248, 1.452,
- 1.488, 1.3, 0.996, 0.736, 0.492, 0.268, 0.032, -0.268, -0.672, -1.088, -1.1,
- -0.7, -0.228, 0.116, 0.44, 0.644, 0.928, 1.196, 1.392, 1.328, 1.088, 0.808,
- 0.584, 0.368, 0.144, -0.108, -0.48
- ],
- "y": [
- -1.64, -0.936, -0.288, 0.332, 1.16, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04,
- 1.276, 0.536, -0.084, -0.608, -1.136, -1.7, -1.756, -1.372, -0.9, -0.376,
- 0.52, 1.464, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.84, 1.208, 0.46, -0.22,
- -0.972, -1.644, -1.968, -1.796, -1.296, -0.66, 0.092, 1.008, 2.04, 2.04, 2.04,
- 2.04, 2.04, 2.04, 2.036, 1.344, 0.704, 0.104, -0.516, -1.112, -1.672, -2.036,
- -1.672, -1.064, -0.416, 0.46, 1.224, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 2,
- 1.332, 0.704, 0.156, -0.512, -1.228, -1.816, -1.864, -1.424, -0.768, -0.08,
- 0.832, 1.788, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.7, 1.14, 0.524, -0.06,
- -0.744
- ],
- "z": [
- -0.536, -0.372, -0.476, -0.588, -0.716, -0.54, -0.004, 0.384, 0.452, 0.28,
- -0.072, -0.48, -0.68, -0.752, -0.636, -0.74, -0.876, -0.952, -0.732, -0.408,
- -0.192, -0.224, -0.34, -0.292, -0.12, 0.292, 0.46, 0.464, 0.156, -0.1, -0.376,
- -0.652, -0.844, -0.932, -0.868, -0.864, -0.696, -0.424, -0.152, -0.156, -0.42,
- -0.512, -0.488, -0.04, 0.272, 0.384, 0.16, -0.076, -0.376, -0.604, -0.668,
- -0.616, -0.508, -0.54, -0.688, -0.748, -0.548, -0.404, -0.392, -0.56, -0.616,
- -0.372, 0.196, 0.584, 0.764, 0.624, 0.16, -0.24, -0.54, -0.696, -0.78, -0.756,
- -0.792, -0.904, -0.8, -0.5, -0.264, -0.352, -0.348, -0.312, 0.024, 0.396,
- 0.696, 0.736, 0.476, 0.136, -0.236, -0.516, -0.62, -0.66, -0.684
- ]
- }
- },
- {
- "ID": 1718706789113,
- "data": {
- "x": [
- 2.04, 2.04, 2.04, 2.04, 1.856, 1.276, 0.684, 0.096, -0.62, -1.172, -1.54,
- -1.592, -1.34, -0.828, -0.212, 0.588, 1.496, 2.04, 2.04, 2.04, 2.04, 2.04,
- 2.04, 2.04, 1.504, 0.88, 0.268, -0.368, -0.896, -1.464, -1.768, -1.608,
- -1.104, -0.452, 0.248, 1.216, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.66,
- 1.088, 0.532, -0.084, -0.672, -1.288, -1.596, -1.6, -1.316, -0.76, 0.004,
- 0.784, 1.784, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.872, 1.344, 0.716, 0.168,
- -0.436, -1.032, -1.548, -1.752, -1.528, -1.028, -0.1, 1.092, 2.04, 2.04, 2.04,
- 2.04, 2.04, 2.04, 2.04, 1.616, 1.088, 0.408, -0.196, -0.88, -1.46, -1.552,
- -1.448, -0.96
- ],
- "y": [
- -0.248, -0.212, -0.224, -0.232, -0.228, -0.196, -0.132, -0.08, 0.036, 0.232,
- 0.392, 0.332, 0.136, -0.052, -0.176, -0.232, -0.284, -0.268, -0.196, -0.208,
- -0.192, -0.228, -0.276, -0.26, -0.232, -0.16, -0.1, -0.008, 0.184, 0.376,
- 0.452, 0.26, -0.016, -0.26, -0.364, -0.356, -0.276, -0.244, -0.172, -0.108,
- -0.144, -0.184, -0.232, -0.216, -0.156, -0.092, -0.032, 0.052, 0.232, 0.368,
- 0.316, 0.124, -0.124, -0.272, -0.336, -0.368, -0.376, -0.396, -0.344, -0.328,
- -0.336, -0.312, -0.264, -0.244, -0.176, -0.124, -0.076, 0.112, 0.404, 0.464,
- 0.256, -0.044, -0.3, -0.504, -0.516, -0.52, -0.484, -0.448, -0.42, -0.368,
- -0.312, -0.244, -0.184, -0.12, 0.028, 0.228, 0.44, 0.396, 0.216, -0.076
- ],
- "z": [
- 1.396, 1.324, 1.044, 0.564, 0.164, -0.164, -0.396, -0.564, -0.652, -0.892,
- -1.004, -0.796, -0.512, -0.328, -0.28, -0.176, 0.064, 0.496, 0.88, 1.22,
- 1.208, 1.08, 0.8, 0.316, -0.084, -0.404, -0.544, -0.616, -0.844, -0.996,
- -0.96, -0.632, -0.28, -0.096, 0.076, 0.12, 0.264, 0.576, 0.952, 1.128, 1.192,
- 1.008, 0.608, 0.148, -0.164, -0.42, -0.572, -0.684, -0.852, -0.956, -0.76,
- -0.596, -0.336, -0.22, -0.08, 0.104, 0.536, 1, 1.124, 1.12, 1.028, 0.716,
- 0.288, -0.02, -0.288, -0.468, -0.68, -0.94, -1.148, -1.116, -0.692, -0.292,
- -0.072, -0.052, 0.04, 0.336, 0.8, 1.06, 1.036, 0.748, 0.368, -0.02, -0.308,
- -0.496, -0.672, -0.804, -0.984, -0.864, -0.544, -0.2
- ]
- }
- },
- {
- "ID": 1718706779890,
- "data": {
- "x": [
- -1.548, -2.04, -2.04, -2.04, -2.04, -2.04, -2.04, -2.04, -1.484, -0.74,
- -0.032, 0.68, 1.348, 1.836, 2.04, 1.992, 1.532, 0.892, 0.192, -0.668, -1.624,
- -2.04, -2.04, -2.04, -2.04, -2.04, -2.04, -2.04, -1.516, -0.944, -0.368,
- 0.308, 0.94, 1.572, 2.04, 2.04, 1.688, 1.068, 0.444, -0.396, -1.288, -2.04,
- -2.04, -2.04, -2.04, -2.04, -2.04, -2.04, -1.748, -1.164, -0.664, -0.16,
- 0.368, 0.788, 1.16, 1.5, 1.608, 1.38, 0.828, 0.272, -0.352, -1.188, -2.04,
- -2.04, -2.04, -2.04, -2.04, -2.04, -2.04, -1.684, -1.044, -0.56, 0.024, 0.768,
- 1.476, 1.768, 1.728, 1.38, 0.768, 0.336, -0.392, -1.576, -2.04, -2.04, -2.04,
- -2.04, -2.04, -2.04, -2.04, -1.476, -0.944
- ],
- "y": [
- 0.588, 0.692, 0.696, 0.708, 0.804, 0.704, 0.58, 0.496, 0.36, 0.248, 0.096,
- -0.12, -0.384, -0.58, -0.732, -0.7, -0.464, -0.124, 0.144, 0.32, 0.4, 0.536,
- 0.652, 0.632, 0.628, 0.58, 0.508, 0.404, 0.3, 0.224, 0.108, -0.088, -0.232,
- -0.436, -0.72, -0.72, -0.532, -0.236, 0.008, 0.272, 0.412, 0.396, 0.416,
- 0.516, 0.54, 0.484, 0.404, 0.232, 0.104, 0.048, -0.024, -0.108, -0.216,
- -0.264, -0.348, -0.472, -0.556, -0.496, -0.308, -0.168, -0.048, 0.056, 0.236,
- 0.204, 0.292, 0.388, 0.356, 0.324, 0.176, 0.076, 0.012, 0.008, -0.032, -0.196,
- -0.444, -0.572, -0.544, -0.408, -0.156, -0.044, 0.1, 0.352, 0.212, 0.1, 0.028,
- 0.036, 0.092, 0.108, 0.012, -0.072, -0.112
- ],
- "z": [
- -0.832, -0.824, -0.684, -0.528, -0.164, 0.232, 0.268, -0.156, -0.62, -0.94,
- -0.916, -0.732, -0.428, -0.128, 0.06, 0.26, 0.38, 0.248, -0.052, -0.464,
- -0.716, -0.932, -0.736, -0.372, 0.008, 0.252, 0.224, -0.156, -0.484, -0.712,
- -0.764, -0.632, -0.392, -0.088, 0.016, 0.104, 0.208, 0.28, 0.14, -0.324,
- -0.66, -0.78, -0.572, -0.18, 0.004, 0.04, 0.02, -0.1, -0.344, -0.54, -0.668,
- -0.676, -0.508, -0.292, -0.084, 0.052, 0.024, 0.128, 0.148, 0.2, -0.116,
- -0.52, -0.62, -0.408, 0.024, 0.328, 0.388, 0.232, -0.116, -0.444, -0.564,
- -0.648, -0.664, -0.592, -0.464, -0.2, 0.148, 0.492, 0.664, 0.528, 0.188,
- -0.332, -0.632, -0.64, -0.468, -0.252, -0.02, 0.132, 0.028, -0.18, -0.432
- ]
- }
- },
- {
- "ID": 1718706773634,
- "data": {
- "x": [
- -0.892, -0.768, -0.66, -0.468, -0.236, -0.028, 0.168, 0.56, 1.188, 1.368,
- 0.772, 0.044, -0.28, -0.448, -0.552, -0.8, -1.128, -1.216, -1.164, -0.964,
- -0.672, -0.404, -0.156, 0.028, 0.276, 0.704, 1.336, 1.444, 0.784, 0.096,
- -0.236, -0.408, -0.624, -1.048, -1.364, -1.356, -1.224, -1.016, -0.736,
- -0.424, -0.188, 0.032, 0.216, 0.448, 0.804, 1.252, 1.068, 0.544, 0.1, -0.128,
- -0.324, -0.712, -1.136, -1.492, -1.496, -1.224, -0.792, -0.436, -0.2, 0.048,
- 0.268, 0.66, 1.092, 1.38, 1.036, 0.352, -0.088, -0.32, -0.516, -0.876, -1.232,
- -1.28, -1.232, -1.016, -0.732, -0.432, -0.212, 0.036, 0.296, 0.788, 1.2,
- 1.192, 0.668, 0.068, -0.224, -0.464, -0.712, -0.916, -1.096, -1.132
- ],
- "y": [
- -2.04, -2.04, -2.04, -1.98, -1.152, -0.24, 0.632, 1.668, 2.04, 2.04, 2.04,
- 1.408, 0.456, -0.696, -1.936, -2.04, -2.04, -2.04, -2.04, -2.04, -2.04,
- -1.556, -0.8, -0.112, 0.664, 1.672, 2.04, 2.04, 2.04, 1.104, 0.228, -0.928,
- -2.032, -2.04, -2.04, -2.04, -2.04, -2.04, -2.04, -1.704, -1.04, -0.416,
- 0.284, 1.172, 1.904, 2.04, 2.04, 1.616, 0.724, -0.028, -1.208, -2.04, -2.04,
- -2.04, -2.04, -2.04, -2.04, -1.924, -1.132, -0.32, 0.432, 1.292, 2.04, 2.04,
- 2.04, 1.516, 0.7, -0.328, -1.54, -2.04, -2.04, -2.04, -2.04, -2.04, -2.04,
- -1.92, -1.044, -0.168, 0.744, 1.812, 2.04, 2.04, 2.024, 1.124, 0.34, -0.54,
- -1.588, -2.04, -2.04, -2.04
- ],
- "z": [
- 0.532, 0.264, -0.124, -0.568, -0.896, -0.932, -0.804, -0.712, -0.792, -0.724,
- -0.376, -0.108, -0.356, -0.676, -0.76, -0.472, 0.228, 0.66, 0.732, 0.388,
- -0.172, -0.628, -0.816, -0.8, -0.712, -0.732, -0.928, -0.856, -0.484, -0.288,
- -0.428, -0.728, -0.696, -0.26, 0.312, 0.732, 0.744, 0.42, -0.092, -0.468,
- -0.852, -0.928, -0.884, -0.712, -0.64, -0.588, -0.38, -0.18, -0.188, -0.476,
- -0.748, -0.56, -0.016, 0.66, 1.004, 0.716, 0.012, -0.556, -0.824, -0.936,
- -0.852, -0.768, -0.744, -0.676, -0.432, -0.096, -0.208, -0.584, -0.872,
- -0.624, -0.108, 0.268, 0.432, 0.232, -0.232, -0.668, -0.916, -0.996, -0.944,
- -0.828, -0.596, -0.304, 0.024, 0.108, -0.204, -0.544, -0.704, -0.704, -0.5,
- -0.284
- ]
- }
- },
- {
- "ID": 1718706765639,
- "data": {
- "x": [
- -0.228, -0.092, -0.24, -0.212, -0.136, -0.076, -0.08, -0.212, -0.316, -0.444,
- -0.696, -0.808, -0.86, -0.704, -0.46, -0.368, -0.268, -0.216, -0.16, -0.108,
- -0.136, -0.192, -0.272, -0.24, -0.212, -0.108, -0.108, -0.324, -0.548, -0.764,
- -0.916, -0.948, -0.836, -0.648, -0.516, -0.46, -0.38, -0.308, -0.296, -0.252,
- -0.172, -0.144, -0.072, 0.008, 0.052, 0.036, -0.096, -0.304, -0.596, -0.748,
- -0.96, -0.884, -0.656, -0.42, -0.32, -0.308, -0.296, -0.208, -0.212, -0.196,
- -0.156, -0.184, -0.232, -0.276, -0.304, -0.288, -0.412, -0.444, -0.424,
- -0.548, -0.488, -0.436, -0.304, -0.252, -0.328, -0.312, -0.352, -0.312, -0.28,
- -0.312, -0.268, -0.336, -0.292, -0.244, -0.188, -0.24, -0.32, -0.636, -0.564,
- -0.672, -0.52
- ],
- "y": [
- 0.156, 0.344, 0.556, 0.664, 0.652, 0.508, 0.236, -0.128, -0.548, -1.116,
- -1.524, -1.8, -1.712, -1.388, -1.22, -1.036, -0.796, -0.548, -0.284, 0.016,
- 0.416, 0.708, 0.864, 0.816, 0.612, 0.304, -0.028, -0.492, -1.044, -1.504,
- -1.704, -1.764, -1.592, -1.328, -1.112, -0.9, -0.684, -0.488, -0.284, -0.04,
- 0.284, 0.604, 0.804, 0.796, 0.588, 0.28, -0.128, -0.704, -1.212, -1.608,
- -1.796, -1.776, -1.536, -1.248, -1.012, -0.748, -0.52, -0.324, -0.072, 0.232,
- 0.472, 0.6, 0.672, 0.596, 0.42, 0.132, -0.296, -0.904, -1.492, -1.872, -2.008,
- -1.804, -1.52, -1.284, -1.06, -0.864, -0.644, -0.448, -0.148, 0.208, 0.504,
- 0.716, 0.788, 0.72, 0.46, 0.124, -0.38, -0.9, -1.348, -1.612, -1.752
- ],
- "z": [
- 0.804, 1.304, 1.548, 1.548, 1.308, 0.928, 0.388, -0.352, -1.12, -1.984, -2.04,
- -2.04, -2.04, -2.04, -2.04, -2.008, -1.324, -0.656, -0.016, 0.58, 1.032, 1.44,
- 1.764, 1.648, 1.28, 0.764, 0.08, -0.788, -1.712, -2.04, -2.04, -2.04, -2.04,
- -2.04, -2.04, -1.836, -1.172, -0.472, 0.104, 0.592, 1.116, 1.676, 1.86, 1.72,
- 1.248, 0.568, -0.144, -1.124, -2.04, -2.04, -2.04, -2.04, -2.04, -2.04,
- -1.976, -1.42, -0.844, -0.188, 0.432, 0.872, 1.264, 1.5, 1.46, 1.112, 0.66,
- 0.164, -0.528, -1.348, -2.04, -2.04, -2.04, -2.04, -2.04, -2.04, -1.852,
- -1.204, -0.708, -0.148, 0.456, 1.052, 1.464, 1.624, 1.476, 1.176, 0.716, 0.12,
- -0.54, -1.46, -2.04, -2.04, -2.04
- ]
- }
- },
- {
- "ID": 1718706760274,
- "data": {
- "x": [
- -0.2, -0.024, 0.12, 0.308, 0.468, 0.468, 0.292, 0.004, -0.26, -0.404, -0.484,
- -0.6, -0.68, -0.712, -0.712, -0.632, -0.524, -0.408, -0.18, 0.004, 0.176,
- 0.304, 0.416, 0.404, 0.28, 0.092, -0.14, -0.296, -0.444, -0.596, -0.668, -0.7,
- -0.652, -0.592, -0.52, -0.448, -0.256, -0.092, 0.056, 0.212, 0.432, 0.592,
- 0.432, 0.084, -0.2, -0.376, -0.504, -0.628, -0.772, -0.752, -0.76, -0.676,
- -0.612, -0.492, -0.3, -0.104, 0.084, 0.264, 0.464, 0.524, 0.336, 0.024,
- -0.236, -0.372, -0.528, -0.636, -0.74, -0.784, -0.788, -0.672, -0.524, -0.476,
- -0.276, -0.156, 0.036, 0.24, 0.392, 0.476, 0.276, 0.016, -0.236, -0.364,
- -0.476, -0.624, -0.752, -0.812, -0.84, -0.72, -0.636, -0.524, -0.252
- ],
- "y": [
- -0.528, -0.732, -0.76, -0.728, -0.64, -0.552, -0.476, -0.412, -0.332, -0.276,
- -0.26, -0.136, 0.188, 0.536, 0.688, 0.544, 0.192, -0.172, -0.476, -0.664,
- -0.712, -0.6, -0.492, -0.364, -0.32, -0.276, -0.232, -0.192, -0.16, -0.012,
- 0.18, 0.444, 0.564, 0.516, 0.276, -0.068, -0.372, -0.516, -0.54, -0.512,
- -0.48, -0.508, -0.444, -0.36, -0.284, -0.284, -0.28, -0.176, 0.052, 0.344,
- 0.544, 0.444, 0.184, -0.16, -0.388, -0.516, -0.596, -0.552, -0.444, -0.42,
- -0.316, -0.228, -0.188, -0.228, -0.172, -0.064, 0.076, 0.316, 0.536, 0.496,
- 0.236, -0.092, -0.376, -0.516, -0.564, -0.524, -0.456, -0.488, -0.396, -0.328,
- -0.344, -0.396, -0.332, -0.164, 0.08, 0.312, 0.44, 0.296, 0.004, -0.304,
- -0.524
- ],
- "z": [
- 1.668, 0.78, -0.188, -1.188, -1.884, -2.04, -1.928, -1.268, -0.472, 0.396,
- 1.224, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.5, 0.64, -0.212, -0.976,
- -1.52, -1.804, -1.704, -1.184, -0.496, 0.236, 1.08, 2.008, 2.04, 2.04, 2.04,
- 2.04, 2.04, 2.04, 1.644, 0.88, 0.088, -0.884, -1.732, -2.04, -1.964, -1.328,
- -0.496, 0.332, 1.204, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.472, 0.708,
- -0.176, -0.996, -1.64, -1.944, -1.676, -1.064, -0.396, 0.332, 1.18, 2.04,
- 2.04, 2.04, 2.04, 2.04, 2.04, 2.04, 1.556, 0.744, -0.108, -0.96, -1.608,
- -1.956, -1.732, -1.116, -0.348, 0.552, 1.556, 2.04, 2.04, 2.04, 2.04, 2.04,
- 2.04, 1.9, 1.18
- ]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- },
- {
- "ID": 1705437833024,
- "name": "Still",
- "recordings": [
- {
- "ID": 1718706751151,
- "data": {
- "x": [
- 0.444, 0.416, 0.412, 0.416, 0.44, 0.428, 0.44, 0.404, 0.432, 0.432, 0.428,
- 0.424, 0.416, 0.412, 0.416, 0.424, 0.436, 0.424, 0.412, 0.42, 0.42, 0.428,
- 0.428, 0.416, 0.412, 0.456, 0.424, 0.412, 0.404, 0.412, 0.416, 0.428, 0.436,
- 0.412, 0.412, 0.396, 0.42, 0.436, 0.42, 0.416, 0.408, 0.4, 0.388, 0.404,
- 0.428, 0.408, 0.404, 0.408, 0.42, 0.44, 0.42, 0.4, 0.396, 0.432, 0.424, 0.396,
- 0.4, 0.392, 0.392, 0.424, 0.416, 0.408, 0.412, 0.412, 0.412, 0.408, 0.404,
- 0.42, 0.424, 0.404, 0.4, 0.416, 0.412, 0.408, 0.388, 0.396, 0.408, 0.392,
- 0.396, 0.404, 0.416, 0.396, 0.408, 0.404, 0.42, 0.408, 0.396, 0.38, 0.392,
- 0.4, 0.42
- ],
- "y": [
- -0.828, -0.82, -0.82, -0.808, -0.804, -0.804, -0.804, -0.828, -0.816, -0.808,
- -0.816, -0.808, -0.816, -0.82, -0.816, -0.82, -0.816, -0.82, -0.816, -0.816,
- -0.808, -0.808, -0.824, -0.816, -0.824, -0.864, -0.808, -0.812, -0.824,
- -0.824, -0.824, -0.812, -0.812, -0.82, -0.824, -0.836, -0.84, -0.816, -0.812,
- -0.816, -0.812, -0.804, -0.804, -0.804, -0.836, -0.824, -0.824, -0.828,
- -0.824, -0.828, -0.816, -0.816, -0.828, -0.824, -0.816, -0.804, -0.8, -0.804,
- -0.812, -0.816, -0.82, -0.816, -0.824, -0.824, -0.824, -0.82, -0.824, -0.82,
- -0.828, -0.824, -0.828, -0.836, -0.816, -0.836, -0.812, -0.816, -0.82, -0.816,
- -0.812, -0.816, -0.816, -0.828, -0.828, -0.824, -0.824, -0.816, -0.816,
- -0.812, -0.82, -0.812, -0.824
- ],
- "z": [
- 0.384, 0.384, 0.384, 0.38, 0.392, 0.376, 0.376, 0.372, 0.368, 0.384, 0.384,
- 0.392, 0.392, 0.384, 0.376, 0.372, 0.388, 0.4, 0.388, 0.376, 0.38, 0.384,
- 0.392, 0.384, 0.376, 0.36, 0.408, 0.408, 0.38, 0.368, 0.364, 0.388, 0.4,
- 0.392, 0.4, 0.38, 0.376, 0.392, 0.404, 0.4, 0.4, 0.372, 0.372, 0.38, 0.388,
- 0.372, 0.376, 0.38, 0.392, 0.404, 0.404, 0.4, 0.376, 0.384, 0.4, 0.38, 0.388,
- 0.372, 0.38, 0.4, 0.396, 0.4, 0.392, 0.396, 0.392, 0.376, 0.384, 0.404, 0.408,
- 0.392, 0.384, 0.388, 0.388, 0.404, 0.396, 0.408, 0.396, 0.388, 0.388, 0.408,
- 0.404, 0.4, 0.392, 0.396, 0.392, 0.408, 0.4, 0.392, 0.396, 0.392, 0.408
- ]
- }
- },
- {
- "ID": 1718706742225,
- "data": {
- "x": [
- -1.024, -1.004, -0.976, -0.98, -1.024, -1.04, -1.02, -0.992, -0.98, -1.008,
- -1.032, -1.024, -1.012, -1.004, -1.008, -1.016, -1.04, -1.012, -0.984, -0.988,
- -1.008, -1.004, -0.996, -1.012, -0.988, -0.976, -0.996, -1.004, -1.016,
- -0.984, -0.972, -0.984, -1.008, -1.032, -1.036, -1, -0.992, -1.032, -1.036,
- -1.036, -0.996, -0.984, -0.996, -1.008, -1.032, -1.024, -0.984, -0.984,
- -1.008, -1.024, -1.036, -1.012, -0.992, -1.024, -1.008, -0.976, -1.016,
- -0.984, -0.984, -1.012, -1.036, -1.016, -1.016, -1, -1.016, -1.036, -1.004,
- -0.996, -0.988, -1.004, -1.016, -1.012, -1.008, -0.984, -1, -1.016, -1.032,
- -0.992, -0.984, -1.012, -1.024, -1.036, -1.004, -0.98, -0.992, -1.032, -1.016,
- -0.996, -0.988, -1.016, -1.036
- ],
- "y": [
- 0.028, 0.02, 0.008, 0, 0.016, 0.02, 0.032, 0.02, 0.016, 0.016, 0.032, 0.04,
- 0.056, 0.056, 0.036, 0.024, 0.012, 0.004, 0.004, 0.004, 0.008, 0.012, 0.016,
- 0.02, 0.02, 0.02, 0.02, 0.016, 0.008, 0.008, 0, 0, 0.016, 0.036, 0.032, 0.024,
- 0.02, 0.028, 0.028, 0.028, 0.012, 0.02, 0.032, 0.012, 0.008, 0.012, 0.016,
- 0.004, 0.012, 0.032, 0.028, 0.032, 0.008, 0.008, 0.012, 0.004, -0.004, 0.012,
- 0.008, 0.012, 0.02, 0.028, 0.016, 0.02, 0.004, 0.02, 0.036, 0.048, 0.036,
- 0.012, 0.024, 0.032, 0.028, 0.012, 0, 0.004, 0.012, 0.008, 0, 0.012, 0.02,
- 0.036, 0.028, 0.016, 0.024, 0.02, 0.012, 0.02, 0.02, 0.032, 0.024
- ],
- "z": [
- -0.22, -0.188, -0.172, -0.172, -0.192, -0.216, -0.204, -0.2, -0.188, -0.176,
- -0.172, -0.2, -0.192, -0.164, -0.156, -0.184, -0.236, -0.232, -0.224, -0.208,
- -0.2, -0.184, -0.196, -0.208, -0.192, -0.196, -0.196, -0.212, -0.204, -0.196,
- -0.192, -0.204, -0.208, -0.196, -0.196, -0.164, -0.14, -0.16, -0.176, -0.204,
- -0.196, -0.168, -0.144, -0.156, -0.22, -0.212, -0.184, -0.168, -0.204, -0.204,
- -0.2, -0.184, -0.164, -0.196, -0.184, -0.172, -0.192, -0.176, -0.152, -0.16,
- -0.204, -0.192, -0.204, -0.18, -0.188, -0.208, -0.204, -0.172, -0.144, -0.16,
- -0.172, -0.184, -0.18, -0.18, -0.2, -0.224, -0.22, -0.18, -0.16, -0.176,
- -0.188, -0.192, -0.188, -0.168, -0.14, -0.164, -0.188, -0.188, -0.18, -0.188,
- -0.184
- ]
- }
- },
- {
- "ID": 1718706735565,
- "data": {
- "x": [
- -0.06, -0.084, -0.088, -0.096, -0.104, -0.088, -0.076, -0.092, -0.084, -0.08,
- -0.076, -0.08, -0.08, -0.084, -0.084, -0.068, -0.068, -0.084, -0.088, -0.08,
- -0.08, -0.092, -0.088, -0.092, -0.088, -0.092, -0.096, -0.088, -0.088, -0.092,
- -0.076, -0.068, -0.072, -0.076, -0.076, -0.072, -0.068, -0.096, -0.096, -0.08,
- -0.084, -0.064, -0.068, -0.084, -0.076, -0.08, -0.064, -0.068, -0.084, -0.08,
- -0.06, -0.056, -0.056, -0.06, -0.08, -0.068, -0.076, -0.092, -0.084, -0.076,
- -0.068, -0.072, -0.088, -0.1, -0.1, -0.084, -0.08, -0.068, -0.08, -0.084,
- -0.072, -0.06, -0.06, -0.068, -0.072, -0.08, -0.092, -0.092, -0.084, -0.084,
- -0.076, -0.076, -0.08, -0.08, -0.076, -0.08, -0.096, -0.108, -0.096, -0.084
- ],
- "y": [
- 1.012, 1.02, 1.02, 1.004, 1, 1.004, 1, 1.016, 1.02, 1.016, 1.02, 1.032, 1.048,
- 1.032, 1.036, 1.008, 1.008, 1.02, 1.024, 1.02, 1.008, 1.016, 1.012, 1.012,
- 1.016, 1.008, 1.012, 1.012, 1.016, 1.004, 1.004, 1.008, 1.016, 1.04, 1.02,
- 1.004, 1.008, 1.056, 1.028, 1.024, 1.028, 1.012, 1.02, 1.02, 1.016, 1.008,
- 0.992, 1.008, 1.02, 1.028, 1.016, 1.012, 1.02, 1.024, 1.024, 1.004, 1.012,
- 1.028, 1.016, 1.008, 1.012, 1.016, 1.028, 1.024, 1.024, 0.996, 0.996, 1.02,
- 1.02, 1.012, 1.004, 1.02, 1.024, 1.02, 1.012, 1.016, 1.02, 1.016, 1.028,
- 1.012, 1.004, 1.012, 1.024, 1.016, 1.008, 1, 1.016, 1.028, 1.024, 1.008
- ],
- "z": [
- 0.076, 0.076, 0.084, 0.084, 0.076, 0.088, 0.1, 0.064, 0.064, 0.064, 0.08,
- 0.096, 0.1, 0.088, 0.072, 0.08, 0.088, 0.072, 0.076, 0.084, 0.092, 0.1, 0.076,
- 0.072, 0.08, 0.088, 0.08, 0.068, 0.056, 0.068, 0.08, 0.084, 0.092, 0.088,
- 0.088, 0.084, 0.084, 0.06, 0.084, 0.092, 0.108, 0.1, 0.084, 0.052, 0.04,
- 0.056, 0.056, 0.072, 0.08, 0.096, 0.1, 0.092, 0.096, 0.088, 0.084, 0.1, 0.096,
- 0.08, 0.08, 0.072, 0.076, 0.096, 0.108, 0.092, 0.08, 0.076, 0.092, 0.096,
- 0.076, 0.056, 0.072, 0.088, 0.084, 0.1, 0.084, 0.088, 0.08, 0.1, 0.096, 0.088,
- 0.088, 0.096, 0.1, 0.096, 0.08, 0.08, 0.088, 0.096, 0.076, 0.064
- ]
- }
- },
- {
- "ID": 1718706729969,
- "data": {
- "x": [
- 0.992, 0.996, 0.988, 0.992, 1, 0.996, 0.956, 0.96, 0.972, 1, 0.996, 0.972,
- 0.984, 1.004, 1.012, 1.02, 1, 0.984, 0.988, 0.98, 0.984, 0.972, 0.988, 0.968,
- 1.028, 1.004, 1.028, 1, 0.98, 0.972, 1.012, 1.008, 0.992, 0.976, 0.992, 0.992,
- 1.008, 0.988, 0.972, 0.972, 0.988, 1.008, 1, 0.956, 0.984, 1, 1, 0.996, 0.996,
- 0.992, 0.996, 0.992, 0.984, 0.98, 0.988, 0.98, 1.004, 0.996, 0.964, 0.956,
- 1.008, 1.016, 0.98, 0.984, 1, 1.004, 1.008, 0.984, 0.988, 0.984, 0.984, 1.016,
- 0.984, 0.984, 0.984, 1, 0.992, 0.992, 0.976, 0.972, 1.016, 1, 0.992, 0.968,
- 0.976, 1.012, 1.012, 0.988, 0.968, 0.968
- ],
- "y": [
- 0.012, 0.02, 0.024, 0.024, 0.02, 0.032, 0.04, 0.044, 0.04, 0.004, 0.024,
- 0.008, 0.004, -0.004, 0.004, 0, 0, 0, 0.008, 0.02, 0.024, 0.004, 0.004, 0.008,
- 0.048, 0.004, 0, -0.008, 0, 0.004, -0.008, 0.004, -0.004, 0.012, 0, 0, 0,
- -0.008, -0.004, 0.016, 0.004, -0.004, 0, 0, 0.004, 0.012, 0.008, -0.004, 0, 0,
- 0.008, -0.008, -0.008, 0.004, 0.02, 0.008, -0.008, -0.008, -0.012, 0.004,
- -0.004, -0.016, -0.012, -0.004, -0.004, -0.012, -0.016, -0.004, 0.004, 0.008,
- 0, -0.02, -0.032, -0.016, -0.012, -0.008, -0.004, 0, -0.02, -0.008, -0.008,
- -0.008, -0.008, -0.012, 0, -0.016, -0.008, -0.012, -0.008, 0
- ],
- "z": [
- -0.16, -0.14, -0.152, -0.152, -0.156, -0.16, -0.172, -0.168, -0.16, -0.168,
- -0.16, -0.164, -0.152, -0.148, -0.14, -0.14, -0.152, -0.164, -0.168, -0.164,
- -0.164, -0.172, -0.16, -0.168, -0.152, -0.128, -0.14, -0.144, -0.148, -0.168,
- -0.156, -0.152, -0.14, -0.164, -0.16, -0.152, -0.136, -0.156, -0.164, -0.148,
- -0.144, -0.136, -0.132, -0.164, -0.168, -0.152, -0.152, -0.152, -0.144,
- -0.148, -0.148, -0.16, -0.168, -0.164, -0.136, -0.144, -0.14, -0.148, -0.156,
- -0.176, -0.156, -0.144, -0.156, -0.14, -0.148, -0.164, -0.148, -0.144, -0.136,
- -0.14, -0.16, -0.136, -0.16, -0.152, -0.152, -0.148, -0.136, -0.144, -0.16,
- -0.168, -0.144, -0.132, -0.144, -0.156, -0.168, -0.152, -0.14, -0.144, -0.16,
- -0.156
- ]
- }
- },
- {
- "ID": 1718706724105,
- "data": {
- "x": [
- -0.036, -0.056, -0.044, -0.028, -0.028, -0.044, -0.06, -0.036, -0.024, -0.02,
- -0.056, -0.06, -0.032, -0.032, -0.032, -0.044, -0.04, -0.032, -0.032, -0.052,
- -0.052, -0.036, -0.024, -0.028, -0.048, -0.072, -0.056, -0.056, -0.024,
- -0.016, -0.052, -0.072, -0.032, 0.088, -0.036, -0.056, -0.048, -0.036, -0.028,
- -0.036, -0.036, -0.04, -0.032, -0.032, -0.04, -0.04, -0.044, -0.052, -0.024,
- -0.044, -0.048, -0.056, -0.04, -0.032, -0.032, -0.04, -0.04, -0.052, -0.044,
- -0.028, -0.036, -0.048, -0.04, -0.052, -0.052, -0.032, -0.036, -0.052, -0.052,
- -0.048, -0.052, -0.036, -0.036, -0.032, -0.044, -0.036, -0.06, -0.052, -0.04,
- -0.04, -0.036, -0.028, -0.052, -0.048, -0.04, -0.04, -0.048, -0.076, -0.072,
- -0.044
- ],
- "y": [
- -0.984, -0.976, -0.98, -0.98, -0.984, -0.98, -0.992, -0.996, -0.992, -0.996,
- -0.996, -1, -1.008, -0.992, -0.992, -1, -1, -0.988, -0.98, -0.964, -0.972,
- -0.992, -1, -1, -0.996, -0.984, -0.98, -0.992, -1.008, -1.024, -1.016, -0.992,
- -0.992, -1.072, -0.972, -0.988, -0.992, -0.988, -0.984, -0.984, -0.992,
- -1.004, -0.992, -0.992, -0.996, -0.992, -0.984, -0.984, -0.988, -0.992,
- -1.008, -0.996, -1, -1, -0.992, -0.988, -0.996, -0.996, -0.988, -0.984,
- -0.992, -0.996, -0.996, -0.984, -0.98, -0.992, -0.988, -0.98, -0.988, -0.996,
- -0.996, -0.996, -0.988, -0.992, -0.992, -0.98, -0.98, -0.984, -0.996, -1.004,
- -1, -0.996, -0.996, -0.988, -0.984, -0.984, -0.988, -0.984, -0.988, -0.976
- ],
- "z": [
- -0.228, -0.228, -0.216, -0.192, -0.184, -0.204, -0.216, -0.212, -0.188,
- -0.184, -0.2, -0.216, -0.22, -0.204, -0.216, -0.212, -0.228, -0.224, -0.2,
- -0.208, -0.208, -0.2, -0.2, -0.2, -0.204, -0.208, -0.204, -0.204, -0.196,
- -0.196, -0.2, -0.236, -0.22, -0.22, -0.188, -0.208, -0.216, -0.22, -0.2,
- -0.204, -0.224, -0.232, -0.212, -0.2, -0.208, -0.216, -0.208, -0.212, -0.212,
- -0.22, -0.212, -0.228, -0.204, -0.216, -0.208, -0.212, -0.216, -0.228, -0.228,
- -0.22, -0.2, -0.216, -0.232, -0.212, -0.208, -0.22, -0.208, -0.196, -0.208,
- -0.22, -0.22, -0.216, -0.22, -0.212, -0.212, -0.2, -0.212, -0.228, -0.232,
- -0.216, -0.212, -0.208, -0.208, -0.216, -0.204, -0.196, -0.204, -0.228,
- -0.228, -0.212
- ]
- }
- },
- {
- "ID": 1718706718209,
- "data": {
- "x": [
- -0.028, -0.044, -0.068, -0.068, -0.056, -0.028, -0.036, -0.064, -0.064,
- -0.036, -0.04, -0.06, -0.06, -0.052, -0.032, -0.04, -0.048, -0.076, -0.064,
- -0.036, -0.032, -0.048, -0.044, -0.052, -0.04, -0.032, -0.052, -0.064, -0.052,
- -0.04, -0.044, -0.056, -0.052, -0.04, -0.048, -0.064, -0.048, -0.052, -0.04,
- -0.056, -0.048, -0.056, -0.048, -0.08, -0.04, 0.04, -0.036, -0.036, -0.044,
- -0.044, -0.04, -0.044, -0.048, -0.044, -0.048, -0.036, -0.044, -0.052, -0.044,
- -0.044, -0.032, -0.048, -0.06, -0.044, -0.036, -0.048, -0.06, -0.056, -0.052,
- -0.04, -0.04, -0.048, -0.056, -0.064, -0.06, -0.044, -0.048, -0.076, -0.052,
- -0.044, -0.048, -0.056, -0.064, -0.06, -0.06, -0.06, -0.068, -0.06, -0.048,
- -0.044
- ],
- "y": [
- -0.024, -0.028, -0.024, -0.024, -0.016, -0.024, -0.028, -0.032, -0.02, -0.028,
- -0.032, -0.024, -0.024, -0.016, -0.02, -0.02, -0.024, -0.016, -0.016, -0.012,
- -0.032, -0.036, -0.036, -0.032, -0.008, -0.016, -0.024, -0.02, -0.02, -0.028,
- -0.02, -0.02, -0.028, -0.02, -0.032, -0.028, -0.032, -0.028, -0.028, -0.02,
- -0.016, -0.024, -0.024, -0.028, -0.028, -0.072, -0.044, -0.04, -0.04, -0.024,
- -0.024, -0.024, -0.044, -0.024, -0.02, -0.028, -0.04, -0.04, -0.044, -0.028,
- -0.028, -0.032, -0.04, -0.04, -0.02, -0.016, -0.024, -0.036, -0.032, -0.036,
- -0.036, -0.04, -0.04, -0.032, -0.028, -0.028, -0.04, -0.032, -0.04, -0.036,
- -0.036, -0.04, -0.032, -0.028, -0.036, -0.032, -0.032, -0.032, -0.036, -0.048
- ],
- "z": [
- 1.016, 1.016, 1.008, 1.012, 1, 1.028, 1.028, 1.02, 1.008, 1.008, 1.024, 1.024,
- 1.016, 1.016, 1.028, 1.016, 1.02, 1.02, 0.98, 1.028, 1.04, 1.02, 1.032, 1.012,
- 1.02, 1.016, 1.012, 1.016, 1.044, 1.016, 1.02, 0.972, 1.004, 1.036, 1.048,
- 1.004, 1.008, 1.004, 1, 0.988, 1.012, 1.032, 1.016, 1.032, 1.008, 0.92, 1.036,
- 1.016, 1.032, 1.024, 1.036, 1.012, 1.008, 1.024, 1.012, 1.024, 1.012, 1, 1,
- 1.008, 1.056, 1.032, 0.988, 1.008, 1.032, 1.02, 1.024, 1.004, 1.004, 1.012,
- 1.044, 1.028, 1.016, 1.036, 1.02, 1.024, 1.028, 1.008, 1.02, 1.004, 1.008,
- 1.012, 1.004, 1.012, 1.032, 1.036, 1.036, 1.02, 1.02, 1.02
- ]
- }
- },
- {
- "ID": 1718706711804,
- "data": {
- "x": [
- 0.004, -0.004, 0, 0, 0, 0.024, 0.012, 0, 0.004, -0.008, 0.004, 0.024, 0.012,
- 0.004, 0, 0.004, 0.008, -0.008, 0.004, -0.012, 0.016, 0.02, 0.012, 0.004, 0,
- 0.008, 0.024, 0.02, 0.012, 0, 0.004, 0.004, 0.004, 0.008, 0.008, 0.004, 0.004,
- 0, 0, 0.016, 0.016, 0.012, 0.008, -0.004, -0.004, 0.016, 0.004, 0.008, -0.008,
- 0, 0.012, 0.012, 0, 0, 0.004, 0.008, 0.004, 0.008, 0.008, 0.028, 0.012,
- -0.004, -0.02, -0.004, 0, -0.004, -0.008, -0.004, 0.004, 0, 0.004, -0.004,
- 0.004, 0.008, 0.004, -0.004, 0, -0.008, -0.004, 0.004, -0.004, -0.004, -0.004,
- 0.004, -0.004, 0.004, 0.004, 0, -0.004, -0.004, 0.008
- ],
- "y": [
- -0.04, -0.048, -0.04, -0.056, -0.036, -0.048, -0.048, -0.048, -0.048, -0.056,
- -0.044, -0.048, -0.048, -0.044, -0.048, -0.048, -0.044, -0.028, -0.032,
- -0.032, -0.04, -0.068, -0.036, -0.044, -0.044, -0.044, -0.052, -0.04, -0.044,
- -0.036, -0.036, -0.044, -0.028, -0.04, -0.032, -0.04, -0.052, -0.04, -0.044,
- -0.044, -0.044, -0.04, -0.04, -0.04, -0.048, -0.052, -0.048, -0.044, -0.036,
- -0.036, -0.04, -0.04, -0.04, -0.044, -0.044, -0.048, -0.044, -0.036, -0.036,
- -0.044, -0.044, -0.044, -0.056, -0.06, -0.052, -0.044, -0.04, -0.048, -0.06,
- -0.052, -0.056, -0.036, -0.048, -0.044, -0.052, -0.044, -0.044, -0.036,
- -0.048, -0.048, -0.04, -0.044, -0.04, -0.052, -0.048, -0.052, -0.044, -0.044,
- -0.052, -0.048, -0.048
- ],
- "z": [
- -1.06, -1.06, -1.068, -1.068, -1.052, -1.028, -1.032, -1.06, -1.096, -1.092,
- -1.068, -1.064, -1.072, -1.072, -1.084, -1.068, -1.056, -1.064, -1.056,
- -1.056, -1.048, -1.048, -1.064, -1.072, -1.08, -1.076, -1.052, -1.056, -1.06,
- -1.056, -1.084, -1.064, -1.06, -1.064, -1.072, -1.072, -1.068, -1.08, -1.076,
- -1.056, -1.056, -1.064, -1.06, -1.076, -1.08, -1.052, -1.072, -1.064, -1.06,
- -1.052, -1.064, -1.064, -1.072, -1.076, -1.064, -1.064, -1.068, -1.064,
- -1.056, -1.052, -1.044, -1.068, -1.092, -1.072, -1.064, -1.064, -1.064, -1.06,
- -1.068, -1.068, -1.076, -1.064, -1.068, -1.06, -1.068, -1.064, -1.064, -1.056,
- -1.064, -1.064, -1.068, -1.068, -1.068, -1.064, -1.056, -1.064, -1.056,
- -1.068, -1.084, -1.064, -1.068
- ]
- }
- }
- ],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- },
- {
- "ID": 1705437876740,
- "name": "Circle",
- "recordings": [],
- "output": {},
- "confidence": {
- "currentConfidence": 0,
- "requiredConfidence": 0.8,
- "isConfident": false
- }
- }
-]
diff --git a/src/__tests__/getPrediction.test.ts b/src/__tests__/getPrediction.test.ts
deleted file mode 100644
index 52295ddf5..000000000
--- a/src/__tests__/getPrediction.test.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import { getPrediction } from '../script/getPrediction';
-import { GestureData } from '../script/stores/mlStore';
-
-interface GestureConfig {
- name: string;
- currentConfidence: number;
- requiredConfidence: number;
-}
-
-const createGesture = (g: GestureConfig): GestureData => ({
- name: g.name,
- ID: 1,
- recordings: [],
- output: {},
- confidence: {
- currentConfidence: g.currentConfidence,
- requiredConfidence: g.requiredConfidence,
- isConfident: g.currentConfidence >= g.requiredConfidence,
- },
-});
-
-describe('getPrediction', () => {
- test('1 gesture, under required confidence', () => {
- const gesture1 = createGesture({
- name: 'gesture 1',
- currentConfidence: 0.7,
- requiredConfidence: 0.9,
- });
- expect(getPrediction([gesture1])).toEqual(undefined);
- });
- test('1 gesture, over required confidence', () => {
- const gesture1 = createGesture({
- name: 'gesture 1',
- currentConfidence: 0.7,
- requiredConfidence: 0.5,
- });
- expect(getPrediction([gesture1])).toEqual(gesture1);
- });
- test('>1 gesture, one over required confidence', () => {
- const gesture1 = createGesture({
- name: 'gesture 1',
- currentConfidence: 0.7,
- requiredConfidence: 0.5,
- });
- const gesture2 = createGesture({
- name: 'gesture 2',
- currentConfidence: 0.7,
- requiredConfidence: 0.8,
- });
- expect(getPrediction([gesture1, gesture2])).toEqual(gesture1);
- });
- test('>1 gesture, both over required confidence', () => {
- const gesture1 = createGesture({
- name: 'gesture 1',
- currentConfidence: 0.7,
- requiredConfidence: 0.5,
- });
- const gesture2 = createGesture({
- name: 'gesture 2',
- currentConfidence: 0.9,
- requiredConfidence: 0.8,
- });
- expect(getPrediction([gesture1, gesture2])).toEqual(gesture2);
- });
- test('>1 gesture, both under required confidence', () => {
- const gesture1 = createGesture({
- name: 'gesture 1',
- currentConfidence: 0.4,
- requiredConfidence: 0.5,
- });
- const gesture2 = createGesture({
- name: 'gesture 2',
- currentConfidence: 0.3,
- requiredConfidence: 0.8,
- });
- expect(getPrediction([gesture1, gesture2])).toEqual(undefined);
- });
-});
diff --git a/src/__tests__/i18n.test.ts b/src/__tests__/i18n.test.ts
deleted file mode 100644
index dc5c6a036..000000000
--- a/src/__tests__/i18n.test.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-import { get } from 'svelte/store';
-import { MockInstance } from 'vitest';
-import { spyOn } from '@vitest/spy';
-
-describe('Initialization tests', () => {
- let windowSpy: MockInstance<[], any>;
-
- beforeEach(() => {
- windowSpy = spyOn(window, 'window', 'get');
- });
-
- afterEach(() => {
- windowSpy.mockRestore();
- localStorage.clear();
- vitest.resetModules();
- });
-
- // Welsh disabled for now
- test.skip('Language is set to welsh when it is the preferred browser option', async () => {
- windowSpy.mockImplementation(() => ({
- navigator: {
- languages: ['cy', 'en'],
- },
- location: {
- search: '',
- },
- }));
- const { t, waitLocale } = await import('../i18n');
- await waitLocale();
- const getText = get(t);
-
- const translatedText = getText('alert.isRecording');
- expect(translatedText).toBe("Rydych chi'n recordio ar hyn o bryd!");
- });
-
- test('Language falls back to english when an unsupported language is selected', async () => {
- windowSpy.mockImplementation(() => ({
- navigator: {
- languages: ['random-language'],
- },
- location: {
- search: '',
- },
- }));
- const { t, waitLocale } = await import('../i18n');
- await waitLocale();
- const getText = get(t);
-
- const translatedText = getText('alert.isRecording');
- expect(translatedText).toBe('You are currently recording!');
- });
-
- // Welsh disabled for now
- test.skip('Language is set to welsh when it is defined query string', async () => {
- windowSpy.mockImplementation(() => ({
- navigator: {
- languages: ['some languages'],
- },
- location: {
- search: '?l=cy',
- },
- }));
- const { t, waitLocale } = await import('../i18n');
- await waitLocale();
- const getText = get(t);
-
- const translatedText = getText('alert.isRecording');
- expect(translatedText).toBe("Rydych chi'n recordio ar hyn o bryd!");
- });
-});
diff --git a/src/__tests__/license-identifiers.test.ts b/src/__tests__/license-identifiers.test.ts
deleted file mode 100644
index c32e3ba08..000000000
--- a/src/__tests__/license-identifiers.test.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import fs from 'fs';
-import * as path from 'path';
-
-// Place files you wish to ignore by name in here
-const ignoredFiles: RegExp[] = [
- /^\.DS_Store$/,
- /^.+\.json$/,
- /\.(gif|svg|png|jpg|jpeg)$/,
- /^README.md$/,
-];
-const directoriesToScan = ['./src/', './microbit/v2/source/', './microbit/v1/source/'];
-
-const licenseIdentifierStringSPDX = 'SPDX-License-Identifier:';
-
-const readFile = (fileLocation: string, expect: string) => {
- const fileContent = fs.readFileSync(fileLocation);
- return fileContent.toString().toLowerCase().includes(expect.toLowerCase());
-};
-
-type DirectoryContents = {
- files: string[];
- folders: string[];
-};
-
-const readDirectory = (directory: string, ignoreList: RegExp[]): DirectoryContents => {
- const files: string[] = [];
- const folders: string[] = [];
- const filesRead = fs.readdirSync(directory);
- filesRead.forEach(file => {
- if (ignoreList.some(ignoreRegExp => ignoreRegExp.test(file))) return;
- const fileLocation = path.join(directory, file);
- const stats = fs.statSync(fileLocation);
- if (stats.isFile()) {
- files.push(fileLocation);
- } else {
- folders.push(fileLocation);
- }
- });
- return { files: files, folders: folders };
-};
-
-const flattenDirectory = (directory: string): string[] => {
- const files: string[] = [];
- const content = readDirectory(directory, ignoredFiles);
- const filesFromSubFolders: string[] = [];
- content.folders.forEach(value => {
- const subFolderFlat = flattenDirectory(value);
- subFolderFlat.forEach(value => filesFromSubFolders.push(value));
- });
- filesFromSubFolders.forEach(value => files.push(value));
- content.files.forEach(value => files.push(value));
- return files;
-};
-
-const filesMissingIdentifier = (files: string[], expects: string[]): string[] => {
- const filesWithMissingIdentifier: string[] = [];
-
- for (let i = 0; i < files.length; i++) {
- for (const expect of expects) {
- if (!readFile('./' + files[i], expect)) {
- if (!filesWithMissingIdentifier.includes(files[i])) {
- filesWithMissingIdentifier.push(files[i]);
- }
- }
- }
- }
- return filesWithMissingIdentifier;
-};
-
-describe('License identifier tests', () => {
- test(
- 'All files should contain license identifier',
- () => {
- const flatten = directoriesToScan.reduce((acc: any, current) => {
- return acc.concat(flattenDirectory(current));
- }, []);
-
- const faultyFiles = filesMissingIdentifier(flatten, [licenseIdentifierStringSPDX]);
- expect(
- faultyFiles.length,
- 'Some files do not contain identifier! ' +
- faultyFiles
- .map(val => `\n \u001b[35m${val} \u001b[0mis missing license identifier`)
- .join(),
- ).toEqual(0);
- },
- 60000 * 10,
- );
-});
diff --git a/src/__tests__/microbit-usb-conection.test.ts b/src/__tests__/microbit-usb-conection.test.ts
deleted file mode 100644
index ca60c3df4..000000000
--- a/src/__tests__/microbit-usb-conection.test.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import MockUSBDevice, { TestableMicrobitUSB } from './mocks/mock-usb';
-
-describe('Microbit USB connection tests', () => {
- beforeAll(() => {
- /** Adds the usb property to the navigator for mocking */
- Object.assign(navigator, {
- usb: {
- predefined: undefined,
- requestDevice(options?: USBDeviceRequestOptions): any {
- const result = this.predefined
- ? this.predefined
- : Promise.resolve(new MockUSBDevice().build());
- this.predefined = undefined;
- return Promise.resolve(result);
- },
- },
- });
- });
-
- test('Serial number 9900 should be a version 1', async () => {
- const mockUsbDevice = new MockUSBDevice().withSerialNumber('9900serno').build();
- const connection = new TestableMicrobitUSB(mockUsbDevice);
- expect(connection.getModelNumber()).toBe(1);
- });
-
- test('Serial number 9901 should be a version 1', async () => {
- const mockUsbDevice = new MockUSBDevice().withSerialNumber('9901serno').build();
- const connection = new TestableMicrobitUSB(mockUsbDevice);
- expect(connection.getModelNumber()).toBe(1);
- });
-
- test('Serial number 9903 should be a version 2', async () => {
- const mockUsbDevice = new MockUSBDevice().withSerialNumber('9903serno').build();
- const connection = new TestableMicrobitUSB(mockUsbDevice);
- expect(connection.getModelNumber()).toBe(2);
- });
-
- test('Serial number 9904 should be a version 2', async () => {
- const mockUsbDevice = new MockUSBDevice().withSerialNumber('9904serno').build();
- const connection = new TestableMicrobitUSB(mockUsbDevice);
- expect(connection.getModelNumber()).toBe(2);
- });
-});
diff --git a/src/__tests__/ml.test.ts b/src/__tests__/ml.test.ts
deleted file mode 100644
index 3ed84fe99..000000000
--- a/src/__tests__/ml.test.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2024, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import * as tf from '@tensorflow/tfjs';
-import { makeInputs, trainModel } from '../script/ml';
-import { gestures } from '../script/stores/Stores';
-import gestureData from './fixtures/gesture-data.json';
-import gestureDataBadLabels from './fixtures/gesture-data-bad-labels.json';
-import testdataShakeStill from './fixtures/test-data-shake-still.json';
-import { PersistantGestureData } from '../script/domain/Gestures';
-
-let tensorFlowModel: tf.LayersModel | void;
-beforeAll(async () => {
- // No webgl in tests running in node.
- tf.setBackend('cpu');
-
- // This creates determinism in the model training step.
- const randomSpy = vi.spyOn(Math, 'random');
- randomSpy.mockImplementation(() => 0.5);
-
- gestures.importFrom(gestureData);
- tensorFlowModel = await trainModel();
-});
-
-const getModelResults = (data: PersistantGestureData[]) => {
- const x: number[][] = [];
- const y: number[][] = [];
- const numActions = data.length;
- data.forEach((action, index) => {
- action.recordings.forEach(recording => {
- x.push(makeInputs(recording.data));
- const label = new Array(numActions);
- label.fill(0, 0, numActions);
- label[index] = 1;
- y.push(label);
- });
- });
-
- if (!tensorFlowModel) {
- throw Error('No model returned');
- }
-
- const tensorFlowResult = tensorFlowModel.evaluate(tf.tensor(x), tf.tensor(y));
- const tensorFlowResultAccuracy = (tensorFlowResult as tf.Scalar[])[1]
- .dataSync()[0]
- .toFixed(4);
- const tensorflowPredictionResult = (
- tensorFlowModel.predict(tf.tensor(x)) as tf.Tensor
- ).dataSync();
- return {
- tensorFlowResultAccuracy,
- tensorflowPredictionResult,
- labels: y,
- };
-};
-
-describe('Model tests', () => {
- test('returns acceptable results on training data', async () => {
- const { tensorFlowResultAccuracy, tensorflowPredictionResult, labels } =
- getModelResults(gestureData);
- const d = labels[0].length; // dimensions
- for (let i = 0, j = 0; i < tensorflowPredictionResult.length; i += d, j++) {
- const result = tensorflowPredictionResult.slice(i, i + d);
- expect(result.indexOf(Math.max(...result))).toBe(
- labels[j].indexOf(Math.max(...labels[j])),
- );
- }
- expect(tensorFlowResultAccuracy).toBe('1.0000');
- });
-
- // The action names don't matter, the order of the actions in the data.json file does.
- // Training data is shake, still, circle. This data is still, circle, shake.
- test('returns incorrect results on wrongly labelled training data', async () => {
- const { tensorFlowResultAccuracy, tensorflowPredictionResult, labels } =
- getModelResults(gestureDataBadLabels);
- const d = labels[0].length; // dimensions
- for (let i = 0, j = 0; i < tensorflowPredictionResult.length; i += d, j++) {
- const result = tensorflowPredictionResult.slice(i, i + d);
- expect(result.indexOf(Math.max(...result))).not.toBe(
- labels[j].indexOf(Math.max(...labels[j])),
- );
- }
- expect(tensorFlowResultAccuracy).toBe('0.0000');
- });
-
- test('returns correct results on testing data', async () => {
- const { tensorFlowResultAccuracy } = getModelResults(testdataShakeStill);
- // The model thinks two samples of still are circle.
- // 14 samples; 1.0 / 14 = 0.0714; 0.0714 * 12 correct inferences = 0.8571
- expect(parseFloat(tensorFlowResultAccuracy)).toBeGreaterThan(0.85);
- });
-});
diff --git a/src/__tests__/mocks/mock-bluetooth-accelerometer-service.ts b/src/__tests__/mocks/mock-bluetooth-accelerometer-service.ts
deleted file mode 100644
index 13527eacf..000000000
--- a/src/__tests__/mocks/mock-bluetooth-accelerometer-service.ts
+++ /dev/null
@@ -1,218 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import MBSpecs from '../../script/microbit-interfacing/MBSpecs';
-import { MockBluetoothCharacteristicProperties } from './mock-bluetooth';
-
-class MockBluetoothAccelerometerService implements BluetoothRemoteGATTService {
- readonly device: BluetoothDevice;
- readonly isPrimary: boolean = false;
- readonly uuid: string = '';
- private characteristic;
-
- constructor(device: any) {
- this.device = device;
- this.characteristic = new MockBluetoothAccelerometerCharacteristic(this);
- }
-
- oncharacteristicvaluechanged(ev: Event): any {}
-
- onserviceadded(ev: Event): any {}
-
- onservicechanged(ev: Event): any {}
-
- onserviceremoved(ev: Event): any {}
-
- addEventListener(
- type: 'serviceadded',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: 'servicechanged',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: 'serviceremoved',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: 'serviceadded' | 'servicechanged' | 'serviceremoved' | string,
- listener:
- | ((this: this, ev: Event) => any)
- | EventListenerOrEventListenerObject
- | null,
- useCapture?: boolean | AddEventListenerOptions,
- ): void {}
-
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean {
- return false;
- }
-
- getCharacteristic(
- characteristic: BluetoothCharacteristicUUID,
- ): Promise {
- if (characteristic === MBSpecs.Characteristics.ACCEL_DATA) {
- return Promise.resolve(this.characteristic);
- }
- return Promise.resolve(this.characteristic); // always returns characteristic
- }
-
- getCharacteristics(
- characteristic?: BluetoothCharacteristicUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- getIncludedService(service: BluetoothServiceUUID): Promise {
- return Promise.resolve(this);
- }
-
- getIncludedServices(
- service?: BluetoothServiceUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void {}
-}
-
-export class MockBluetoothAccelerometerCharacteristic
- implements BluetoothRemoteGATTCharacteristic
-{
- readonly properties: BluetoothCharacteristicProperties =
- new MockBluetoothCharacteristicProperties();
- readonly service: BluetoothRemoteGATTService;
- readonly uuid: string = '';
-
- constructor(service: BluetoothRemoteGATTService) {
- this.service = service;
- }
-
- oncharacteristicvaluechanged(ev: Event): any {}
-
- addEventListener(
- type: 'characteristicvaluechanged',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: 'characteristicvaluechanged' | string,
- listener:
- | ((this: this, ev: Event) => any)
- | EventListenerOrEventListenerObject
- | null,
- useCapture?: boolean | AddEventListenerOptions,
- ): void {}
-
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean {
- return false;
- }
-
- getDescriptor(
- descriptor: BluetoothDescriptorUUID,
- ): Promise {
- return Promise.resolve(undefined as unknown as BluetoothRemoteGATTDescriptor);
- }
-
- getDescriptors(
- descriptor?: BluetoothDescriptorUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- readValue(): Promise {
- return Promise.resolve(undefined as unknown as DataView);
- }
-
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void {}
-
- startNotifications(): Promise {
- return Promise.resolve(undefined as unknown as BluetoothRemoteGATTCharacteristic);
- }
-
- stopNotifications(): Promise {
- return Promise.resolve(undefined as unknown as BluetoothRemoteGATTCharacteristic);
- }
-
- writeValue(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-
- writeValueWithResponse(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-
- writeValueWithoutResponse(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-}
-
-export default MockBluetoothAccelerometerService;
diff --git a/src/__tests__/mocks/mock-bluetooth-gattcharacteristic.ts b/src/__tests__/mocks/mock-bluetooth-gattcharacteristic.ts
deleted file mode 100644
index 6fe67bc1f..000000000
--- a/src/__tests__/mocks/mock-bluetooth-gattcharacteristic.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-class MockBluetoothCharacteristicProperties implements BluetoothCharacteristicProperties {
- readonly authenticatedSignedWrites: boolean = false;
- readonly broadcast: boolean = false;
- readonly indicate: boolean = false;
- readonly notify: boolean = false;
- readonly read: boolean = false;
- readonly reliableWrite: boolean = false;
- readonly writableAuxiliaries: boolean = false;
- readonly write: boolean = false;
- readonly writeWithoutResponse: boolean = false;
-}
-
-class MockBluetoothGattcharacteristic implements BluetoothRemoteGATTCharacteristic {
- readonly properties: BluetoothCharacteristicProperties =
- new MockBluetoothCharacteristicProperties();
- readonly service: BluetoothRemoteGATTService;
- readonly uuid: string = '';
-
- constructor(service: BluetoothRemoteGATTService) {
- this.service = service;
- }
-
- oncharacteristicvaluechanged(ev: Event): any {}
-
- addEventListener(
- type: 'characteristicvaluechanged',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: 'characteristicvaluechanged' | string,
- listener:
- | ((this: this, ev: Event) => any)
- | EventListenerOrEventListenerObject
- | null,
- useCapture?: boolean | AddEventListenerOptions,
- ): void {}
-
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean {
- return false;
- }
-
- getDescriptor(
- descriptor: BluetoothDescriptorUUID,
- ): Promise {
- return Promise.resolve(undefined as unknown as BluetoothRemoteGATTDescriptor);
- }
-
- getDescriptors(
- descriptor?: BluetoothDescriptorUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- readValue(): Promise {
- return Promise.resolve(undefined as unknown as DataView);
- }
-
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void {}
-
- startNotifications(): Promise {
- return Promise.resolve(undefined as unknown as BluetoothRemoteGATTCharacteristic);
- }
-
- stopNotifications(): Promise {
- return Promise.resolve(undefined as unknown as BluetoothRemoteGATTCharacteristic);
- }
-
- writeValue(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-
- writeValueWithResponse(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-
- writeValueWithoutResponse(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-}
-
-export default MockBluetoothGattcharacteristic;
diff --git a/src/__tests__/mocks/mock-bluetooth-gattservice.ts b/src/__tests__/mocks/mock-bluetooth-gattservice.ts
deleted file mode 100644
index f6a8e162a..000000000
--- a/src/__tests__/mocks/mock-bluetooth-gattservice.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import MockBluetoothGattcharacteristic from './mock-bluetooth-gattcharacteristic';
-
-class MockBluetoothGattservice implements BluetoothRemoteGATTService {
- readonly device: BluetoothDevice;
- readonly isPrimary: boolean = false;
- readonly uuid: string = '';
-
- constructor(device: BluetoothDevice) {
- this.device = device;
- }
-
- oncharacteristicvaluechanged(ev: Event): any {
- /* Empty */
- }
-
- onserviceadded(ev: Event): any {
- /* Empty */
- }
-
- onservicechanged(ev: Event): any {
- /* Empty */
- }
-
- onserviceremoved(ev: Event): any {
- /* Empty */
- }
-
- addEventListener(
- type: 'serviceadded',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: 'servicechanged',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: 'serviceremoved',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: 'serviceadded' | 'servicechanged' | 'serviceremoved' | string,
- listener:
- | ((this: this, ev: Event) => any)
- | EventListenerOrEventListenerObject
- | null,
- useCapture?: boolean | AddEventListenerOptions,
- ): void {
- /* Empty */
- }
-
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean {
- return false;
- }
-
- getCharacteristic(
- characteristic: BluetoothCharacteristicUUID,
- ): Promise {
- return Promise.resolve(new MockBluetoothGattcharacteristic(this));
- }
-
- getCharacteristics(
- characteristic?: BluetoothCharacteristicUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- getIncludedService(service: BluetoothServiceUUID): Promise {
- return Promise.resolve(undefined as unknown as BluetoothRemoteGATTService);
- }
-
- getIncludedServices(
- service?: BluetoothServiceUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void {
- /* Empty */
- }
-}
-
-export default MockBluetoothGattservice;
diff --git a/src/__tests__/mocks/mock-bluetooth-info-service.ts b/src/__tests__/mocks/mock-bluetooth-info-service.ts
deleted file mode 100644
index a63392608..000000000
--- a/src/__tests__/mocks/mock-bluetooth-info-service.ts
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import MBSpecs from '../../script/microbit-interfacing/MBSpecs';
-import { MockBluetoothCharacteristicProperties } from './mock-bluetooth';
-
-class MockInfoService implements BluetoothRemoteGATTService {
- readonly device: BluetoothDevice;
- readonly isPrimary: boolean = false;
- readonly uuid: string = '';
- modelNumberCharacteristic: BluetoothRemoteGATTCharacteristic =
- new MockBluetoothModelNumberCharacteristic(0, this);
-
- constructor(device: any) {
- this.device = device;
- }
-
- oncharacteristicvaluechanged(ev: Event): any {}
-
- onserviceadded(ev: Event): any {}
-
- onservicechanged(ev: Event): any {}
-
- onserviceremoved(ev: Event): any {}
-
- withModelNumber(modelNumberCharacteristic: BluetoothRemoteGATTCharacteristic) {
- this.modelNumberCharacteristic = modelNumberCharacteristic;
- return this;
- }
-
- addEventListener(
- type: 'serviceadded',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: 'servicechanged',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: 'serviceremoved',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: 'serviceadded' | 'servicechanged' | 'serviceremoved' | string,
- listener:
- | ((this: this, ev: Event) => any)
- | EventListenerOrEventListenerObject
- | null,
- useCapture?: boolean | AddEventListenerOptions,
- ): void {}
-
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean {
- return false;
- }
-
- getCharacteristic(
- characteristic: BluetoothCharacteristicUUID,
- ): Promise {
- if (characteristic === MBSpecs.Characteristics.MODEL_NUMBER) {
- return Promise.resolve(this.modelNumberCharacteristic);
- }
- return Promise.reject(undefined);
- }
-
- getCharacteristics(
- characteristic?: BluetoothCharacteristicUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- getIncludedService(service: BluetoothServiceUUID): Promise {
- return Promise.reject(undefined);
- }
-
- getIncludedServices(
- service?: BluetoothServiceUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void {}
-}
-
-export class MockBluetoothModelNumberCharacteristic
- implements BluetoothRemoteGATTCharacteristic
-{
- readonly properties: BluetoothCharacteristicProperties =
- new MockBluetoothCharacteristicProperties();
- readonly service: BluetoothRemoteGATTService;
- readonly uuid: string = '';
-
- constructor(
- public versionNumber: number,
- service: BluetoothRemoteGATTService,
- ) {
- this.service = service;
- }
-
- oncharacteristicvaluechanged(ev: Event): any {}
-
- addEventListener(
- type: 'characteristicvaluechanged',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: 'characteristicvaluechanged' | string,
- listener:
- | ((this: this, ev: Event) => any)
- | EventListenerOrEventListenerObject
- | null,
- useCapture?: boolean | AddEventListenerOptions,
- ): void {}
-
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean {
- return false;
- }
-
- getDescriptor(
- descriptor: BluetoothDescriptorUUID,
- ): Promise {
- return Promise.reject(undefined);
- }
-
- getDescriptors(
- descriptor?: BluetoothDescriptorUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-
- readValue(): Promise {
- const v2VersionString = 'BBC micro:bit V2.0';
- const v1VersionString = 'BBC micro:bit';
-
- const selectedVersionString =
- this.versionNumber === 1 ? v1VersionString : v2VersionString;
- const enc = new TextEncoder();
- const buff = enc.encode(selectedVersionString);
- const dataView = new DataView(buff.buffer);
- return Promise.resolve(dataView);
- }
-
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void {}
-
- startNotifications(): Promise {
- return Promise.reject(undefined);
- }
-
- stopNotifications(): Promise {
- return Promise.reject(undefined);
- }
-
- writeValue(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-
- writeValueWithResponse(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-
- writeValueWithoutResponse(value: BufferSource): Promise {
- return Promise.resolve(undefined);
- }
-}
-
-export default MockInfoService;
diff --git a/src/__tests__/mocks/mock-bluetooth.ts b/src/__tests__/mocks/mock-bluetooth.ts
deleted file mode 100644
index 6ccca29e1..000000000
--- a/src/__tests__/mocks/mock-bluetooth.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-export class MockBluetoothCharacteristicProperties
- implements BluetoothCharacteristicProperties
-{
- readonly authenticatedSignedWrites: boolean = false;
- readonly broadcast: boolean = false;
- readonly indicate: boolean = false;
- readonly notify: boolean = false;
- readonly read: boolean = false;
- readonly reliableWrite: boolean = false;
- readonly writableAuxiliaries: boolean = false;
- readonly write: boolean = false;
- readonly writeWithoutResponse: boolean = false;
-}
diff --git a/src/__tests__/mocks/mock-microbit-bluetooth.ts b/src/__tests__/mocks/mock-microbit-bluetooth.ts
deleted file mode 100644
index 8d3921ae6..000000000
--- a/src/__tests__/mocks/mock-microbit-bluetooth.ts
+++ /dev/null
@@ -1,217 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import MBSpecs from '../../script/microbit-interfacing/MBSpecs';
-import MockInfoService, {
- MockBluetoothModelNumberCharacteristic,
-} from './mock-bluetooth-info-service';
-import MockBluetoothAccelerometerService from './mock-bluetooth-accelerometer-service';
-import MockBluetoothGattservice from './mock-bluetooth-gattservice';
-
-class MockBTDevice implements BluetoothDevice {
- readonly id: string = '';
- readonly watchingAdvertisements: boolean = false;
- public gatt: BluetoothRemoteGATTServer;
- public willFailConnection = false;
- private microbitVersion = 0;
- private listeners: DeviceListener[] = [];
-
- constructor() {
- this.gatt = new MockGattServer(this, this);
- }
-
- public withMicrobitVersion(versionNumber: 1 | 2) {
- this.microbitVersion = versionNumber;
- return this;
- }
-
- public withFailingConnection() {
- this.willFailConnection = true;
- return this;
- }
-
- public build() {
- let gatt = new MockGattServer(this, this);
- if (!this.microbitVersion) {
- this.microbitVersion = 1;
- }
- let deviceInfoService = new MockInfoService(this);
- const modelNumberCharacteristic = new MockBluetoothModelNumberCharacteristic(
- this.microbitVersion,
- deviceInfoService,
- );
- deviceInfoService = deviceInfoService.withModelNumber(modelNumberCharacteristic);
- gatt = gatt.withDeviceInfo(deviceInfoService);
- this.gatt = gatt;
- return this;
- }
-
- onadvertisementreceived(ev: BluetoothAdvertisingEvent): any {
- /* Empty */
- }
-
- oncharacteristicvaluechanged(ev: Event): any {
- /* Empty */
- }
-
- ongattserverdisconnected(ev: Event): any {
- /* Empty */
- }
-
- onserviceadded(ev: Event): any {
- /* Empty */
- }
-
- onservicechanged(ev: Event): any {
- /* Empty */
- }
-
- onserviceremoved(ev: Event): any {
- /* Empty */
- }
-
- addEventListener(
- type: 'gattserverdisconnected',
- listener: (this: this, ev: Event) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: 'advertisementreceived',
- listener: (this: this, ev: BluetoothAdvertisingEvent) => any,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- listener: EventListenerOrEventListenerObject,
- useCapture?: boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: AddEventListenerOptions | boolean,
- ): void;
- addEventListener(
- type: 'gattserverdisconnected' | 'advertisementreceived' | string,
- listener:
- | ((this: this, ev: Event) => any)
- | ((this: this, ev: BluetoothAdvertisingEvent) => any)
- | EventListenerOrEventListenerObject
- | null,
- useCapture?: boolean | AddEventListenerOptions,
- ): void {
- this.listeners.push({ eventType: type, listener: listener });
- }
-
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean;
- dispatchEvent(event: Event): boolean {
- this.listeners.forEach(value => {
- if (event.type == value.eventType) {
- if (value.listener) {
- value.listener(value);
- }
- }
- });
- return false;
- }
-
- forget(): Promise {
- return Promise.resolve(undefined);
- }
-
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void;
- removeEventListener(
- type: string,
- callback: EventListenerOrEventListenerObject | null,
- options?: EventListenerOptions | boolean,
- ): void {
- /* Empty */
- }
-
- watchAdvertisements(options?: WatchAdvertisementsOptions): Promise {
- return Promise.resolve(undefined);
- }
-}
-
-class MockGattServer implements BluetoothRemoteGATTServer {
- connected: boolean;
- readonly device: BluetoothDevice;
- mockDevice: MockBTDevice;
- deviceInfoService: BluetoothRemoteGATTService;
- accelerometerService: BluetoothRemoteGATTService;
-
- constructor(device: BluetoothDevice, mock: MockBTDevice) {
- this.connected = false;
- this.device = device;
- this.mockDevice = mock;
- this.deviceInfoService = new MockInfoService(device);
- this.accelerometerService = new MockBluetoothAccelerometerService(device);
- }
-
- withDeviceInfo(deviceInfoService: BluetoothRemoteGATTService) {
- this.deviceInfoService = deviceInfoService;
- return this;
- }
-
- connect(): Promise {
- if (this.mockDevice.willFailConnection) {
- return Promise.reject(undefined);
- }
- this.connected = true;
- return Promise.resolve(this);
- }
-
- disconnect(): void {
- this.device.dispatchEvent(new Event('gattserverdisconnected'));
- this.connected = false;
- }
-
- getPrimaryService(service: BluetoothServiceUUID): Promise {
- if (service === MBSpecs.Services.DEVICE_INFO_SERVICE) {
- return Promise.resolve(this.deviceInfoService);
- }
- if (service === MBSpecs.Services.ACCEL_SERVICE) {
- return Promise.resolve(this.accelerometerService);
- }
- if (service === MBSpecs.Services.BUTTON_SERVICE) {
- return Promise.resolve(new MockBluetoothGattservice(this.device));
- }
- if (service === MBSpecs.Services.UART_SERVICE) {
- return Promise.resolve(new MockBluetoothGattservice(this.device));
- }
- console.warn(
- 'The primary service, you tried to fetch were unknown. Was this on purpose?',
- );
- return Promise.reject(undefined);
- }
-
- getPrimaryServices(
- service?: BluetoothServiceUUID,
- ): Promise {
- return Promise.resolve([]);
- }
-}
-
-type DeviceListener = {
- eventType: 'gattserverdisconnected' | 'advertisementreceived' | string;
- listener: any;
-};
-
-export default MockBTDevice;
diff --git a/src/__tests__/mocks/mock-usb.ts b/src/__tests__/mocks/mock-usb.ts
deleted file mode 100644
index abd548fef..000000000
--- a/src/__tests__/mocks/mock-usb.ts
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import USBConfiguration from 'dapjs';
-import USBInterface from 'dapjs';
-import USBAlternateInterface from 'dapjs';
-import MicrobitUSB from '../../script/microbit-interfacing/MicrobitUSB';
-
-class SimpleUSBInterfaceAlternate implements USBAlternateInterface {
- alternateSetting = 0;
- interfaceClass = 0;
- interfaceSubclass = 0;
- interfaceProtocol = 0;
- interfaceName?: string;
- endpoints: USBEndpoint[] = [];
-}
-
-class SimpleUSBInterface implements USBInterface {
- interfaceNumber: number;
- alternate: USBAlternateInterface;
- alternates: USBAlternateInterface[] = [];
- claimed = false;
-
- constructor() {
- this.alternate = new SimpleUSBInterfaceAlternate();
- this.interfaceNumber = 1;
- }
-}
-
-class SimpleUSBConfig implements USBConfiguration {
- configurationValue: number;
- configurationName?: string;
- interfaces: USBInterface[];
-
- constructor() {
- this.configurationName = 'some name';
- this.configurationValue = 1;
- this.interfaces = [];
- this.interfaces.push(new SimpleUSBInterface());
- }
-}
-
-class MockUSBDevice implements USBDevice {
- configurations: USBConfiguration[] = [];
- readonly deviceClass: number = 0;
- readonly deviceProtocol: number = 0;
- readonly deviceSubclass: number = 0;
- readonly deviceVersionMajor: number = 0;
- readonly deviceVersionMinor: number = 0;
- readonly deviceVersionSubminor: number = 0;
- readonly opened: boolean = false;
- readonly productId: number = 0;
- readonly usbVersionMajor: number = 0;
- readonly usbVersionMinor: number = 0;
- readonly usbVersionSubminor: number = 0;
- readonly vendorId: number = 0;
- interfaceNumber = 0;
- public serialNumber = '';
-
- public withSerialNumber(serno: string) {
- this.serialNumber = serno;
- return this;
- }
-
- public build() {
- this.configurations = [];
- const usbConfig = new SimpleUSBConfig();
- this.configurations = [usbConfig];
- this.interfaceNumber = 1;
- return this;
- }
-
- claimInterface(interfaceNumber: number): Promise {
- return Promise.resolve();
- }
-
- clearHalt(direction: USBDirection, endpointNumber: number): Promise {
- return Promise.resolve();
- }
-
- close(): Promise {
- return Promise.resolve();
- }
-
- controlTransferIn(
- setup: USBControlTransferParameters,
- length: number,
- ): Promise {
- return Promise.resolve(new USBInTransferResult('ok', undefined));
- }
-
- controlTransferOut(
- setup: USBControlTransferParameters,
- data?: BufferSource,
- ): Promise {
- return Promise.resolve(new USBOutTransferResult('ok', 1));
- }
-
- forget(): Promise {
- return Promise.resolve();
- }
-
- isochronousTransferIn(
- endpointNumber: number,
- packetLengths: number[],
- ): Promise {
- return Promise.resolve(new USBIsochronousInTransferResult([], undefined));
- }
-
- isochronousTransferOut(
- endpointNumber: number,
- data: BufferSource,
- packetLengths: number[],
- ): Promise {
- return Promise.resolve(new USBIsochronousOutTransferResult([]));
- }
-
- open(): Promise {
- return Promise.resolve();
- }
-
- releaseInterface(interfaceNumber: number): Promise {
- return Promise.resolve();
- }
-
- reset(): Promise {
- return Promise.resolve();
- }
-
- selectAlternateInterface(
- interfaceNumber: number,
- alternateSetting: number,
- ): Promise {
- return Promise.resolve();
- }
-
- selectConfiguration(configurationValue: number): Promise {
- return Promise.resolve();
- }
-
- transferIn(endpointNumber: number, length: number): Promise {
- return Promise.resolve(new USBInTransferResult('ok', undefined));
- }
-
- transferOut(endpointNumber: number, data: BufferSource): Promise {
- return Promise.resolve(new USBOutTransferResult('ok', 1));
- }
-}
-
-export default MockUSBDevice;
-
-export class TestableMicrobitUSB extends MicrobitUSB {
- /** Just overrides the protected constructor to be able to use the Mock USB device to test */
- public constructor(usbDevice: USBDevice) {
- super(usbDevice);
- }
-}
diff --git a/src/__tests__/serialProtocol.test.ts b/src/__tests__/serialProtocol.test.ts
deleted file mode 100644
index 96b5b719e..000000000
--- a/src/__tests__/serialProtocol.test.ts
+++ /dev/null
@@ -1,391 +0,0 @@
-/**
- * @jest-environment jsdom
- */
-/**
- * (c) 2024, Micro:bit Educational Foundation and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import {
- MicrobitSensorState,
- splitMessages,
- processPeriodicMessage,
- processResponseMessage,
-} from '../script/microbit-interfacing/serialProtocol';
-
-describe('splitMessages', () => {
- it('splits a single message', () => {
- const message = 'P0E80495C4341\n';
-
- const got = splitMessages(message);
-
- expect(got.messages.length).toEqual(1);
- expect(got.messages[0]).toEqual(message.slice(0, -1));
- expect(got.remainingInput).toEqual('');
- });
-
- it('splits multiple messages', () => {
- const message1 = 'P21998AEC2F80';
- const message2 = 'P21FFF000FFF3';
- const message3 = 'P45000FFF0002';
-
- const msgs = splitMessages(message1 + '\n' + message2 + '\n' + message3 + '\n');
-
- expect(msgs.messages.length).toEqual(3);
- expect(msgs.messages[0]).toEqual(message1);
- expect(msgs.messages[1]).toEqual(message2);
- expect(msgs.messages[2]).toEqual(message3);
- expect(msgs.remainingInput).toEqual('');
- });
-
- it('splits multiple messages with extra input', () => {
- const message1 = 'P188009584343';
- const message2 = 'P19998AEC2F80';
- const message3 = 'P201234';
-
- const msgs = splitMessages(message1 + '\n' + message2 + '\n' + message3);
-
- expect(msgs.messages.length).toEqual(2);
- expect(msgs.messages[0]).toEqual(message1);
- expect(msgs.messages[1]).toEqual(message2);
- expect(msgs.remainingInput).toEqual(message3);
- });
-
- it('sets the remainingInput from incomplete message', () => {
- const message1 = 'R[0]INCOMPLETE';
-
- const msgs = splitMessages(message1);
-
- expect(msgs.messages.length).toEqual(0);
- expect(msgs.remainingInput).toEqual(message1);
- });
-
- it('processes empty input correctly', () => {
- const msgs = splitMessages('');
-
- expect(msgs.messages.length).toEqual(0);
- expect(msgs.remainingInput).toEqual('');
- });
-
- it('throws away empty lines correctly', () => {
- const msgs = splitMessages('\n\n\n');
-
- expect(msgs.messages.length).toEqual(0);
- expect(msgs.remainingInput).toEqual('');
- });
-
- it('throws away remainingInput of invalid type', () => {
- const message1 = 'R[0]START[]';
- const message_invalid_start = 'NOT_A_VALID_MSG_START';
-
- const msgs = splitMessages(message1 + '\n' + message_invalid_start);
-
- expect(msgs.messages.length).toEqual(1);
- expect(msgs.messages[0]).toEqual(message1);
- expect(msgs.remainingInput).toEqual('');
- });
-
- it('throws messages of invalid type', () => {
- const msgs = splitMessages('P00\nC11\nR22\nX33\n');
-
- expect(msgs.messages.length).toEqual(3);
- expect(msgs.messages[0]).toEqual('P00');
- expect(msgs.messages[1]).toEqual('C11');
- expect(msgs.messages[2]).toEqual('R22');
- expect(msgs.remainingInput).toEqual('');
- });
-});
-
-describe('processPeriodicMessage', () => {
- it('extracts the micro:bit state from the message', () => {
- const message = 'P0E80495C4341';
-
- const got = processPeriodicMessage(message);
-
- const want: MicrobitSensorState = {
- accelerometerX: 4,
- accelerometerY: 348,
- accelerometerZ: -972,
- buttonA: 1,
- buttonB: 0,
- };
- expect(got).toEqual(want);
- });
-
- it('processes min/max values correctly', () => {
- const message1 = 'P00FFF000FFF0';
- const want1: MicrobitSensorState = {
- accelerometerX: 2047,
- accelerometerY: -2048,
- accelerometerZ: 2047,
- buttonA: 0,
- buttonB: 0,
- };
- const message2 = 'PFF000FFF0003';
- const want2: MicrobitSensorState = {
- accelerometerX: -2048,
- accelerometerY: 2047,
- accelerometerZ: -2048,
- buttonA: 1,
- buttonB: 1,
- };
-
- const got1 = processPeriodicMessage(message1);
- const got2 = processPeriodicMessage(message2);
-
- expect(got1).toEqual(want1);
- expect(got2).toEqual(want2);
- });
-
- it('ignores messages that are not periodic', () => {
- const message1 = 'C001112223334';
- const message2 = 'R001112223334';
-
- const got1 = processPeriodicMessage(message1);
- const got2 = processPeriodicMessage(message2);
-
- expect(got1).toBeUndefined();
- expect(got2).toBeUndefined();
- });
-
- it('ignores wrong length input', () => {
- const message1 = 'P21998AEC2F8\n';
- const message2 = 'P21998AEC2F';
-
- const got1 = processPeriodicMessage(message1);
- const got2 = processPeriodicMessage(message2);
-
- expect(got1).toBeUndefined();
- expect(got2).toBeUndefined();
- });
-
- it('detects invalid button values', () => {
- const message1 = 'P000000000004';
- const message2 = 'P00000000000F';
-
- const got1 = processPeriodicMessage(message1);
- const got2 = processPeriodicMessage(message2);
-
- expect(got1).toBeUndefined();
- expect(got2).toBeUndefined();
- });
-
- it('detects invalid hex values', () => {
- const message1 = 'Pz01112223334';
-
- const got1 = processPeriodicMessage(message1);
-
- expect(got1).toBeUndefined();
- });
-});
-
-describe('processResponseMessage', () => {
- it('processes valid Handshake responses', () => {
- const message1 = 'R[0]HS[1]';
- const message2 = 'R[1122aabb]HS[255]';
-
- const got1 = processResponseMessage(message1);
- const got2 = processResponseMessage(message2);
-
- expect(got1).toEqual({
- message: message1,
- messageId: 0,
- type: 'HS',
- value: 1,
- });
- expect(got2).toEqual({
- message: message2,
- messageId: 0x1122aabb,
- type: 'HS',
- value: 255,
- });
- });
-
- it('processes valid Radio Frequency response', () => {
- const message = 'R[1234]RF[42]';
-
- const got = processResponseMessage(message);
-
- expect(got).toEqual({
- message: message,
- messageId: 0x1234,
- type: 'RF',
- value: 42,
- });
- });
-
- it('processes valid Remote micro:bit ID response', () => {
- const message = 'R[1234]RMBID[4294967295]';
-
- const got = processResponseMessage(message);
-
- expect(got).toEqual({
- message: message,
- messageId: 0x1234,
- type: 'RMBID',
- value: 4294967295,
- });
- });
-
- it('processes valid Software Versions responses', () => {
- const message1 = 'R[1234]SWVER[0.0.0]';
- const message2 = 'R[1234]SWVER[99.99.99]';
- const message3 = 'R[1234]SWVER[1.2.3]';
-
- const got1 = processResponseMessage(message1);
- const got2 = processResponseMessage(message2);
- const got3 = processResponseMessage(message3);
-
- expect(got1).toEqual({
- message: message1,
- messageId: 0x1234,
- type: 'SWVER',
- value: '0.0.0',
- });
- expect(got2).toEqual({
- message: message2,
- messageId: 0x1234,
- type: 'SWVER',
- value: '99.99.99',
- });
- expect(got3).toEqual({
- message: message3,
- messageId: 0x1234,
- type: 'SWVER',
- value: '1.2.3',
- });
- });
-
- it('processes valid Hardware Versions responses', () => {
- const message1 = 'R[1234]HWVER[0]';
- const message2 = 'R[1234]HWVER[9999]';
-
- const got1 = processResponseMessage(message1);
- const got2 = processResponseMessage(message2);
-
- expect(got1).toEqual({
- message: message1,
- messageId: 0x1234,
- type: 'HWVER',
- value: 0,
- });
- expect(got2).toEqual({
- message: message2,
- messageId: 0x1234,
- type: 'HWVER',
- value: 9999,
- });
- });
-
- it('processes valid Zstart response', () => {
- const message = 'R[1234]ZSTART[]';
-
- const got = processResponseMessage(message);
-
- expect(got).toEqual({
- message: message,
- messageId: 0x1234,
- type: 'ZSTART',
- value: '',
- });
- });
-
- it('processes valid Stop response', () => {
- const message = 'R[1234]STOP[]';
-
- const got = processResponseMessage(message);
-
- expect(got).toEqual({
- message: message,
- messageId: 0x1234,
- type: 'STOP',
- value: '',
- });
- });
-
- it('processes valid Error response', () => {
- const message = 'R[1234]ERROR[1]';
-
- const got = processResponseMessage(message);
-
- expect(got).toEqual({
- message: message,
- messageId: 0x1234,
- type: 'ERROR',
- value: 1,
- });
- });
-
- it('throws away messages that are not a response', () => {
- // First a valid response to stablish a baseline
- expect(processResponseMessage('R[0]STOP[]')).not.toBeUndefined();
- // Now non-response messages types
- expect(processResponseMessage('C[0]STOP[]')).toBeUndefined();
- expect(processResponseMessage('P[0]STOP[]')).toBeUndefined();
- expect(processResponseMessage('P0E80495C4341')).toBeUndefined();
- // Invalid message types
- expect(processResponseMessage('Z[0]STOP[]')).toBeUndefined();
- expect(processResponseMessage('9[0]STOP[]')).toBeUndefined();
- });
-
- it('throws away response messages with invalid IDs', () => {
- // First a valid response to stablish a baseline
- expect(processResponseMessage('R[0]STOP[]')).not.toBeUndefined();
- // Now invalid IDs
- expect(processResponseMessage('R[]STOP[]')).toBeUndefined();
- expect(processResponseMessage('R[123456789]STOP[]')).toBeUndefined();
- expect(processResponseMessage('R[12G]STOP[]')).toBeUndefined();
- expect(processResponseMessage('R[-1]STOP[]')).toBeUndefined();
- expect(processResponseMessage('R[1.1]STOP[]')).toBeUndefined();
- expect(processResponseMessage('R[word]STOP[]')).toBeUndefined();
- });
-
- it('throws away response messages with invalid number values', () => {
- // First valid messages to stablish a baseline
- expect(processResponseMessage('R[0]RF[10000]')).not.toBeUndefined();
- expect(processResponseMessage('R[0]RMBID[4294967295]')).not.toBeUndefined();
- // Now invalid values
- expect(processResponseMessage('R[0]RMBID[4294967296]')).toBeUndefined();
- expect(processResponseMessage('R[0]RF[-1]')).toBeUndefined();
- expect(processResponseMessage('R[0]RF[1-2]')).toBeUndefined();
- expect(processResponseMessage('R[0]RF[1,2]')).toBeUndefined();
- expect(processResponseMessage('R[0]RF[1F]')).toBeUndefined();
- expect(processResponseMessage('R[0]RF[word]')).toBeUndefined();
- });
-
- it('throws away response messages with invalid version values', () => {
- // First valid messages to stablish a baseline
- expect(processResponseMessage('R[0]SWVER[1.1.1]')).not.toBeUndefined();
- // Now invalid values
- expect(processResponseMessage('R[0]SWVER[1]')).toBeUndefined();
- expect(processResponseMessage('R[0]SWVER[1.1]')).toBeUndefined();
- expect(processResponseMessage('R[0]SWVER[123.1.1]')).toBeUndefined();
- expect(processResponseMessage('R[0]SWVER[1.123.1]')).toBeUndefined();
- expect(processResponseMessage('R[0]SWVER[1.1.123]')).toBeUndefined();
- expect(processResponseMessage('R[0]SWVER[11.22.AA]')).toBeUndefined();
- expect(processResponseMessage('R[0]SWVER[word]')).toBeUndefined();
- });
-
- it('throws away response messages with invalid empty value', () => {
- // First a valid response to stablish a baseline
- expect(processResponseMessage('R[0]STOP[]')).not.toBeUndefined();
- // Now non-response messages types
- expect(processResponseMessage('R[0]STOP[0]')).toBeUndefined();
- expect(processResponseMessage('R[0]STOP[-1]')).toBeUndefined();
- expect(processResponseMessage('R[0]STOP[a]')).toBeUndefined();
- });
-
- it('throws away other types of invalid responses', () => {
- expect(processResponseMessage('R0STOP[]')).toBeUndefined();
- expect(processResponseMessage('[0]STOP[]')).toBeUndefined();
- expect(processResponseMessage('R[0]STOP')).toBeUndefined();
- expect(processResponseMessage('R[0][]')).toBeUndefined();
- expect(processResponseMessage('R[0]')).toBeUndefined();
- expect(processResponseMessage('R[0]STOP[]STOP[]')).toBeUndefined();
- expect(processResponseMessage('R[0]R[1]STOP[]')).toBeUndefined();
- expect(processResponseMessage('R[0]STOP[]S')).toBeUndefined();
- expect(processResponseMessage('R[0]RF[1')).toBeUndefined();
- expect(processResponseMessage('R[0]RF1]')).toBeUndefined();
- });
-});
diff --git a/src/__tests__/translations.test.ts b/src/__tests__/translations.test.ts
deleted file mode 100644
index 323be2434..000000000
--- a/src/__tests__/translations.test.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-import en from './../messages/ui.en.json';
-// TODO: actually import the right one!
-const da = en;
-
-// We're moving translations to Crowdin so expect the English to be the only
-// updated language for now
-describe.skip('Translation tests', () => {
- test('Should be same number of translations', () => {
- const danishTranslationCount = Object.keys(da).length;
- const englishTranslationCount = Object.keys(en).length;
- expect(danishTranslationCount).toEqual(englishTranslationCount);
- });
-
- test('Translations are the same', () => {
- const danishTranslationKeys = Object.getOwnPropertyNames(da) as (keyof typeof da)[];
- for (let i = 0; i < danishTranslationKeys.length; i++) {
- const danishKey = danishTranslationKeys[i];
- // @ts-ignore - as translations are intentionally allowed to differ
- expect(en[danishKey], 'Something not the same -> ' + danishKey).toBeDefined();
- }
- });
-
- // Mostly an architecture test
- test('Translations should be in the same order', () => {
- const danishTranslationKeys = Object.getOwnPropertyNames(da);
- const englishTranslationKeys = Object.getOwnPropertyNames(en);
- for (let i = 0; i < englishTranslationKeys.length; i++) {
- const danishKey = danishTranslationKeys[i];
- const englishKey = englishTranslationKeys[i];
- expect(danishKey, `Not the same order found for -> ${danishKey}`).toEqual(
- englishKey,
- );
- }
- });
-});
-
-export {};
diff --git a/src/__tests__/unusedTranslations.test.ts b/src/__tests__/unusedTranslations.test.ts
deleted file mode 100644
index e6c33fc85..000000000
--- a/src/__tests__/unusedTranslations.test.ts
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import en from './../messages/ui.en.json';
-import * as fs from 'fs';
-import * as path from 'path';
-
-const ignoredFiles: RegExp[] = [
- // Alphabetical ignore list
- /^smoothie.js$/,
- /^__tests__$/,
- /^ui.[a-z-]+.json$/,
-];
-
-const readFile = (fileLocation: string, expect: string) => {
- const fileContent = fs.readFileSync(fileLocation);
- return fileContent.toString().toLowerCase().includes(expect.toLowerCase());
-};
-
-type DirectoryContents = {
- files: string[];
- folders: string[];
-};
-
-const readDirectory = (directory: string, ignoreList: RegExp[]): DirectoryContents => {
- const files: string[] = [];
- const folders: string[] = [];
- const filesRead = fs.readdirSync(directory);
- filesRead.forEach(file => {
- if (ignoreList.some(pattern => pattern.test(file))) return;
- const fileLocation = path.join(directory, file);
- const stats = fs.statSync(fileLocation);
- if (stats.isFile()) {
- files.push(fileLocation);
- } else {
- folders.push(fileLocation);
- }
- });
- return { files: files, folders: folders };
-};
-
-const flattenDirectory = (directory: string): string[] => {
- const files: string[] = [];
- const content = readDirectory(directory, ignoredFiles);
- const filesFromSubFolders: string[] = [];
- content.folders.forEach(value => {
- const subFolderFlat = flattenDirectory(value);
- subFolderFlat.forEach(value => filesFromSubFolders.push(value));
- });
- filesFromSubFolders.forEach(value => files.push(value));
- content.files.forEach(value => files.push(value));
- return files;
-};
-
-const filesIncludesExpression = (files: string[], expect: string): boolean => {
- for (let i = 0; i < files.length; i++) {
- if (readFile('./' + files[i], expect)) {
- return true;
- }
- }
- return false;
-};
-
-test(
- 'All translations should be used',
- () => {
- const allowedUnused = [
- // We have some strings we plan to reinstate
- /^popup.outdatedmicrobit/,
- ];
- const translationKeys = Object.getOwnPropertyNames(en);
- const flatten = flattenDirectory('./src/');
- for (let i = 0; i < translationKeys.length; i++) {
- const translationKey = translationKeys[i];
- if (allowedUnused.some(regexp => regexp.test(translationKey))) {
- continue;
- }
- expect(
- filesIncludesExpression(flatten, translationKey),
- "unused translation --> '" +
- translationKey +
- "' \n confirm with command .. \n grep -rnw ./src -e '" +
- translationKey +
- "'",
- ).toEqual(true);
- }
- },
- 60000 * 10,
-);
diff --git a/src/__viteBuildVariants__/ml-machine/windi.config.js b/src/__viteBuildVariants__/ml-machine/windi.config.js
deleted file mode 100644
index f9daee663..000000000
--- a/src/__viteBuildVariants__/ml-machine/windi.config.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-//Ml-Machine colors
-
-export default {
- theme: {
- extend: {
- colors: {
- primary: '#2c92d6',
- primarytext: '#000000',
- secondary: '#a0a0a0',
- secondarytext: '#FFFFFF',
- info: '#98A2B3',
- backgrounddark: '#F5F5F5',
- backgroundlight: '#ffffff',
- infolight: '#93c5fd',
- link: '#6c4bc1',
- warning: '#cd0365',
- disabled: '#8892A3',
- primaryborder: '#E5E7EB',
- infobglight: '#E7E5E4',
- infobgdark: '#57534E',
- infoiconlight: '#FFFFFF7F',
- infoicondark: '#787878',
- infotextlight: '#ffffff',
- infotextdark: '#787878',
- },
- },
- },
-};
diff --git a/src/__tests__/patternMatrixTransforms.test.ts b/src/bt-pattern-matrix-utils.test.ts
similarity index 78%
rename from src/__tests__/patternMatrixTransforms.test.ts
rename to src/bt-pattern-matrix-utils.test.ts
index da49f6871..5d2248139 100644
--- a/src/__tests__/patternMatrixTransforms.test.ts
+++ b/src/bt-pattern-matrix-utils.test.ts
@@ -12,10 +12,10 @@ import {
transformColumnsToMatrix,
transformMatrixToColumns,
updateMatrixColumns,
-} from '../script/patternMatrixTransforms';
+} from "./bt-pattern-matrix-utils";
-describe('transformMatrixToColumns', () => {
- test('2 x 2', () => {
+describe("transformMatrixToColumns", () => {
+ test("2 x 2", () => {
const dim = 2;
const matrix = [1, 2, 3, 4];
const columns = [
@@ -26,8 +26,8 @@ describe('transformMatrixToColumns', () => {
});
});
-describe('transformColumnsToMatrix', () => {
- test('2 x 2', () => {
+describe("transformColumnsToMatrix", () => {
+ test("2 x 2", () => {
const matrix = [1, 2, 3, 4];
const columns = [
[1, 3],
@@ -37,8 +37,8 @@ describe('transformColumnsToMatrix', () => {
});
});
-describe('getHighlightedColumns', () => {
- test('cell position is above lit up cell', () => {
+describe("getHighlightedColumns", () => {
+ test("cell position is above lit up cell", () => {
const matrixColumns = [
[false, false, true],
[false, false, false],
@@ -50,9 +50,11 @@ describe('getHighlightedColumns', () => {
[false, false, false],
[false, false, false],
];
- expect(getHighlightedColumns(matrixColumns, cellPos)).toEqual(highlightedColumns);
+ expect(getHighlightedColumns(matrixColumns, cellPos)).toEqual(
+ highlightedColumns
+ );
});
- test('cell position is below lit up cell', () => {
+ test("cell position is below lit up cell", () => {
const matrixColumns = [
[true, true, true],
[false, false, false],
@@ -64,9 +66,11 @@ describe('getHighlightedColumns', () => {
[false, false, false],
[false, false, false],
];
- expect(getHighlightedColumns(matrixColumns, cellPos)).toEqual(highlightedColumns);
+ expect(getHighlightedColumns(matrixColumns, cellPos)).toEqual(
+ highlightedColumns
+ );
});
- test('cell position is on lit up cell', () => {
+ test("cell position is on lit up cell", () => {
const matrixColumns = [
[false, true, true],
[false, false, false],
@@ -78,12 +82,14 @@ describe('getHighlightedColumns', () => {
[false, false, false],
[false, false, false],
];
- expect(getHighlightedColumns(matrixColumns, cellPos)).toEqual(highlightedColumns);
+ expect(getHighlightedColumns(matrixColumns, cellPos)).toEqual(
+ highlightedColumns
+ );
});
});
-describe('updateMatrixColumns', () => {
- test('cell position is above lit up cell', () => {
+describe("updateMatrixColumns", () => {
+ test("cell position is above lit up cell", () => {
const matrixColumns = [
[false, false, true],
[false, false, true],
@@ -95,9 +101,11 @@ describe('updateMatrixColumns', () => {
[true, true, true],
[false, false, true],
];
- expect(updateMatrixColumns(matrixColumns, cellPos)).toEqual(newMatrixColumns);
+ expect(updateMatrixColumns(matrixColumns, cellPos)).toEqual(
+ newMatrixColumns
+ );
});
- test('cell position is below lit up cell', () => {
+ test("cell position is below lit up cell", () => {
const matrixColumns = [
[false, false, true],
[true, true, true],
@@ -109,9 +117,11 @@ describe('updateMatrixColumns', () => {
[false, false, true],
[false, false, true],
];
- expect(updateMatrixColumns(matrixColumns, cellPos)).toEqual(newMatrixColumns);
+ expect(updateMatrixColumns(matrixColumns, cellPos)).toEqual(
+ newMatrixColumns
+ );
});
- test('cell position is on lit up cell', () => {
+ test("cell position is on lit up cell", () => {
const matrixColumns = [
[false, false, true],
[false, false, true],
diff --git a/src/script/patternMatrixTransforms.ts b/src/bt-pattern-matrix-utils.ts
similarity index 72%
rename from src/script/patternMatrixTransforms.ts
rename to src/bt-pattern-matrix-utils.ts
index 41c18e615..20a564c1c 100644
--- a/src/script/patternMatrixTransforms.ts
+++ b/src/bt-pattern-matrix-utils.ts
@@ -4,7 +4,10 @@
* SPDX-License-Identifier: MIT
*/
-export const transformMatrixToColumns = (m: T[], matrixDimension: number): T[][] => {
+export const transformMatrixToColumns = (
+ m: T[],
+ matrixDimension: number
+): T[][] => {
const cols = [];
for (let colId = 1; colId <= matrixDimension; colId++) {
const remainder = colId === matrixDimension ? 0 : colId;
@@ -16,13 +19,15 @@ export const transformMatrixToColumns = (m: T[], matrixDimension: number): T[
export const transformColumnsToMatrix = (cols: T[][]): T[] => {
let matrix: T[] = [];
for (let i = 0; i < cols.length; i++) {
- matrix = [...matrix, ...cols.map(c => c[i])];
+ matrix = [...matrix, ...cols.map((c) => c[i])];
}
return matrix;
};
export const generateMatrix = (dimension: number, fillValue: T) => {
- return new Array(dimension).fill(new Array(dimension).fill(fillValue));
+ return new Array(dimension).fill(
+ new Array(dimension).fill(fillValue)
+ );
};
export type MatrixColumns = boolean[][];
@@ -34,11 +39,12 @@ export interface CellPosition {
export const getHighlightedColumns = (
matrixColumns: MatrixColumns,
- cellPos: CellPosition,
+ cellPos: CellPosition
) => {
const col = matrixColumns[cellPos.colIdx];
const highlightedCol = col.map(
- (isOn, idx) => (!isOn && cellPos.rowIdx <= idx) || (isOn && cellPos.rowIdx > idx),
+ (isOn, idx) =>
+ (!isOn && cellPos.rowIdx <= idx) || (isOn && cellPos.rowIdx > idx)
);
const highlightedColumns = generateMatrix(matrixColumns.length, false);
highlightedColumns[cellPos.colIdx] = highlightedCol;
@@ -47,9 +53,11 @@ export const getHighlightedColumns = (
export const updateMatrixColumns = (
matrixColumns: MatrixColumns,
- cellPos: CellPosition,
+ cellPos: CellPosition
) => {
- const newCol = Array(matrixColumns.length).fill(false).fill(true, cellPos.rowIdx);
+ const newCol = Array(matrixColumns.length)
+ .fill(false)
+ .fill(true, cellPos.rowIdx);
return [
...matrixColumns.slice(0, cellPos.colIdx),
newCol,
diff --git a/src/bt-pattern-utils.ts b/src/bt-pattern-utils.ts
new file mode 100644
index 000000000..957596425
--- /dev/null
+++ b/src/bt-pattern-utils.ts
@@ -0,0 +1,93 @@
+/**
+ * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+export type BluetoothPattern = boolean[];
+const microbitNameLength = 5;
+
+/**
+ * This is a version of the microbit codebook, where the original codebook is transposed
+ * and the rows are flipped. This gives an easier to use version for the bluetooth pattern
+ * connection.
+ * This could be done programatically, but having it typed out hopefully helps
+ * with the understanding of pattern <-> friendly name conversion
+ */
+const microbitBluetoothCodebook: string[][] = [
+ ["t", "a", "t", "a", "t"],
+ ["p", "e", "p", "e", "p"],
+ ["g", "i", "g", "i", "g"],
+ ["v", "o", "v", "o", "v"],
+ ["z", "u", "z", "u", "z"],
+];
+
+export const microbitNameToBluetoothPattern = (
+ name: string
+): BluetoothPattern => {
+ const pattern: BluetoothPattern = new Array(25).fill(true);
+
+ // if wrong name length, return empty pattern
+ if (name.length != microbitNameLength) {
+ return pattern.map(() => false);
+ }
+
+ for (let column = 0; column < microbitNameLength; column++) {
+ for (let row = 0; row < microbitNameLength; row++) {
+ if (microbitBluetoothCodebook[row][column] === name.charAt(column)) {
+ break;
+ }
+ pattern[5 * row + column] = false;
+ }
+ }
+
+ return pattern;
+};
+
+const deviceIdToNameCodebook = [
+ ["z", "v", "g", "p", "t"],
+ ["u", "o", "i", "e", "a"],
+ ["z", "v", "g", "p", "t"],
+ ["u", "o", "i", "e", "a"],
+ ["z", "v", "g", "p", "t"],
+];
+
+export const deviceIdToMicrobitName = (deviceId: number): string => {
+ let d = microbitNameLength;
+ let ld = 1;
+ let name = "";
+
+ for (let i = 0; i < microbitNameLength; i++) {
+ const h = Math.floor((deviceId % d) / ld);
+ deviceId -= h;
+ d *= microbitNameLength;
+ ld *= microbitNameLength;
+ name = deviceIdToNameCodebook[i][h] + name;
+ }
+ return name;
+};
+
+/**
+ * Converts a pairing pattern to a name.
+ * See guide on microbit names to understand how a pattern is turned into a name
+ * https://support.microbit.org/support/solutions/articles/19000067679-how-to-find-the-name-of-your-micro-bit
+ * @param {boolean[]} pattern The pattern to convert.
+ * @returns {string} The name of the micro:bit.
+ */
+export const microbitPatternToName = (pattern: boolean[]): string => {
+ const code: string[] = [" ", " ", " ", " ", " "];
+
+ for (let col = 0; col < microbitNameLength; col++) {
+ for (let row = 0; row < microbitNameLength; row++) {
+ if (pattern[row * microbitNameLength + col]) {
+ // Find the first vertical on/true in each column
+ code[col] = microbitBluetoothCodebook[row][col]; // Use code-book to find char
+ break; // Rest of column is irrelevant
+ }
+ // If we get to here the pattern is not legal, and the returned name
+ // will not match any microbit.
+ }
+ }
+
+ return code.join("");
+};
diff --git a/src/buffered-data-hooks.tsx b/src/buffered-data-hooks.tsx
new file mode 100644
index 000000000..8c12727db
--- /dev/null
+++ b/src/buffered-data-hooks.tsx
@@ -0,0 +1,61 @@
+import { AccelerometerDataEvent } from "@microbit/microbit-connection";
+import { ReactNode, createContext, useContext, useEffect, useRef } from "react";
+import { BufferedData } from "./buffered-data";
+import { useConnectActions } from "./connect-actions-hooks";
+import { ConnectionStatus, useConnectStatus } from "./connect-status-hooks";
+import { mlSettings } from "./ml";
+
+const BufferedDataContext = createContext(null);
+
+interface ConnectProviderProps {
+ children: ReactNode;
+}
+
+export const BufferedDataProvider = ({ children }: ConnectProviderProps) => {
+ const bufferedData = useBufferedDataInternal();
+ return (
+
+ {children}
+
+ );
+};
+
+export const useBufferedData = (): BufferedData => {
+ const value = useContext(BufferedDataContext);
+ if (!value) {
+ throw new Error("Missing provider");
+ }
+ return value;
+};
+
+const useBufferedDataInternal = (): BufferedData => {
+ const [connectStatus] = useConnectStatus();
+ const connection = useConnectActions();
+ const bufferRef = useRef();
+ const getBuffer = () => {
+ if (bufferRef.current) {
+ return bufferRef.current;
+ }
+ bufferRef.current = new BufferedData(mlSettings.numSamples * 2);
+ return bufferRef.current;
+ };
+ useEffect(() => {
+ if (connectStatus !== ConnectionStatus.Connected) {
+ return;
+ }
+ const listener = (e: AccelerometerDataEvent) => {
+ const { x, y, z } = e.data;
+ const sample = {
+ x: x / 1000,
+ y: y / 1000,
+ z: z / 1000,
+ };
+ getBuffer().addSample(sample, Date.now());
+ };
+ connection.addAccelerometerListener(listener);
+ return () => {
+ connection.removeAccelerometerListener(listener);
+ };
+ }, [connection, connectStatus]);
+ return getBuffer();
+};
diff --git a/src/buffered-data.test.ts b/src/buffered-data.test.ts
new file mode 100644
index 000000000..f47f002b3
--- /dev/null
+++ b/src/buffered-data.test.ts
@@ -0,0 +1,129 @@
+import { describe, it } from "vitest";
+import { BufferedData, RingBuffer } from "./buffered-data";
+
+describe("RingBuffer", () => {
+ it("toArray empty", () => {
+ const buffer = new RingBuffer(5);
+ expect(buffer.size).toEqual(0);
+ expect(buffer.toArray()).toEqual([]);
+ });
+ it("toArray part full", () => {
+ const buffer = new RingBuffer(5);
+ buffer.add(1);
+ expect(buffer.size).toEqual(1);
+ buffer.add(2);
+ expect(buffer.size).toEqual(2);
+ expect(buffer.toArray()).toEqual([1, 2]);
+ });
+ it("toArray full", () => {
+ const buffer = new RingBuffer(3);
+ buffer.add(1);
+ buffer.add(2);
+ buffer.add(3);
+ expect(buffer.size).toEqual(3);
+ expect(buffer.toArray()).toEqual([1, 2, 3]);
+ });
+ it("toArray wrap", () => {
+ const buffer = new RingBuffer(3);
+ buffer.add(1);
+ buffer.add(2);
+ buffer.add(3);
+ buffer.add(4);
+ expect(buffer.toArray()).toEqual([2, 3, 4]);
+ });
+});
+
+describe("BufferedData", () => {
+ it("picks by timestamp", () => {
+ const buffer = new BufferedData(10);
+ buffer.addSample({ x: 0, y: 0, z: 0 }, 0);
+ buffer.addSample({ x: 1, y: 0, z: 0 }, 10);
+ buffer.addSample({ x: 2, y: 0, z: 0 }, 20);
+ buffer.addSample({ x: 3, y: 0, z: 0 }, 30);
+ expect(buffer.getSamples(0)).toEqual({
+ x: [0, 1, 2, 3],
+ y: [0, 0, 0, 0],
+ z: [0, 0, 0, 0],
+ });
+ expect(buffer.getSamples(1)).toEqual({
+ x: [1, 2, 3],
+ y: [0, 0, 0],
+ z: [0, 0, 0],
+ });
+ expect(buffer.getSamples(9)).toEqual({
+ x: [1, 2, 3],
+ y: [0, 0, 0],
+ z: [0, 0, 0],
+ });
+ expect(buffer.getSamples(10)).toEqual({
+ x: [1, 2, 3],
+ y: [0, 0, 0],
+ z: [0, 0, 0],
+ });
+ expect(buffer.getSamples(11)).toEqual({
+ x: [2, 3],
+ y: [0, 0],
+ z: [0, 0],
+ });
+ });
+
+ it("copes when full/wrapping", () => {
+ const buffer = new BufferedData(3);
+ buffer.addSample({ x: 0, y: 0, z: 0 }, 0);
+ buffer.addSample({ x: 1, y: 0, z: 0 }, 10);
+ buffer.addSample({ x: 2, y: 0, z: 0 }, 20);
+ buffer.addSample({ x: 3, y: 0, z: 0 }, 30);
+ expect(buffer.getSamples(0)).toEqual({
+ x: [1, 2, 3],
+ y: [0, 0, 0],
+ z: [0, 0, 0],
+ });
+ });
+
+ it("copes when full/wrapping 2", () => {
+ const buffer = new BufferedData(3);
+ buffer.addSample({ x: 0, y: 0, z: 0 }, 0);
+ buffer.addSample({ x: 1, y: 0, z: 0 }, 10);
+ buffer.addSample({ x: 2, y: 0, z: 0 }, 20);
+ buffer.addSample({ x: 3, y: 0, z: 0 }, 30);
+ buffer.addSample({ x: 4, y: 0, z: 0 }, 40);
+ expect(buffer.getSamples(40)).toEqual({
+ x: [4],
+ y: [0],
+ z: [0],
+ });
+ expect(buffer.getSamples(30)).toEqual({
+ x: [3, 4],
+ y: [0, 0],
+ z: [0, 0],
+ });
+ expect(buffer.getSamples(20)).toEqual({
+ x: [2, 3, 4],
+ y: [0, 0, 0],
+ z: [0, 0, 0],
+ });
+ expect(buffer.getSamples(10)).toEqual({
+ x: [2, 3, 4],
+ y: [0, 0, 0],
+ z: [0, 0, 0],
+ });
+
+ buffer.addSample({ x: 5, y: 0, z: 0 }, 50);
+ buffer.addSample({ x: 6, y: 0, z: 0 }, 60);
+ expect(buffer.getSamples(10)).toEqual({
+ x: [4, 5, 6],
+ y: [0, 0, 0],
+ z: [0, 0, 0],
+ });
+ });
+
+ it("returns nothing when it has nothing since start time", () => {
+ const buffer = new BufferedData(3);
+ buffer.addSample({ x: 0, y: 0, z: 0 }, 0);
+ expect(buffer.getSamples(10)).toEqual({
+ x: [],
+ y: [],
+ z: [],
+ });
+ });
+});
diff --git a/src/buffered-data.ts b/src/buffered-data.ts
new file mode 100644
index 000000000..d18e38eba
--- /dev/null
+++ b/src/buffered-data.ts
@@ -0,0 +1,86 @@
+import { XYZData } from "./model";
+
+export interface TimedXYZ {
+ x: number;
+ y: number;
+ z: number;
+ timestamp: number;
+}
+
+type SampleListener = (v: TimedXYZ) => void;
+
+export class BufferedData {
+ private buffer: RingBuffer;
+ private listeners = new Set();
+
+ constructor(size: number) {
+ this.buffer = new RingBuffer(size);
+ }
+
+ addListener(listener: SampleListener): void {
+ this.listeners.add(listener);
+ }
+
+ removeListener(listener: SampleListener): void {
+ this.listeners.delete(listener);
+ }
+
+ addSample(data: { x: number; y: number; z: number }, timestamp: number) {
+ const sample = { ...data, timestamp };
+ this.buffer.add(sample);
+ if (this.listeners.size) {
+ this.listeners.forEach((l) => l(sample));
+ }
+ }
+
+ getSamples(startTimeMillis: number, endTimeMillis: number = -1): XYZData {
+ const ordered = this.buffer.toArray();
+ const result: XYZData = { x: [], y: [], z: [] };
+ // Go backwards until we have `duration` of samples
+ let start: number;
+ for (
+ start = ordered.length - 1;
+ start >= 0 && ordered[start].timestamp >= startTimeMillis;
+ start--
+ ) {
+ /* empty */
+ }
+
+ for (let i = start + 1; i < ordered.length; ++i) {
+ if (endTimeMillis === -1 || ordered[i].timestamp < endTimeMillis) {
+ result.x.push(ordered[i].x);
+ result.y.push(ordered[i].y);
+ result.z.push(ordered[i].z);
+ }
+ }
+ return result;
+ }
+}
+
+export class RingBuffer {
+ private buffer: T[];
+ private pos: number = 0;
+ size: number = 0;
+
+ constructor(size: number) {
+ this.buffer = new Array(size);
+ }
+
+ add(value: T) {
+ this.buffer[this.pos] = value;
+ if (this.size < this.pos + 1) {
+ this.size = this.pos + 1;
+ }
+ this.pos = (this.pos + 1) % this.buffer.length;
+ }
+
+ toArray() {
+ if (this.size === 0) {
+ return [];
+ }
+ if (this.size < this.buffer.length) {
+ return this.buffer.slice(0, this.size);
+ }
+ return this.buffer.slice(this.pos).concat(this.buffer.slice(0, this.pos));
+ }
+}
diff --git a/src/components/3d-inspector/RecordingInspector.svelte b/src/components/3d-inspector/RecordingInspector.svelte
deleted file mode 100644
index 957359dcb..000000000
--- a/src/components/3d-inspector/RecordingInspector.svelte
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-{#if isOpen}
-
-{/if}
diff --git a/src/components/3d-inspector/View3D.svelte b/src/components/3d-inspector/View3D.svelte
deleted file mode 100644
index 2e13037a4..000000000
--- a/src/components/3d-inspector/View3D.svelte
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-{#if webGlCompatible}
-
-{:else}
-
-
- {$t('compatibility.webgl.notSupported')}
-
-
-{/if}
diff --git a/src/components/3d-inspector/View3DLive.svelte b/src/components/3d-inspector/View3DLive.svelte
deleted file mode 100644
index 1c99df7a7..000000000
--- a/src/components/3d-inspector/View3DLive.svelte
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
diff --git a/src/components/3d-inspector/View3DUnsafe.svelte b/src/components/3d-inspector/View3DUnsafe.svelte
deleted file mode 100644
index ad9ca878c..000000000
--- a/src/components/3d-inspector/View3DUnsafe.svelte
+++ /dev/null
@@ -1,212 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/3d-inspector/View3DUtility.ts b/src/components/3d-inspector/View3DUtility.ts
deleted file mode 100644
index 3d292b4e7..000000000
--- a/src/components/3d-inspector/View3DUtility.ts
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import { writable } from 'svelte/store';
-import * as THREE from 'three';
-import { GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
-
-// TODO: Why is this a class? No methods mutates object state, and
-// only one method uses class state.
-// Refacor to pure functions and simply create the loader where needed
-class Live3DUtility {
- private loader: GLTFLoader;
-
- constructor() {
- this.loader = new GLTFLoader();
- }
-
- // TODO: Fix naming
- createSceneWith(array: THREE.Object3D[]) {
- return new THREE.Scene().add(...array);
- }
-
- instantiateRenderer(canvas: HTMLCanvasElement, width: number, height: number) {
- const renderer = new THREE.WebGLRenderer({ antialias: true, canvas });
- renderer.setClearColor('#ffffff', 0);
- renderer.setSize(width, height);
- renderer.outputColorSpace = THREE.SRGBColorSpace;
- renderer.toneMapping = THREE.ACESFilmicToneMapping;
- renderer.toneMappingExposure = 1.5;
- renderer.setPixelRatio(window.devicePixelRatio);
-
- return renderer;
- }
-
- instantiateLighting() {
- const light1 = new THREE.PointLight(0xffffff, 0.7, 250); // 100, 5000
- light1.position.set(3, 6, 3);
- light1.lookAt(new THREE.Vector3(-3, -6, -3));
-
- const light2 = new THREE.PointLight(0xffffff, 0.7, 250); // 100, 5000
- light2.position.set(5, 0, 5);
- light2.lookAt(new THREE.Vector3(-5, 0, -5));
-
- return this.createSceneWith([light1, light2]);
- }
-
- setupLightingIn(scene: THREE.Scene): void {
- scene.add(this.instantiateLighting());
- }
-
- instantiateCameraSetup(width: number, height: number, perspective = 85) {
- const camera = new THREE.PerspectiveCamera(perspective, width / height, 0.1, 1000);
-
- // Position
- camera.position.z = 5;
- camera.position.x = 5;
- camera.position.y = 4;
-
- // Rotation
- camera.lookAt(new THREE.Vector3(-5, -2, -5));
-
- return camera;
- }
-
- /**
- * Apply pose to a mesh
- * @param mesh to which the pose is applied
- * @param pos the new position
- * @param dir the new direction
- */
- applyPose(
- mesh: THREE.Mesh, // TODO: Fix any
- pos: THREE.Vector3,
- dir: THREE.Vector3,
- ) {
- mesh.position.set(pos.x, pos.y, pos.z);
- mesh.rotation.x = this.toRadian(dir.x);
- mesh.rotation.y = this.toRadian(dir.y);
- mesh.rotation.z = this.toRadian(dir.z);
- }
-
- toRadian(degrees: number) {
- return (degrees / 180) * Math.PI;
- }
-
- instantiateBar(
- color: THREE.ColorRepresentation,
- ): THREE.Mesh {
- const material = new THREE.MeshLambertMaterial({ color });
- const cylinder = new THREE.CylinderGeometry(0.4, 0.4, 2, 16);
- const cylinderMesh = new THREE.Mesh(cylinder, material);
- return cylinderMesh;
- }
-
- /**
- * Instantiate and add three bars to a scene. Used for visualising three data points in 3D
- * @param scene the scene in which the bars should be added
- * @returns The bars
- */
- setupBarsIn(scene: THREE.Scene): Bars {
- const barX = this.instantiateBar(0xff1515);
- const barY = this.instantiateBar(0x10ff10);
- const barZ = this.instantiateBar(0x2222ff);
- scene.add(barX, barY, barZ);
- this.applyPose(barX, new THREE.Vector3(-4, -5, -5), new THREE.Vector3(0, 0, 90));
- this.applyPose(barY, new THREE.Vector3(-5, -5, -4), new THREE.Vector3(90, 0, 0));
- this.applyPose(barZ, new THREE.Vector3(-5, -4, -5), new THREE.Vector3(0, 90, 0));
-
- return { barX, barY, barZ };
- }
-
- async loadMicrobitModel(onProgress?: (event: ProgressEvent) => void) {
- return new Promise((resolve, reject) => {
- // When loaded. Extract the actual model from the loaded model. Rotate it properly. Resolve.
- const onFinished = (gltf: GLTF) => {
- const model = gltf.scene.children[0].children[0].children[0];
- const group = new THREE.Scene();
- group.add(model);
- model.lookAt(0, 0, 1);
- resolve(group);
- };
-
- this.loader.load(
- `${import.meta.env.BASE_URL}models/microbit.gltf`,
- onFinished,
- onProgress,
- reject,
- );
- });
- }
-}
-
-export type Bars = {
- barX: THREE.Mesh;
- barY: THREE.Mesh;
- barZ: THREE.Mesh;
-};
-
-export type Vector3 = {
- x: number;
- y: number;
- z: number;
-};
-
-export default Live3DUtility;
-
-export const graphInspectorState = writable<{
- isOpen: boolean;
- dataPoint: Vector3;
- inspectorPosition: { x: number; y: number };
-}>({
- isOpen: false,
- dataPoint: { x: 0, y: 0, z: 0 },
- inspectorPosition: { x: 0, y: 0 },
-});
diff --git a/src/components/AboutDialog.tsx b/src/components/AboutDialog.tsx
new file mode 100644
index 000000000..3a9520932
--- /dev/null
+++ b/src/components/AboutDialog.tsx
@@ -0,0 +1,161 @@
+import {
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+} from "@chakra-ui/modal";
+import {
+ AspectRatio,
+ Box,
+ Button,
+ HStack,
+ Icon,
+ Image,
+ Link,
+ ModalCloseButton,
+ SimpleGrid,
+ Table,
+ TableCaption,
+ Tbody,
+ Td,
+ Text,
+ Tr,
+ VStack,
+ VisuallyHidden,
+ useClipboard,
+} from "@chakra-ui/react";
+import { ReactNode } from "react";
+import { RiFileCopy2Line, RiGithubFill } from "react-icons/ri";
+import { FormattedMessage, useIntl } from "react-intl";
+import { useDeployment } from "../deployment";
+import aarhusLogo from "../images/aulogo_uk_var2_blue.png";
+import microbitHeartImage from "../images/microbit-heart.png";
+
+interface AboutDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ finalFocusRef?: React.RefObject;
+}
+
+/**
+ * An about dialog with version information.
+ */
+const AboutDialog = ({ isOpen, onClose, finalFocusRef }: AboutDialogProps) => {
+ const { appNameFull, OrgLogo } = useDeployment();
+ const versionInfo = [
+ {
+ name: appNameFull,
+ value: import.meta.env.VITE_VERSION,
+ href: "https://github.com/microbit-foundation/ml-trainer",
+ },
+ ];
+
+ const clipboardVersion = versionInfo
+ .map((x) => `${x.name} ${x.value}`)
+ .join("\n");
+
+ const { hasCopied, onCopy } = useClipboard(clipboardVersion);
+ const intl = useIntl();
+ return (
+
+
+
+
+
+
+
+ {OrgLogo && }
+
+
+
+ (
+
+ {chunks}
+
+ ),
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+ {versionInfo.map((v) => (
+
+ {v.name}
+ {v.value}
+
+ {/* Move padding so we get a reasonable click target. */}
+
+
+ GitHub
+
+
+
+ ))}
+
+
+
+
+
+ }
+ onClick={onCopy}
+ size="md"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AboutDialog;
diff --git a/src/components/ActionBar.tsx b/src/components/ActionBar.tsx
new file mode 100644
index 000000000..d8ed539ff
--- /dev/null
+++ b/src/components/ActionBar.tsx
@@ -0,0 +1,37 @@
+import { BoxProps, HStack } from "@chakra-ui/react";
+import { ReactNode } from "react";
+
+export interface ActionBarProps extends BoxProps {
+ itemsLeft?: ReactNode;
+ itemsCenter?: ReactNode;
+ itemsRight?: ReactNode;
+}
+
+const ActionBar = ({
+ itemsLeft,
+ itemsCenter,
+ itemsRight,
+ ...rest
+}: ActionBarProps) => {
+ return (
+
+
+ {itemsLeft}
+
+ {itemsCenter && {itemsCenter} }
+
+ {itemsRight}
+
+
+ );
+};
+
+export default ActionBar;
diff --git a/src/components/AddDataGridRow.tsx b/src/components/AddDataGridRow.tsx
new file mode 100644
index 000000000..3caeb3853
--- /dev/null
+++ b/src/components/AddDataGridRow.tsx
@@ -0,0 +1,78 @@
+import { GridItem, Text, useDisclosure } from "@chakra-ui/react";
+import { FormattedMessage, useIntl } from "react-intl";
+import { GestureData } from "../model";
+import { useStore } from "../store";
+import AddDataGridWalkThrough from "./AddDataGridWalkThrough";
+import { ConfirmDialog } from "./ConfirmDialog";
+import DataRecordingGridItem from "./DataRecordingGridItem";
+import GestureNameGridItem from "./GestureNameGridItem";
+
+interface AddDataGridRowProps {
+ gesture: GestureData;
+ selected: boolean;
+ onSelectRow: () => void;
+ onRecord: () => void;
+ showWalkThrough: boolean;
+}
+
+const DataSampleGridRow = ({
+ gesture,
+ selected,
+ onSelectRow,
+ onRecord,
+ showWalkThrough,
+}: AddDataGridRowProps) => {
+ const intl = useIntl();
+ const deleteConfirmDisclosure = useDisclosure();
+ const deleteGesture = useStore((s) => s.deleteGesture);
+ return (
+ <>
+
+
+
+ }
+ onConfirm={() => deleteGesture(gesture.ID)}
+ onCancel={deleteConfirmDisclosure.onClose}
+ />
+
+ {showWalkThrough ? (
+
+ ) : (
+ <>
+ {gesture.name.length > 0 || gesture.recordings.length > 0 ? (
+
+ ) : (
+ // Empty grid item to fill column space
+
+ )}
+ >
+ )}
+ >
+ );
+};
+
+export default DataSampleGridRow;
diff --git a/src/components/AddDataGridWalkThrough.tsx b/src/components/AddDataGridWalkThrough.tsx
new file mode 100644
index 000000000..cfc030418
--- /dev/null
+++ b/src/components/AddDataGridWalkThrough.tsx
@@ -0,0 +1,56 @@
+import { GridItem, HStack, Text, VStack } from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import { GestureData } from "../model";
+import DataRecordingGridItem from "./DataRecordingGridItem";
+import GreetingEmojiWithArrow from "./GreetingEmojiWithArrow";
+import UpCurveArrow from "./UpCurveArrow";
+
+interface AddDataGridWalkThrough {
+ gesture: GestureData;
+ onRecord: () => void;
+}
+
+const AddDataGridWalkThrough = ({
+ gesture,
+ onRecord,
+}: AddDataGridWalkThrough) => {
+ return (
+ <>
+ {gesture.name.length === 0 ? (
+
+
+
+
+
+
+
+
+ ) : (
+ <>
+
+ {/* Empty grid item to fill first column of grid */}
+
+
+
+
+
+
+
+
+
+ >
+ )}
+ >
+ );
+};
+
+export default AddDataGridWalkThrough;
diff --git a/src/components/AppLogo.tsx b/src/components/AppLogo.tsx
new file mode 100644
index 000000000..559715961
--- /dev/null
+++ b/src/components/AppLogo.tsx
@@ -0,0 +1,38 @@
+import { As, Divider, HStack } from "@chakra-ui/react";
+import { useDeployment } from "../deployment";
+
+const AppLogo = ({
+ color = "#FFF",
+ as,
+}: {
+ color?: string;
+ beta?: boolean;
+ as?: As;
+}) => {
+ const { AppLogo, OrgLogo } = useDeployment();
+ return (
+
+ {OrgLogo && (
+ <>
+
+
+ >
+ )}
+
+
+ );
+};
+
+export default AppLogo;
diff --git a/src/components/ArrowOne.tsx b/src/components/ArrowOne.tsx
new file mode 100644
index 000000000..d7fd82be1
--- /dev/null
+++ b/src/components/ArrowOne.tsx
@@ -0,0 +1,33 @@
+import { Box, Text } from "@chakra-ui/react";
+
+const ArrowOne = () => {
+ return (
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ );
+};
+
+export default ArrowOne;
diff --git a/src/components/ArrowTwo.tsx b/src/components/ArrowTwo.tsx
new file mode 100644
index 000000000..a4c05f310
--- /dev/null
+++ b/src/components/ArrowTwo.tsx
@@ -0,0 +1,33 @@
+import { Box, Text } from "@chakra-ui/react";
+
+const ArrowTwo = () => {
+ return (
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ );
+};
+export default ArrowTwo;
diff --git a/src/components/BackArrow.tsx b/src/components/BackArrow.tsx
new file mode 100644
index 000000000..80dad60b0
--- /dev/null
+++ b/src/components/BackArrow.tsx
@@ -0,0 +1,12 @@
+import { Icon, IconProps } from "@chakra-ui/react";
+
+const BackArrow = (props: IconProps) => (
+
+
+
+);
+
+export default BackArrow;
diff --git a/src/components/BluetoothPatternInput.tsx b/src/components/BluetoothPatternInput.tsx
new file mode 100644
index 000000000..86388515b
--- /dev/null
+++ b/src/components/BluetoothPatternInput.tsx
@@ -0,0 +1,177 @@
+import {
+ Button,
+ FormControl,
+ FormLabel,
+ Grid,
+ GridItem,
+ NumberInput,
+ NumberInputField,
+ VisuallyHidden,
+} from "@chakra-ui/react";
+import { useCallback, useState } from "react";
+import { FormattedMessage } from "react-intl";
+import {
+ generateMatrix,
+ getHighlightedColumns,
+ transformColumnsToMatrix,
+ transformMatrixToColumns,
+ updateMatrixColumns,
+} from "../bt-pattern-matrix-utils";
+import React from "react";
+
+interface BluetoothPatternInputProps {
+ pattern: boolean[];
+ onChange: (matrix: boolean[]) => void;
+ invalid: boolean;
+}
+
+const matrixDim = 5;
+
+const BluetoothPatternInput = ({
+ pattern,
+ onChange,
+ invalid,
+}: BluetoothPatternInputProps) => {
+ const [highlighted, setHighlighted] = useState(
+ generateMatrix(matrixDim, false)
+ );
+ const matrixColumns = transformMatrixToColumns(pattern, matrixDim);
+
+ const clearHighlighted = useCallback(() => {
+ setHighlighted(generateMatrix(matrixDim, false));
+ }, []);
+
+ const updateMatrix = useCallback(
+ (colIdx: number, rowIdx: number) => {
+ const columns = updateMatrixColumns(matrixColumns, { colIdx, rowIdx });
+ const matrix = transformColumnsToMatrix(columns) as boolean[];
+ onChange(matrix);
+ },
+ [matrixColumns, onChange]
+ );
+
+ const columnInputOnChange = useCallback(
+ (colIdx: number): ((value: string) => void) => {
+ return (v) => {
+ updateMatrix(colIdx, matrixDim - parseInt(v));
+ };
+ },
+ [updateMatrix]
+ );
+
+ return (
+
+ {matrixColumns.map((cells, colIdx) => (
+
+ {cells.map((c, rowIdx) => (
+
+ {
+ clearHighlighted();
+ updateMatrix(colIdx, rowIdx);
+ }}
+ onMouseEnter={() => {
+ setHighlighted(
+ getHighlightedColumns(matrixColumns, { colIdx, rowIdx })
+ );
+ }}
+ onMouseLeave={clearHighlighted}
+ isOn={c}
+ isHighlighted={highlighted[colIdx][rowIdx]}
+ />
+
+ ))}
+
+ c).length}
+ />
+
+
+ ))}
+
+ );
+};
+
+interface PatternBoxProps {
+ isOn: boolean;
+ onClick: () => void;
+ onMouseEnter: () => void;
+ onMouseLeave: () => void;
+ isHighlighted: boolean;
+}
+
+const PatternBox = ({
+ isOn,
+ onClick,
+ onMouseEnter,
+ onMouseLeave,
+ isHighlighted,
+}: PatternBoxProps) => {
+ return (
+
+ );
+};
+
+interface PatternColumnInputProps {
+ colIdx: number;
+ value: number;
+ isInvalid: boolean;
+ onChange: (value: string) => void;
+}
+
+const PatternColumnInput = ({
+ colIdx,
+ value,
+ isInvalid,
+ onChange,
+}: PatternColumnInputProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default BluetoothPatternInput;
diff --git a/src/components/BrokenFirmwareDialog.tsx b/src/components/BrokenFirmwareDialog.tsx
new file mode 100644
index 000000000..078e23848
--- /dev/null
+++ b/src/components/BrokenFirmwareDialog.tsx
@@ -0,0 +1,110 @@
+import {
+ Button,
+ HStack,
+ Heading,
+ Icon,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { ReactNode } from "react";
+import { RiExternalLinkLine } from "react-icons/ri";
+import { FormattedMessage } from "react-intl";
+import Link from "./Link";
+
+interface BrokenFirmwareDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ onTryAgain: () => void;
+ onSkip: () => void;
+}
+
+const BrokenFirmwareDialog = ({
+ isOpen,
+ onClose,
+ onSkip,
+ onTryAgain,
+}: BrokenFirmwareDialogProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (
+
+ {chunks}
+
+ ),
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default BrokenFirmwareDialog;
diff --git a/src/components/CertaintyThresholdGridItem.tsx b/src/components/CertaintyThresholdGridItem.tsx
new file mode 100644
index 000000000..90dd5557c
--- /dev/null
+++ b/src/components/CertaintyThresholdGridItem.tsx
@@ -0,0 +1,123 @@
+import {
+ Card,
+ CardBody,
+ GridItem,
+ HStack,
+ Slider,
+ SliderFilledTrack,
+ SliderMark,
+ SliderThumb,
+ SliderTrack,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { useCallback, useMemo } from "react";
+import { FormattedMessage, useIntl } from "react-intl";
+import { tourElClassname } from "../tours";
+import PercentageDisplay from "./PercentageDisplay";
+import PercentageMeter from "./PercentageMeter";
+
+const markClass = "CertaintyThresholdGridItem--mark";
+
+interface CertaintyThresholdGridItemProps {
+ requiredConfidence?: number;
+ currentConfidence?: number;
+ onThresholdChange: (val: number) => void;
+ isTriggered: boolean;
+}
+
+const CertaintyThresholdGridItem = ({
+ requiredConfidence = 0,
+ currentConfidence = 0,
+ onThresholdChange,
+ isTriggered,
+}: CertaintyThresholdGridItemProps) => {
+ const intl = useIntl();
+ const barWidth = 240;
+ const colorScheme = useMemo(
+ () => (isTriggered ? "brand2.500" : undefined),
+ [isTriggered]
+ );
+
+ const handleThresholdChange = useCallback(
+ (val: number) => onThresholdChange(val * 0.01),
+ [onThresholdChange]
+ );
+ const sliderValue = requiredConfidence * 100;
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {sliderValue.toFixed(0)}%
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default CertaintyThresholdGridItem;
diff --git a/src/components/ClickableTooltip.tsx b/src/components/ClickableTooltip.tsx
new file mode 100644
index 000000000..b23cca6d1
--- /dev/null
+++ b/src/components/ClickableTooltip.tsx
@@ -0,0 +1,26 @@
+import { Flex, Tooltip, TooltipProps, useDisclosure } from "@chakra-ui/react";
+import { ReactNode } from "react";
+
+interface ClickableTooltipProps extends TooltipProps {
+ children: ReactNode;
+}
+
+// Chakra Tooltip doesn't support triggering on mobile/tablets:
+// https://github.com/chakra-ui/chakra-ui/issues/2691
+
+const ClickableTooltip = ({ children, ...rest }: ClickableTooltipProps) => {
+ const label = useDisclosure();
+ return (
+
+
+ {children}
+
+
+ );
+};
+
+export default ClickableTooltip;
diff --git a/src/components/CodeViewCard.tsx b/src/components/CodeViewCard.tsx
new file mode 100644
index 000000000..6455b3651
--- /dev/null
+++ b/src/components/CodeViewCard.tsx
@@ -0,0 +1,45 @@
+import { Card, SkeletonText, VStack } from "@chakra-ui/react";
+import {
+ BlockLayout,
+ MakeCodeBlocksRendering,
+ Project,
+} from "@microbit/makecode-embed/react";
+import { memo } from "react";
+import { tourElClassname } from "../tours";
+
+interface CodeViewCardProps {
+ project: Project;
+}
+
+const CodeViewCard = ({ project }: CodeViewCardProps) => {
+ return (
+
+
+
+ }
+ />
+
+
+ );
+};
+
+export default memo(CodeViewCard);
diff --git a/src/components/CodeViewGridItem.tsx b/src/components/CodeViewGridItem.tsx
new file mode 100644
index 000000000..755717f61
--- /dev/null
+++ b/src/components/CodeViewGridItem.tsx
@@ -0,0 +1,64 @@
+import { Box, Card, GridItem, SkeletonText } from "@chakra-ui/react";
+import {
+ BlockLayout,
+ MakeCodeBlocksRendering,
+} from "@microbit/makecode-embed/react";
+import { memo, useMemo } from "react";
+import { generateProject } from "../makecode/utils";
+import { GestureData } from "../model";
+import { useStore } from "../store";
+import { tourElClassname } from "../tours";
+
+interface CodeViewGridItemProps {
+ gesture: GestureData;
+ projectEdited: boolean;
+}
+
+const CodeViewGridItem = ({
+ gesture,
+ projectEdited,
+}: CodeViewGridItemProps) => {
+ const model = useStore((s) => s.model);
+ const gestures = useStore((s) => s.gestures);
+ const project = useMemo(
+ () => generateProject({ data: gestures }, model, gesture),
+ [gesture, gestures, model]
+ );
+ const width = useMemo(
+ () => `${120 + gesture.name.length * 5}px`,
+ [gesture.name.length]
+ );
+ return (
+
+ {!projectEdited && (
+
+
+
+ }
+ />
+
+
+ )}
+
+ );
+};
+
+export default memo(CodeViewGridItem);
diff --git a/src/components/ConfirmDialog.tsx b/src/components/ConfirmDialog.tsx
new file mode 100644
index 000000000..972b4bde0
--- /dev/null
+++ b/src/components/ConfirmDialog.tsx
@@ -0,0 +1,73 @@
+/**
+ * (c) 2021, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { Button } from "@chakra-ui/button";
+import {
+ AlertDialog,
+ AlertDialogBody,
+ AlertDialogContent,
+ AlertDialogFooter,
+ AlertDialogHeader,
+ AlertDialogOverlay,
+} from "@chakra-ui/modal";
+import { Heading } from "@chakra-ui/react";
+import { ReactNode, useRef } from "react";
+import { useIntl } from "react-intl";
+
+export interface ConfirmDialogProps {
+ isOpen: boolean;
+ heading: ReactNode;
+ body: ReactNode;
+ onConfirm: () => void;
+ onCancel: () => void;
+ confirmText?: string;
+ cancelText?: string;
+}
+
+export const ConfirmDialog = ({
+ isOpen,
+ heading,
+ body,
+ onConfirm,
+ onCancel,
+ confirmText,
+ cancelText,
+}: ConfirmDialogProps) => {
+ const intl = useIntl();
+ confirmText = confirmText ?? intl.formatMessage({ id: "confirm-action" });
+ cancelText = cancelText ?? intl.formatMessage({ id: "cancel-action" });
+ const leastDestructiveRef = useRef(null);
+ return (
+
+
+
+
+
+ {heading}
+
+
+ {body}
+
+
+ {cancelText}
+
+
+ {confirmText}
+
+
+
+
+
+ );
+};
diff --git a/src/components/ConnectBatteryDialog.tsx b/src/components/ConnectBatteryDialog.tsx
new file mode 100644
index 000000000..e23d5bc93
--- /dev/null
+++ b/src/components/ConnectBatteryDialog.tsx
@@ -0,0 +1,52 @@
+import { Icon, Image, Link, Text, VStack } from "@chakra-ui/react";
+import { RiExternalLinkLine } from "react-icons/ri";
+import { FormattedMessage } from "react-intl";
+import { useDeployment } from "../deployment";
+import microbitConnectedImage from "../images/stylised-microbit-connected.svg";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+
+export interface ConnectBatteryDialogProps
+ extends Omit {}
+
+const ConnectBatteryDialog = ({ ...props }: ConnectBatteryDialogProps) => {
+ const { supportLinks } = useDeployment();
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ConnectBatteryDialog;
diff --git a/src/components/ConnectCableDialog.tsx b/src/components/ConnectCableDialog.tsx
new file mode 100644
index 000000000..ce6ebd515
--- /dev/null
+++ b/src/components/ConnectCableDialog.tsx
@@ -0,0 +1,104 @@
+import { Button, Image, Text, VStack } from "@chakra-ui/react";
+import { FormattedMessage, useIntl } from "react-intl";
+import connectCableImage from "../images/connect-cable.gif";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+import { ConnectionFlowType } from "../connection-stage-hooks";
+import { stage } from "../environment";
+
+type LinkType = "switch" | "skip" | "none";
+interface Config {
+ headingId: string;
+ subtitleId: string;
+ linkTextId?: string;
+ linkType?: LinkType;
+}
+
+export const getConnectionCableDialogConfig = (
+ flowType: ConnectionFlowType,
+ isWebBluetoothSupported: boolean
+): Config => {
+ switch (flowType) {
+ case ConnectionFlowType.ConnectBluetooth:
+ return {
+ headingId: "connectMB.connectCable.heading",
+ subtitleId: "connectMB.connectCable.subtitle",
+ linkTextId: "connectMB.connectCable.skip",
+ linkType: "skip",
+ };
+ case ConnectionFlowType.ConnectRadioRemote:
+ return {
+ headingId: "connectMB.connectCableMB1.heading",
+ subtitleId: "connectMB.connectCableMB1.subtitle",
+ ...(stage === "local"
+ ? {
+ linkTextId: "connectMB.connectCable.skip",
+ linkType: "skip",
+ }
+ : {}),
+ };
+ case ConnectionFlowType.ConnectRadioBridge:
+ return {
+ headingId: "connectMB.connectCableMB2.heading",
+ subtitleId: "connectMB.connectCableMB2.subtitle",
+ ...(isWebBluetoothSupported
+ ? {
+ linkTextId: "connectMB.radioStart.switchBluetooth",
+ linkType: "switch",
+ }
+ : {}),
+ };
+ }
+};
+
+export interface ConnectCableDialogProps
+ extends Omit {
+ config: Config;
+ onSkip?: () => void;
+ onSwitch?: () => void;
+}
+
+const ConnectCableDialog = ({
+ config,
+ onSkip,
+ onSwitch,
+ ...props
+}: ConnectCableDialogProps) => {
+ const { subtitleId, linkType, linkTextId, headingId } = config;
+ const intl = useIntl();
+ return (
+
+
+
+ )
+ }
+ >
+
+
+
+
+
+
+
+ );
+};
+
+export default ConnectCableDialog;
diff --git a/src/components/ConnectContainerDialog.tsx b/src/components/ConnectContainerDialog.tsx
new file mode 100644
index 000000000..937d891c1
--- /dev/null
+++ b/src/components/ConnectContainerDialog.tsx
@@ -0,0 +1,84 @@
+import {
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+} from "@chakra-ui/modal";
+import {
+ Button,
+ HStack,
+ Heading,
+ ModalCloseButton,
+ VStack,
+} from "@chakra-ui/react";
+import { ReactNode } from "react";
+import { FormattedMessage } from "react-intl";
+
+export interface ConnectContainerDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ headingId: string;
+ footerLeft?: ReactNode;
+ onNextClick?: () => void;
+ children: ReactNode;
+ onBackClick?: () => void;
+ additionalActions?: ReactNode;
+}
+
+const ConnectContainerDialog = ({
+ isOpen,
+ onClose,
+ headingId,
+ footerLeft,
+ onNextClick,
+ onBackClick,
+ additionalActions,
+ children,
+}: ConnectContainerDialogProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+ {children}
+
+
+
+ {footerLeft && footerLeft}
+
+ {onBackClick && (
+
+
+
+ )}
+ {additionalActions}
+ {onNextClick && (
+
+
+
+ )}
+
+
+
+
+
+ );
+};
+
+export default ConnectContainerDialog;
diff --git a/src/components/ConnectErrorDialog.tsx b/src/components/ConnectErrorDialog.tsx
new file mode 100644
index 000000000..79c8a1c8f
--- /dev/null
+++ b/src/components/ConnectErrorDialog.tsx
@@ -0,0 +1,144 @@
+import {
+ Button,
+ HStack,
+ Heading,
+ ListItem,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+ Text,
+ UnorderedList,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import {
+ ConnectionFlowStep,
+ ConnectionFlowType,
+} from "../connection-stage-hooks";
+import ExternalLink from "./ExternalLink";
+import { useDeployment } from "../deployment";
+
+interface ConnectErrorDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ onConnect: () => void;
+ flowType: ConnectionFlowType;
+ errorStep:
+ | ConnectionFlowStep.ConnectFailed
+ | ConnectionFlowStep.ReconnectFailed
+ | ConnectionFlowStep.ConnectionLost;
+}
+
+const contentConfig = {
+ [ConnectionFlowType.ConnectBluetooth]: {
+ listHeading: "disconnectedWarning.bluetooth2",
+ bullets: [
+ "disconnectedWarning.bluetooth3",
+ "disconnectedWarning.bluetooth4",
+ ],
+ },
+ [ConnectionFlowType.ConnectRadioBridge]: {
+ listHeading: "connectMB.usbTryAgain.replugMicrobit2",
+ bullets: [
+ "connectMB.usbTryAgain.replugMicrobit3",
+ "connectMB.usbTryAgain.replugMicrobit4",
+ ],
+ },
+ [ConnectionFlowType.ConnectRadioRemote]: {
+ listHeading: "disconnectedWarning.bluetooth2",
+ bullets: [
+ "disconnectedWarning.bluetooth3",
+ "disconnectedWarning.bluetooth4",
+ ],
+ },
+};
+
+const errorTextIdPrefixConfig = {
+ [ConnectionFlowStep.ConnectionLost]: "disconnectedWarning",
+ [ConnectionFlowStep.ReconnectFailed]: "reconnectFailed",
+ [ConnectionFlowStep.ConnectFailed]: "connectFailed",
+};
+
+const ReconnectErrorDialog = ({
+ isOpen,
+ onClose,
+ onConnect,
+ flowType,
+ errorStep,
+}: ConnectErrorDialogProps) => {
+ const { supportLinks } = useDeployment();
+ const errorTextIdPrefix = errorTextIdPrefixConfig[errorStep];
+ const flowTypeText = {
+ [ConnectionFlowType.ConnectBluetooth]: "bluetooth",
+ [ConnectionFlowType.ConnectRadioBridge]: "bridge",
+ [ConnectionFlowType.ConnectRadioRemote]: "remote",
+ }[flowType];
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {contentConfig[flowType].bullets.map((textId) => (
+
+
+
+
+
+ ))}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ReconnectErrorDialog;
diff --git a/src/components/ConnectRadioDataCollectionMicrobitDialog.tsx b/src/components/ConnectRadioDataCollectionMicrobitDialog.tsx
new file mode 100644
index 000000000..6c285a2bf
--- /dev/null
+++ b/src/components/ConnectRadioDataCollectionMicrobitDialog.tsx
@@ -0,0 +1,50 @@
+import { HStack, Image, Text, VStack } from "@chakra-ui/react";
+import { FormattedMessage, useIntl } from "react-intl";
+import connectCable from "../images/connect-cable.gif";
+import microbitOnWrist from "../images/stylised-microbit-on-wrist.svg";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+
+export interface ConnectRadioDataCollectionMicrobitDialogProps
+ extends Omit {}
+
+const ConnectRadioDataCollectionMicrobitDialog = ({
+ ...props
+}: ConnectRadioDataCollectionMicrobitDialogProps) => {
+ const intl = useIntl();
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ConnectRadioDataCollectionMicrobitDialog;
diff --git a/src/components/ConnectToRecordDialog.tsx b/src/components/ConnectToRecordDialog.tsx
new file mode 100644
index 000000000..0b35d89ec
--- /dev/null
+++ b/src/components/ConnectToRecordDialog.tsx
@@ -0,0 +1,58 @@
+import {
+ Button,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalFooter,
+ ModalHeader,
+ ModalOverlay,
+ Text,
+} from "@chakra-ui/react";
+import { ComponentProps, useCallback } from "react";
+import { FormattedMessage } from "react-intl";
+import { useConnectionStage } from "../connection-stage-hooks";
+
+const ConnectToRecordDialog = ({
+ onClose,
+ ...rest
+}: Omit, "children">) => {
+ const { actions } = useConnectionStage();
+
+ const handleConnect = useCallback(() => {
+ onClose();
+ actions.startConnect();
+ }, [actions, onClose]);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ConnectToRecordDialog;
diff --git a/src/components/ConnectionFlowDialogs.tsx b/src/components/ConnectionFlowDialogs.tsx
new file mode 100644
index 000000000..cdf7f09cd
--- /dev/null
+++ b/src/components/ConnectionFlowDialogs.tsx
@@ -0,0 +1,248 @@
+import { useDisclosure } from "@chakra-ui/react";
+import { useCallback, useEffect, useState } from "react";
+import {
+ ConnectionFlowStep,
+ ConnectionFlowType,
+ ConnectionStage,
+ useConnectionStage,
+} from "../connection-stage-hooks";
+import BrokenFirmwareDialog from "./BrokenFirmwareDialog";
+import ConnectBatteryDialog from "./ConnectBatteryDialog";
+import ConnectCableDialog, {
+ getConnectionCableDialogConfig,
+} from "./ConnectCableDialog";
+import ConnectErrorDialog from "./ConnectErrorDialog";
+import DownloadProgressDialog, { getHeadingId } from "./DownloadProgressDialog";
+import EnterBluetoothPatternDialog from "./EnterBluetoothPatternDialog";
+import LoadingDialog from "./LoadingDialog";
+import ManualFlashingDialog from "./ManualFlashingDialog";
+import SelectMicrobitBluetoothDialog from "./SelectMicrobitBluetoothDialog";
+import SelectMicrobitUsbDialog from "./SelectMicrobitUsbDialog";
+import TryAgainDialog from "./TryAgainDialog";
+import UnsupportedMicrobitDialog from "./UnsupportedMicrobitDialog";
+import WebUsbBluetoothUnsupportedDialog from "./WebUsbBluetoothUnsupportedDialog";
+import WhatYouWillNeedDialog from "./WhatYouWillNeedDialog";
+import { bluetoothUniversalHex } from "../connection-stage-actions";
+
+const ConnectionDialogs = () => {
+ const { stage, actions } = useConnectionStage();
+ const [flashProgress, setFlashProgress] = useState(0);
+ const { isOpen, onClose: onCloseDialog, onOpen } = useDisclosure();
+ const [microbitName, setMicrobitName] = useState(
+ stage.bluetoothMicrobitName
+ );
+ const onClose = useCallback(() => {
+ actions.setFlowStep(ConnectionFlowStep.None);
+ onCloseDialog();
+ }, [actions, onCloseDialog]);
+
+ useEffect(() => {
+ if (stage.flowStep !== ConnectionFlowStep.None && !isOpen) {
+ onOpen();
+ }
+ if (stage.flowStep === ConnectionFlowStep.None && isOpen) {
+ onClose();
+ }
+ }, [isOpen, onClose, onOpen, stage]);
+
+ const progressCallback = useCallback(
+ (progress: number) => {
+ if (stage.flowStep !== ConnectionFlowStep.FlashingInProgress) {
+ actions.setFlowStep(ConnectionFlowStep.FlashingInProgress);
+ }
+ setFlashProgress(progress * 100);
+ },
+ [actions, stage.flowStep]
+ );
+
+ const onChangeMicrobitName = useCallback(
+ (name: string) => {
+ actions.onChangeMicrobitName(name);
+ setMicrobitName(name);
+ },
+ [actions]
+ );
+
+ const onFlashSuccess = useCallback((newStage: ConnectionStage) => {
+ // Inferring microbit name saves the user from entering the pattern
+ // for bluetooth connection flow
+ if (newStage.bluetoothMicrobitName) {
+ setMicrobitName(newStage.bluetoothMicrobitName);
+ }
+ }, []);
+
+ async function connectAndFlash(): Promise {
+ await actions.connectAndflashMicrobit(progressCallback, onFlashSuccess);
+ }
+ const onSkip = useCallback(
+ () => actions.setFlowStep(ConnectionFlowStep.ConnectBattery),
+ [actions]
+ );
+ const onInstructManualFlashing = useCallback(
+ () => actions.setFlowStep(ConnectionFlowStep.ManualFlashingTutorial),
+ [actions]
+ );
+
+ const dialogCommonProps = { isOpen, onClose };
+
+ switch (stage.flowStep) {
+ case ConnectionFlowStep.ReconnectFailedTwice:
+ case ConnectionFlowStep.Start: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.ConnectCable: {
+ const config = getConnectionCableDialogConfig(
+ stage.flowType,
+ stage.isWebBluetoothSupported
+ );
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.WebUsbFlashingTutorial: {
+ return (
+
+ );
+ }
+ // Only bluetooth mode has this fallback, the radio bridge mode requires working WebUSB.
+ case ConnectionFlowStep.ManualFlashingTutorial: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.ConnectBattery: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.EnterBluetoothPattern: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.ConnectBluetoothTutorial: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.WebUsbChooseMicrobit: {
+ // Browser dialog is shown, no custom dialog shown at the same time
+ return <>>;
+ }
+ case ConnectionFlowStep.FlashingInProgress: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.ConnectingBluetooth: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.ConnectingMicrobits: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.TryAgainBluetoothSelectMicrobit:
+ case ConnectionFlowStep.TryAgainReplugMicrobit:
+ case ConnectionFlowStep.TryAgainWebUsbSelectMicrobit:
+ case ConnectionFlowStep.TryAgainCloseTabs: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.BadFirmware: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.MicrobitUnsupported: {
+ return (
+
+ );
+ }
+ case ConnectionFlowStep.WebUsbBluetoothUnsupported: {
+ return ;
+ }
+ case ConnectionFlowStep.ConnectFailed:
+ case ConnectionFlowStep.ReconnectFailed:
+ case ConnectionFlowStep.ConnectionLost: {
+ return (
+
+ );
+ }
+ }
+};
+
+export default ConnectionDialogs;
diff --git a/src/components/DataRecordingGridItem.tsx b/src/components/DataRecordingGridItem.tsx
new file mode 100644
index 000000000..df4ad3a52
--- /dev/null
+++ b/src/components/DataRecordingGridItem.tsx
@@ -0,0 +1,107 @@
+import {
+ Card,
+ CardBody,
+ CloseButton,
+ GridItem,
+ HStack,
+ Icon,
+ IconButton,
+} from "@chakra-ui/react";
+import { useCallback, useRef } from "react";
+import { useIntl } from "react-intl";
+import { useConnectionStage } from "../connection-stage-hooks";
+import RecordIcon from "../images/record-icon.svg?react";
+import { GestureData } from "../model";
+import { useStore } from "../store";
+import { tourElClassname } from "../tours";
+import RecordingGraph from "./RecordingGraph";
+
+interface DataRecordingGridItemProps {
+ data: GestureData;
+ selected: boolean;
+ onSelectRow?: () => void;
+ onRecord: () => void;
+}
+
+const DataRecordingGridItem = ({
+ data,
+ selected,
+ onSelectRow,
+ onRecord,
+}: DataRecordingGridItemProps) => {
+ const intl = useIntl();
+ const deleteGestureRecording = useStore((s) => s.deleteGestureRecording);
+ const closeRecordingDialogFocusRef = useRef(null);
+ const { isConnected } = useConnectionStage();
+
+ const handleDeleteRecording = useCallback(
+ (idx: number) => {
+ deleteGestureRecording(data.ID, idx);
+ },
+ [data.ID, deleteGestureRecording]
+ );
+
+ return (
+ <>
+
+
+
+
+
+ }
+ />
+
+ {data.recordings.map((recording, idx) => (
+
+ {
+ handleDeleteRecording(idx);
+ }}
+ />
+
+
+ ))}
+
+
+
+ >
+ );
+};
+
+export default DataRecordingGridItem;
diff --git a/src/components/DataSampleGridView.tsx b/src/components/DataSampleGridView.tsx
new file mode 100644
index 000000000..f549ea865
--- /dev/null
+++ b/src/components/DataSampleGridView.tsx
@@ -0,0 +1,165 @@
+import {
+ Button,
+ Grid,
+ GridProps,
+ Text,
+ useDisclosure,
+ VStack,
+} from "@chakra-ui/react";
+import { ButtonEvent } from "@microbit/microbit-connection";
+import { ReactNode, useEffect, useMemo, useRef, useState } from "react";
+import { useConnectActions } from "../connect-actions-hooks";
+import { useConnectionStage } from "../connection-stage-hooks";
+import { GestureData } from "../model";
+import { useStore } from "../store";
+import DataSampleGridRow from "./AddDataGridRow";
+import DataSamplesMenu from "./DataSamplesMenu";
+import HeadingGrid, { GridColumnHeadingItemProps } from "./HeadingGrid";
+import LoadProjectInput, { LoadProjectInputRef } from "./LoadProjectInput";
+import RecordingDialog from "./RecordingDialog";
+import ConnectToRecordDialog from "./ConnectToRecordDialog";
+import { FormattedMessage } from "react-intl";
+
+const gridCommonProps: Partial = {
+ gridTemplateColumns: "290px 1fr",
+ gap: 3,
+ px: 5,
+ w: "100%",
+};
+
+const headings: GridColumnHeadingItemProps[] = [
+ {
+ titleId: "content.data.classification",
+ descriptionId: "content.data.classHelpBody",
+ },
+ {
+ titleId: "content.data.data",
+ descriptionId: "content.data.dataDescription",
+ itemsRight: ,
+ },
+];
+
+const DataSamplesGridView = () => {
+ const gestures = useStore((s) => s.gestures);
+ const [selectedGestureIdx, setSelectedGestureIdx] = useState(0);
+ const selectedGesture: GestureData | undefined =
+ gestures[selectedGestureIdx] ?? gestures[0];
+
+ const showWalkThrough = useMemo(
+ () =>
+ gestures.length === 0 ||
+ (gestures.length === 1 && gestures[0].recordings.length === 0),
+ [gestures]
+ );
+ const { isOpen, onClose, onOpen } = useDisclosure();
+ const connectToRecordDialogDisclosure = useDisclosure();
+
+ const connection = useConnectActions();
+ const { actions } = useConnectionStage();
+ const { isConnected } = useConnectionStage();
+ const loadProjectInputRef = useRef(null);
+
+ useEffect(() => {
+ const listener = (e: ButtonEvent) => {
+ if (!isOpen) {
+ if (e.state) {
+ onOpen();
+ }
+ }
+ };
+ connection.addButtonListener("B", listener);
+ return () => {
+ connection.removeButtonListener("B", listener);
+ };
+ }, [connection, isOpen, onOpen]);
+
+ return (
+ <>
+
+ {selectedGesture && (
+
+ )}
+
+ {gestures.length === 0 ? (
+
+
+
+
+
+ {!isConnected && (
+
+ (
+
+ {chunks}
+
+ ),
+ link2: (chunks: ReactNode) => (
+ loadProjectInputRef.current?.chooseFile()}
+ >
+ {chunks}
+
+ ),
+ }}
+ />
+
+ )}
+
+ ) : (
+
+ {gestures.map((g, idx) => (
+ setSelectedGestureIdx(idx)}
+ onRecord={
+ isConnected ? onOpen : connectToRecordDialogDisclosure.onOpen
+ }
+ showWalkThrough={showWalkThrough}
+ />
+ ))}
+
+ )}
+ >
+ );
+};
+
+export default DataSamplesGridView;
diff --git a/src/components/DataSamplesMenu.tsx b/src/components/DataSamplesMenu.tsx
new file mode 100644
index 000000000..2bccdba6b
--- /dev/null
+++ b/src/components/DataSamplesMenu.tsx
@@ -0,0 +1,52 @@
+import {
+ Icon,
+ IconButton,
+ Menu,
+ MenuButton,
+ MenuItem,
+ MenuList,
+ Portal,
+} from "@chakra-ui/react";
+import { MdMoreVert } from "react-icons/md";
+import { FormattedMessage, useIntl } from "react-intl";
+import LoadProjectMenuItem from "./LoadProjectMenuItem";
+import {
+ RiDeleteBin2Line,
+ RiDownload2Line,
+ RiUpload2Line,
+} from "react-icons/ri";
+import { useStore } from "../store";
+
+const DataSamplesMenu = () => {
+ const intl = useIntl();
+ const downloadDataSet = useStore((s) => s.downloadDataset);
+ const deleteAllGestures = useStore((s) => s.deleteAllGestures);
+ return (
+
+ }
+ isRound
+ />
+
+
+ } accept=".json">
+
+
+ } onClick={downloadDataSet}>
+
+
+ } onClick={deleteAllGestures}>
+
+
+
+
+
+ );
+};
+
+export default DataSamplesMenu;
diff --git a/src/components/DefaultPageLayout.tsx b/src/components/DefaultPageLayout.tsx
new file mode 100644
index 000000000..0dfeed31f
--- /dev/null
+++ b/src/components/DefaultPageLayout.tsx
@@ -0,0 +1,242 @@
+import {
+ Button,
+ Flex,
+ Heading,
+ HStack,
+ Icon,
+ IconButton,
+ MenuDivider,
+ MenuItem,
+ useToast,
+ VStack,
+} from "@chakra-ui/react";
+import { ReactNode, useCallback, useEffect } from "react";
+import { RiDownload2Line, RiHome2Line } from "react-icons/ri";
+import { FormattedMessage, useIntl } from "react-intl";
+import { useNavigate } from "react-router";
+import { useDeployment } from "../deployment";
+import { flags } from "../flags";
+import { useProject } from "../hooks/project-hooks";
+import { SaveStep, TrainModelDialogStage } from "../model";
+import { SessionPageId } from "../pages-config";
+import Tour from "../pages/Tour";
+import { useStore } from "../store";
+import { createHomePageUrl, createSessionPageUrl } from "../urls";
+import ActionBar from "./ActionBar";
+import AppLogo from "./AppLogo";
+import ConnectionDialogs from "./ConnectionFlowDialogs";
+import DownloadDialogs from "./DownloadDialogs";
+import HelpMenu from "./HelpMenu";
+import LanguageMenuItem from "./LanguageMenuItem";
+import PreReleaseNotice from "./PreReleaseNotice";
+import SaveDialogs from "./SaveDialogs";
+import SettingsMenu from "./SettingsMenu";
+import ToolbarMenu from "./ToolbarMenu";
+import TrainModelDialogs from "./TrainModelFlowDialogs";
+import ProjectDropTarget from "./ProjectDropTarget";
+import React from "react";
+import {
+ ConnectionFlowStep,
+ useConnectionStage,
+} from "../connection-stage-hooks";
+
+interface DefaultPageLayoutProps {
+ titleId?: string;
+ children: ReactNode;
+ toolbarItemsLeft?: ReactNode;
+ toolbarItemsRight?: ReactNode;
+ menuItems?: ReactNode;
+ showPageTitle?: boolean;
+}
+
+const DefaultPageLayout = ({
+ titleId,
+ children,
+ menuItems,
+ toolbarItemsLeft,
+ toolbarItemsRight,
+ showPageTitle = false,
+}: DefaultPageLayoutProps) => {
+ const intl = useIntl();
+ const navigate = useNavigate();
+ const isEditorOpen = useStore((s) => s.isEditorOpen);
+ const isTourClosed = useStore((s) => s.tourState === undefined);
+ const isTrainDialogClosed = useStore(
+ (s) => s.trainModelDialogStage === TrainModelDialogStage.Closed
+ );
+ const { stage } = useConnectionStage();
+ const isConnectionDialogClosed = stage.flowStep === ConnectionFlowStep.None;
+ const isSaveDialogClosed = useStore((s) => s.save.step === SaveStep.None);
+
+ const toast = useToast();
+ const { appNameFull } = useDeployment();
+
+ useEffect(() => {
+ document.title = titleId
+ ? `${intl.formatMessage({ id: titleId })} | ${appNameFull}`
+ : appNameFull;
+ }, [appNameFull, intl, titleId]);
+
+ useEffect(() => {
+ return useStore.subscribe(
+ (
+ { projectLoadTimestamp },
+ { projectLoadTimestamp: prevProjectLoadTimestamp }
+ ) => {
+ if (projectLoadTimestamp > prevProjectLoadTimestamp) {
+ // Side effects of loading a project, which MakeCode notifies us of.
+ navigate(createSessionPageUrl(SessionPageId.DataSamples));
+ toast({
+ position: "top",
+ duration: 5_000,
+ title: intl.formatMessage({ id: "project-loaded" }),
+ status: "info",
+ });
+ }
+ }
+ );
+ }, [intl, navigate, toast]);
+
+ const ProjectDropTargetWhenNeeded =
+ isTrainDialogClosed &&
+ isTourClosed &&
+ isConnectionDialogClosed &&
+ isSaveDialogClosed
+ ? ProjectDropTarget
+ : React.Fragment;
+
+ return (
+ <>
+ {/* Suppress dialogs to prevent overlapping dialogs */}
+ {!isEditorOpen &&
+ isTrainDialogClosed &&
+ isTourClosed &&
+ isSaveDialogClosed && }
+ {!isEditorOpen && }
+ {!isEditorOpen && }
+
+
+
+
+
+
+ {showPageTitle && (
+
+
+
+ )}
+ >
+ }
+ itemsLeft={toolbarItemsLeft || }
+ itemsRight={
+ <>
+
+ {toolbarItemsRight}
+
+
+
+
+ {menuItems}
+
+
+ >
+ }
+ />
+ {flags.preReleaseNotice && }
+
+
+ {children}
+
+
+
+ >
+ );
+};
+
+export const ProjectToolbarItems = () => {
+ const { saveHex } = useProject();
+ const handleSave = useCallback(() => {
+ void saveHex();
+ }, [saveHex]);
+
+ return (
+ <>
+ }
+ onClick={handleSave}
+ >
+
+
+
+ >
+ );
+};
+
+export const HomeToolbarItem = () => {
+ const intl = useIntl();
+ const navigate = useNavigate();
+ const handleHomeClick = useCallback(() => {
+ navigate(createHomePageUrl());
+ }, [navigate]);
+ return (
+ }
+ aria-label={intl.formatMessage({ id: "homepage.Link" })}
+ variant="plain"
+ size="lg"
+ fontSize="xl"
+ />
+ );
+};
+
+export const ProjectMenuItems = () => {
+ const { saveHex } = useProject();
+ const handleSave = useCallback(() => {
+ void saveHex();
+ }, [saveHex]);
+
+ return (
+ <>
+ }
+ >
+
+
+
+
+ >
+ );
+};
+
+export const HomeMenuItem = () => {
+ const navigate = useNavigate();
+ const handleHomeClick = useCallback(() => {
+ navigate(createHomePageUrl());
+ }, [navigate]);
+ return (
+ }
+ >
+
+
+ );
+};
+
+export default DefaultPageLayout;
diff --git a/src/components/DialogHeading.svelte b/src/components/DialogHeading.svelte
deleted file mode 100644
index b50e20ea7..000000000
--- a/src/components/DialogHeading.svelte
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
diff --git a/src/components/DownloadChooseMicrobitDialog.tsx b/src/components/DownloadChooseMicrobitDialog.tsx
new file mode 100644
index 000000000..874e49529
--- /dev/null
+++ b/src/components/DownloadChooseMicrobitDialog.tsx
@@ -0,0 +1,156 @@
+import {
+ Box,
+ HStack,
+ Icon,
+ Image,
+ Text,
+ useRadio,
+ useRadioGroup,
+ UseRadioProps,
+ VStack,
+} from "@chakra-ui/react";
+import { useCallback, useState } from "react";
+import { RiCheckboxBlankLine, RiCheckboxFill } from "react-icons/ri";
+import { FormattedMessage } from "react-intl";
+import microbitImage from "../images/stylised-microbit-black.svg";
+import twoMicrobitsImage from "../images/stylised-two-microbits-black.svg";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+import { DownloadState, MicrobitToFlash } from "../model";
+
+export interface DownloadChooseMicrobitDialogProps
+ extends Omit {
+ onSameMicrobitClick: () => void;
+ onDifferentMicrobitClick: () => void;
+ stage: DownloadState;
+}
+
+type MicrobitOption = MicrobitToFlash.Same | MicrobitToFlash.Different;
+
+const DownloadChooseMicrobitDialog = ({
+ onSameMicrobitClick,
+ onDifferentMicrobitClick,
+ stage,
+ ...props
+}: DownloadChooseMicrobitDialogProps) => {
+ const defaultValue =
+ stage.microbitToFlash === MicrobitToFlash.Default
+ ? MicrobitToFlash.Same
+ : stage.microbitToFlash;
+ const [selected, setSelected] = useState(defaultValue);
+ const handleOptionChange = useCallback(
+ (opt: MicrobitOption) => setSelected(opt),
+ []
+ );
+ const { getRootProps, getRadioProps } = useRadioGroup({
+ name: "chosenDevice",
+ defaultValue,
+ onChange: handleOptionChange,
+ });
+ const group = getRootProps();
+ const radioCardOptions: Omit[] = [
+ {
+ id: MicrobitToFlash.Same,
+ imgSrc: microbitImage,
+ },
+ {
+ id: MicrobitToFlash.Different,
+ imgSrc: twoMicrobitsImage,
+ },
+ ];
+ return (
+
+
+
+
+
+
+ {radioCardOptions.map((config) => {
+ const radio = getRadioProps({ value: config.id });
+ return (
+
+ );
+ })}
+
+
+
+ );
+};
+
+interface RadioCardProps extends UseRadioProps {
+ id: MicrobitOption;
+ imgSrc: string;
+ isSelected: boolean;
+}
+
+const RadioCard = ({ id, imgSrc, isSelected, ...props }: RadioCardProps) => {
+ const { getInputProps, getRadioProps } = useRadio(props);
+
+ const input = getInputProps();
+ const checkbox = getRadioProps();
+
+ return (
+
+
+
+
+ {isSelected ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default DownloadChooseMicrobitDialog;
diff --git a/src/components/DownloadDialogs.tsx b/src/components/DownloadDialogs.tsx
new file mode 100644
index 000000000..6d6733c5c
--- /dev/null
+++ b/src/components/DownloadDialogs.tsx
@@ -0,0 +1,105 @@
+import { useCallback } from "react";
+import ConnectCableDialog from "./ConnectCableDialog";
+import DownloadProgressDialog from "./DownloadProgressDialog";
+import DownloadChooseMicrobitDialog from "./DownloadChooseMicrobitDialog";
+import DownloadHelpDialog from "./DownloadHelpDialog";
+import ManualFlashingDialog from "./ManualFlashingDialog";
+import SelectMicrobitUsbDialog from "./SelectMicrobitUsbDialog";
+import { DownloadStep as DownloadStep } from "../model";
+import { useDownloadActions } from "../hooks/download-hooks";
+import { useStore } from "../store";
+import UnplugRadioLinkMicrobitDialog from "./UnplugRadioLinkMicrobitDialog";
+import ConnectRadioDataCollectionMicrobitDialog from "./ConnectRadioDataCollectionMicrobitDialog";
+
+const DownloadDialogs = () => {
+ const actions = useDownloadActions();
+ const stage = useStore((s) => s.download);
+ const handleDownloadProject = useCallback(async () => {
+ await actions.connectAndFlashMicrobit(stage);
+ }, [actions, stage]);
+
+ switch (stage.step) {
+ case DownloadStep.Help:
+ return (
+
+ );
+ case DownloadStep.ChooseSameOrDifferentMicrobit:
+ return (
+
+ );
+ case DownloadStep.ConnectCable:
+ return (
+
+ );
+ case DownloadStep.ConnectRadioRemoteMicrobit:
+ return (
+
+ );
+ case DownloadStep.UnplugRadioBridgeMicrobit:
+ return (
+
+ );
+ case DownloadStep.WebUsbFlashingTutorial:
+ return (
+
+ );
+ case DownloadStep.FlashingInProgress:
+ return (
+
+ );
+ case DownloadStep.ManualFlashingTutorial:
+ if (!stage.hex) {
+ throw new Error("Project expected");
+ }
+ return (
+
+ );
+ }
+ return <>>;
+};
+
+export default DownloadDialogs;
diff --git a/src/components/DownloadHelpDialog.tsx b/src/components/DownloadHelpDialog.tsx
new file mode 100644
index 000000000..1200447fd
--- /dev/null
+++ b/src/components/DownloadHelpDialog.tsx
@@ -0,0 +1,88 @@
+import {
+ Button,
+ Checkbox,
+ Heading,
+ HStack,
+ Image,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { ComponentProps, useCallback, useState } from "react";
+import { FormattedMessage } from "react-intl";
+import testModelImage from "../images/test_model_black.svg";
+import { useDeployment } from "../deployment";
+
+export interface DownloadHelpDialogProps
+ extends Omit, "children"> {
+ onNext: (isSkipNextTime: boolean) => void;
+}
+
+const DownloadHelpDialog = ({
+ onClose,
+ onNext,
+ ...rest
+}: DownloadHelpDialogProps) => {
+ const { appNameFull } = useDeployment();
+ const [isSkipNextTime, setSkipNextTime] = useState(false);
+ const handleOnNext = useCallback(() => {
+ onNext(isSkipNextTime);
+ }, [onNext, isSkipNextTime]);
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setSkipNextTime(e.target.checked)}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default DownloadHelpDialog;
diff --git a/src/components/DownloadProgressDialog.tsx b/src/components/DownloadProgressDialog.tsx
new file mode 100644
index 000000000..64bc041e7
--- /dev/null
+++ b/src/components/DownloadProgressDialog.tsx
@@ -0,0 +1,69 @@
+import {
+ Heading,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalOverlay,
+ Progress,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import { ConnectionFlowType } from "../connection-stage-hooks";
+
+export interface DownloadProgressDialogProps {
+ isOpen: boolean;
+ headingId: string;
+ progress: number;
+}
+
+export const getHeadingId = (flowType: ConnectionFlowType) => {
+ switch (flowType) {
+ case ConnectionFlowType.ConnectBluetooth:
+ return "connectMB.usbDownloading.header";
+ case ConnectionFlowType.ConnectRadioRemote:
+ return "connectMB.usbDownloadingMB1.header";
+ case ConnectionFlowType.ConnectRadioBridge:
+ return "connectMB.usbDownloadingMB2.header";
+ }
+};
+
+const DownloadProgressDialog = ({
+ isOpen,
+ headingId,
+ progress,
+}: DownloadProgressDialogProps) => {
+ return (
+ {}}
+ size="3xl"
+ isCentered
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default DownloadProgressDialog;
diff --git a/src/components/EditCodeDialog.tsx b/src/components/EditCodeDialog.tsx
new file mode 100644
index 000000000..c99f2bb5c
--- /dev/null
+++ b/src/components/EditCodeDialog.tsx
@@ -0,0 +1,62 @@
+import {
+ Box,
+ Flex,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalOverlay,
+} from "@chakra-ui/react";
+import { MakeCodeFrameDriver } from "@microbit/makecode-embed/react";
+import { forwardRef, memo, useRef } from "react";
+import Editor from "./Editor";
+import { useStore } from "../store";
+
+interface EditCodeDialogProps {}
+
+const EditCodeDialog = forwardRef(
+ function EditCodeDialog(_, ref) {
+ const containerRef = useRef(null);
+ const isOpen = useStore((s) => s.isEditorOpen);
+ return (
+ <>
+
+ {}}
+ closeOnEsc={false}
+ blockScrollOnMount={false}
+ portalProps={{
+ containerRef: containerRef,
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+ }
+);
+
+export default memo(EditCodeDialog);
diff --git a/src/components/Editor.tsx b/src/components/Editor.tsx
new file mode 100644
index 000000000..a0136f48a
--- /dev/null
+++ b/src/components/Editor.tsx
@@ -0,0 +1,42 @@
+import {
+ MakeCodeFrame,
+ MakeCodeFrameDriver,
+} from "@microbit/makecode-embed/react";
+import React, { forwardRef, useCallback } from "react";
+import { getMakeCodeLang } from "../settings";
+import { useProject } from "../hooks/project-hooks";
+import { useSettings } from "../store";
+
+const controllerId = "MicrobitMachineLearningTool";
+
+interface EditorProps {
+ version: string | undefined;
+ style?: React.CSSProperties;
+}
+
+const Editor = forwardRef(function Editor(
+ props,
+ ref
+) {
+ const { project, editorCallbacks } = useProject();
+ const initialProjects = useCallback(() => {
+ return Promise.resolve([project]);
+ }, [project]);
+ const [{ languageId }] = useSettings();
+ return (
+
+ );
+});
+
+export default Editor;
diff --git a/src/components/EnterBluetoothPatternDialog.tsx b/src/components/EnterBluetoothPatternDialog.tsx
new file mode 100644
index 000000000..5a4e076cf
--- /dev/null
+++ b/src/components/EnterBluetoothPatternDialog.tsx
@@ -0,0 +1,97 @@
+import { Text, VStack } from "@chakra-ui/react";
+import { useCallback, useState } from "react";
+import { FormattedMessage } from "react-intl";
+import BluetoothPatternInput from "./BluetoothPatternInput";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+import {
+ BluetoothPattern,
+ microbitNameToBluetoothPattern,
+ microbitPatternToName,
+} from "../bt-pattern-utils";
+
+export interface EnterBluetoothPatternDialogProps
+ extends Omit {
+ onChangeMicrobitName: (name: string) => void;
+ microbitName: string | undefined;
+}
+
+const EnterBluetoothPatternDialog = ({
+ onNextClick,
+ onBackClick,
+ onChangeMicrobitName,
+ microbitName,
+ ...props
+}: EnterBluetoothPatternDialogProps) => {
+ const [showInvalid, setShowInvalid] = useState(false);
+ const [bluetoothPattern, setBluetoothPattern] = useState(
+ microbitName
+ ? microbitNameToBluetoothPattern(microbitName)
+ : Array(25).fill(false)
+ );
+
+ const handleNextClick = useCallback(() => {
+ if (!isPatternValid(bluetoothPattern)) {
+ setShowInvalid(true);
+ return;
+ }
+ onNextClick && onNextClick();
+ }, [bluetoothPattern, onNextClick]);
+
+ const handleBackClick = useCallback(() => {
+ setShowInvalid(false);
+ onBackClick && onBackClick();
+ }, [onBackClick]);
+
+ const handlePatternChange = useCallback(
+ (newPattern: BluetoothPattern) => {
+ setBluetoothPattern(newPattern);
+ onChangeMicrobitName(microbitPatternToName(newPattern));
+ setShowInvalid(false);
+ },
+ [onChangeMicrobitName]
+ );
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+const isPatternValid = (pattern: BluetoothPattern) => {
+ for (let col = 0; col < 5; col++) {
+ let isAnyHighlighted = false;
+ for (let row = 0; row < 5; row++) {
+ if (pattern[row * 5 + col]) {
+ isAnyHighlighted = true;
+ }
+ }
+ if (!isAnyHighlighted) {
+ return false;
+ }
+ }
+ return true;
+};
+
+export default EnterBluetoothPatternDialog;
diff --git a/src/components/ErrorBoundary.tsx b/src/components/ErrorBoundary.tsx
new file mode 100644
index 000000000..9079a286e
--- /dev/null
+++ b/src/components/ErrorBoundary.tsx
@@ -0,0 +1,39 @@
+import React, { ReactNode } from "react";
+import ErrorHandlerErrorView from "./ErrorHandlerErrorView";
+
+interface ErrorBoundaryState {
+ hasError: boolean;
+}
+
+interface ErrorBoundaryProps {
+ children?: ReactNode;
+}
+
+// Error boundary used for MyData apps and initialization errors.
+// Otherwise we use React Router's errorElement.
+class ErrorBoundary extends React.Component<
+ ErrorBoundaryProps,
+ ErrorBoundaryState
+> {
+ constructor(props: ErrorBoundaryProps) {
+ super(props);
+ this.state = { hasError: false };
+ }
+
+ componentDidCatch() {
+ // TODO: reinstate logging!
+ }
+
+ static getDerivedStateFromError() {
+ return { hasError: true };
+ }
+
+ render() {
+ if (this.state.hasError) {
+ return ;
+ }
+ return this.props.children;
+ }
+}
+
+export default ErrorBoundary;
diff --git a/src/components/ErrorHandlerErrorView.tsx b/src/components/ErrorHandlerErrorView.tsx
new file mode 100644
index 000000000..e97ff4795
--- /dev/null
+++ b/src/components/ErrorHandlerErrorView.tsx
@@ -0,0 +1,38 @@
+import { Button, Text, VStack } from "@chakra-ui/react";
+import { ReactNode } from "react";
+import { FormattedMessage } from "react-intl";
+import ErrorPage from "./ErrorPage";
+import Link from "./Link";
+
+const ErrorHandlerErrorView = () => {
+ return (
+
+
+
+ (
+
+ {chunks}
+
+ ),
+ }}
+ />
+
+
+ window.location.reload()}>
+
+
+
+
+
+ );
+};
+
+export default ErrorHandlerErrorView;
diff --git a/src/components/ErrorPage.tsx b/src/components/ErrorPage.tsx
new file mode 100644
index 000000000..d54e51138
--- /dev/null
+++ b/src/components/ErrorPage.tsx
@@ -0,0 +1,22 @@
+import { Heading, VStack } from "@chakra-ui/react";
+import { ReactNode } from "react";
+
+type Props = { title: string; children: ReactNode };
+
+const ErrorPage = ({ title, children }: Props) => (
+
+
+ {title}
+
+ {children}
+
+);
+
+export default ErrorPage;
diff --git a/src/components/ExternalLink.tsx b/src/components/ExternalLink.tsx
new file mode 100644
index 000000000..993ea2439
--- /dev/null
+++ b/src/components/ExternalLink.tsx
@@ -0,0 +1,30 @@
+import { ExternalLinkIcon } from "@chakra-ui/icons";
+import { Button } from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+
+interface ExternalLinkProps {
+ textId: string;
+ href: string;
+}
+
+const ExternalLink = ({ textId, href }: ExternalLinkProps) => {
+ return (
+
+
+
+
+ );
+};
+
+export default ExternalLink;
diff --git a/src/components/FeedbackForm.tsx b/src/components/FeedbackForm.tsx
new file mode 100644
index 000000000..73557c9a1
--- /dev/null
+++ b/src/components/FeedbackForm.tsx
@@ -0,0 +1,76 @@
+/**
+ * (c) 2021, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import {
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalOverlay,
+ ModalCloseButton,
+} from "@chakra-ui/modal";
+import { useEffect, useRef } from "react";
+
+interface FeedbackFormProps {
+ isOpen: boolean;
+ onClose: () => void;
+ finalFocusRef?: React.RefObject;
+}
+
+/**
+ * Temporary embedded Jotform for the alpha release.
+ */
+const FeedbackForm = ({
+ isOpen,
+ onClose,
+ finalFocusRef = undefined,
+}: FeedbackFormProps) => {
+ const iframeRef = useRef(null);
+ useEffect(() => {
+ const listener = (message: MessageEvent) => {
+ if (
+ message.origin === "https://form.jotform.com" &&
+ typeof message.data === "string"
+ ) {
+ const args = message.data.split(":");
+ // There are many other cases in their big blob of script
+ // but I think this is all we need to care about.
+ if (args[0] === "setHeight" && iframeRef.current) {
+ iframeRef.current.style.height = args[1] + "px";
+ }
+ }
+ };
+ window.addEventListener("message", listener);
+ return () => {
+ window.removeEventListener("message", listener);
+ };
+ });
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default FeedbackForm;
diff --git a/src/components/FileDropTarget.tsx b/src/components/FileDropTarget.tsx
new file mode 100644
index 000000000..3ec81b511
--- /dev/null
+++ b/src/components/FileDropTarget.tsx
@@ -0,0 +1,74 @@
+/**
+ * (c) 2021, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { Box, Center } from "@chakra-ui/layout";
+import { ReactNode, useCallback, useState } from "react";
+import { RiFolderOpenLine } from "react-icons/ri";
+import { useIntl } from "react-intl";
+
+interface FileDropTargetProps {
+ children: ReactNode;
+ onFileDrop: (files: File[]) => void;
+}
+
+/**
+ * An area that handles multiple dropped files.
+ */
+const FileDropTarget = ({ children, onFileDrop }: FileDropTargetProps) => {
+ const [dragOver, setDragOver] = useState(false);
+
+ const handleDrop = useCallback(
+ (event: React.DragEvent) => {
+ setDragOver(false);
+ const files = Array.from(event.dataTransfer.files);
+ if (files.length > 0) {
+ event.preventDefault();
+ event.stopPropagation();
+ onFileDrop(files);
+ }
+ },
+ [onFileDrop]
+ );
+ const handleDragOver = useCallback((event: React.DragEvent) => {
+ const hasFile = Array.from(event.dataTransfer.types).indexOf("Files") >= 0;
+ if (hasFile) {
+ event.preventDefault();
+ setDragOver(true);
+ event.dataTransfer.dropEffect = "copy";
+ }
+ }, []);
+ const handleDragLeave = useCallback(() => {
+ setDragOver(false);
+ }, []);
+ const intl = useIntl();
+ return (
+
+ {dragOver && (
+
+
+
+ )}
+ {children}
+
+ );
+};
+
+export default FileDropTarget;
diff --git a/src/components/FrontPageContentTile.svelte b/src/components/FrontPageContentTile.svelte
deleted file mode 100644
index 650099684..000000000
--- a/src/components/FrontPageContentTile.svelte
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
diff --git a/src/components/Gesture.svelte b/src/components/Gesture.svelte
deleted file mode 100644
index 596bc669c..000000000
--- a/src/components/Gesture.svelte
+++ /dev/null
@@ -1,388 +0,0 @@
-
-
-
-
-
-
-
-
-
- {$t('content.data.recordingDialog.title', { values: { action: $nameBind } })}
-
-
-
-
- {#if countdownIdx < countdownConfigs.length}
-
- {countdownConfigs[countdownIdx].value}
-
- {:else}
-
- {$t('content.data.recordingDialog.recording')}
-
- {/if}
-
-
-
-
- {$t('content.data.recording.button.cancel')}
-
-
-
-
-
-
-
-
- {#if !showAddActionWalkThrough}
-
-
-
-
-
- {/if}
-
{$t('content.data.addAction.inputLabel')}
-
-
-
-
-
-{#if showAddActionWalkThrough}
-
-
-
- {$t('content.data.addActionWalkThrough')}
-
-
-{:else}
-
-
-
-
-
-
-
-
-
- {#if hasRecordings}
- {#each $gesture.recordings as recording (String($gesture.ID) + String(recording.ID))}
-
- {/each}
- {/if}
-
-
-
-{/if}
-
-{#if isGestureNamed && showWalkThrough && !hasRecordings && !showCountdown && !isThisRecording}
-
-
-
-
-
-
- {$t('content.data.addRecordingWalkThrough')}
-
-
-
-{/if}
diff --git a/src/components/GestureNameGridItem.tsx b/src/components/GestureNameGridItem.tsx
new file mode 100644
index 000000000..6dd67fdb1
--- /dev/null
+++ b/src/components/GestureNameGridItem.tsx
@@ -0,0 +1,133 @@
+import {
+ Card,
+ CardBody,
+ CloseButton,
+ GridItem,
+ HStack,
+ Input,
+ useToast,
+} from "@chakra-ui/react";
+import { useCallback } from "react";
+import { useIntl } from "react-intl";
+import { useStore } from "../store";
+import { tourElClassname } from "../tours";
+import { MakeCodeIcon } from "../utils/icons";
+import LedIcon from "./LedIcon";
+import LedIconPicker from "./LedIconPicker";
+
+interface GestureNameGridItemProps {
+ name: string;
+ icon: MakeCodeIcon;
+ onDeleteAction?: () => void;
+ onSelectRow?: () => void;
+ id: number;
+ selected?: boolean;
+ readOnly: boolean;
+ isTriggered?: boolean;
+}
+
+const gestureNameMaxLength = 18;
+
+const GestureNameGridItem = ({
+ name,
+ icon,
+ onDeleteAction,
+ onSelectRow,
+ id,
+ selected = false,
+ readOnly = false,
+ isTriggered = undefined,
+}: GestureNameGridItemProps) => {
+ const intl = useIntl();
+ const toast = useToast();
+ const toastId = "name-too-long-toast";
+ const setGestureName = useStore((s) => s.setGestureName);
+ const setGestureIcon = useStore((s) => s.setGestureIcon);
+
+ const onChange: React.ChangeEventHandler = useCallback(
+ (e) => {
+ const name = e.target.value;
+ // Validate gesture name length
+ if (name.length >= gestureNameMaxLength && !toast.isActive(toastId)) {
+ toast({
+ id: toastId,
+ position: "top",
+ duration: 5_000,
+ title: intl.formatMessage(
+ { id: "alert.data.classNameLengthAlert" },
+ { maxLen: gestureNameMaxLength }
+ ),
+ variant: "subtle",
+ status: "error",
+ });
+ return;
+ }
+ setGestureName(id, name);
+ },
+ [id, intl, setGestureName, toast]
+ );
+
+ const handleIconSelected = useCallback(
+ (icon: MakeCodeIcon) => {
+ setGestureIcon(id, icon);
+ },
+ [id, setGestureIcon]
+ );
+
+ return (
+
+
+ {!readOnly && onDeleteAction && (
+
+ )}
+
+
+
+ ;
+ {!readOnly && (
+
+ )}
+
+
+
+
+
+
+ );
+};
+
+export default GestureNameGridItem;
diff --git a/src/components/GestureTilePart.svelte b/src/components/GestureTilePart.svelte
deleted file mode 100644
index a9bdaaa16..000000000
--- a/src/components/GestureTilePart.svelte
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/GreetingEmojiWithArrow.tsx b/src/components/GreetingEmojiWithArrow.tsx
new file mode 100644
index 000000000..d7e52da64
--- /dev/null
+++ b/src/components/GreetingEmojiWithArrow.tsx
@@ -0,0 +1,31 @@
+import { Icon } from "@chakra-ui/react";
+
+interface GreetingEmojiWithArrowProps {
+ w: string;
+ h: string;
+ color?: string;
+}
+
+const GreetingEmojiWithArrow = ({
+ w,
+ h,
+ color,
+}: GreetingEmojiWithArrowProps) => {
+ return (
+
+
+
+
+ );
+};
+
+export default GreetingEmojiWithArrow;
diff --git a/src/components/HeadingGrid.tsx b/src/components/HeadingGrid.tsx
new file mode 100644
index 000000000..eceb23f80
--- /dev/null
+++ b/src/components/HeadingGrid.tsx
@@ -0,0 +1,54 @@
+import { Grid, GridItem, GridProps, HStack, Text } from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import InfoToolTip from "./InfoToolTip";
+import { ReactNode } from "react";
+
+interface HeadingGridProps extends GridProps {
+ headings: GridColumnHeadingItemProps[];
+}
+
+const HeadingGrid = ({ headings, ...props }: HeadingGridProps) => {
+ return (
+
+ {headings.map((props, idx) => (
+
+ ))}
+
+ );
+};
+
+export interface GridColumnHeadingItemProps {
+ titleId?: string;
+ descriptionId?: string;
+ itemsRight?: ReactNode;
+}
+
+const GridColumnHeadingItem = (props: GridColumnHeadingItemProps) => {
+ return (
+
+ {props.titleId && props.descriptionId && (
+
+
+
+
+
+
+
+ {props.itemsRight}
+
+ )}
+
+ );
+};
+
+export default HeadingGrid;
diff --git a/src/components/HelpMenu.tsx b/src/components/HelpMenu.tsx
new file mode 100644
index 000000000..95519ca65
--- /dev/null
+++ b/src/components/HelpMenu.tsx
@@ -0,0 +1,134 @@
+import {
+ Box,
+ IconButton,
+ Menu,
+ MenuButton,
+ MenuDivider,
+ MenuItem,
+ MenuList,
+ Portal,
+ useDisclosure,
+} from "@chakra-ui/react";
+import { useRef } from "react";
+import { MdOutlineCookie } from "react-icons/md";
+import {
+ RiExternalLinkLine,
+ RiFeedbackLine,
+ RiInformationLine,
+ RiQuestionLine,
+} from "react-icons/ri";
+import { FormattedMessage, useIntl } from "react-intl";
+import FeedbackForm from "./FeedbackForm";
+import { useDeployment } from "../deployment";
+import AboutDialog from "./AboutDialog";
+
+interface HelpMenuProps {
+ isMobile?: boolean;
+}
+
+/**
+ * A help button that triggers a drop-down menu with actions.
+ */
+const HelpMenu = ({ isMobile, ...rest }: HelpMenuProps) => {
+ const aboutDialogDisclosure = useDisclosure();
+ const feedbackDisclosure = useDisclosure();
+ const intl = useIntl();
+ const MenuButtonRef = useRef(null);
+ const deployment = useDeployment();
+ return (
+
+
+
+
+ }
+ variant="plain"
+ isRound
+ _focusVisible={{
+ boxShadow: "outlineDark",
+ }}
+ />
+
+
+ {deployment.supportLinks.main && (
+ <>
+ }
+ >
+
+
+ }
+ onClick={feedbackDisclosure.onOpen}
+ >
+
+
+
+ >
+ )}
+ {deployment.termsOfUseLink && (
+ }
+ >
+
+
+ )}
+ {deployment.privacyPolicyLink && (
+ }
+ >
+
+
+ )}
+ {deployment.compliance.manageCookies && (
+ }
+ >
+
+
+ )}
+ {(deployment.privacyPolicyLink ||
+ deployment.compliance.manageCookies ||
+ deployment.termsOfUseLink) && }
+ }
+ onClick={aboutDialogDisclosure.onOpen}
+ >
+
+
+
+
+
+
+ );
+};
+
+export default HelpMenu;
diff --git a/src/components/HtmlFormattedMessage.svelte b/src/components/HtmlFormattedMessage.svelte
deleted file mode 100644
index 8a3166f55..000000000
--- a/src/components/HtmlFormattedMessage.svelte
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
- {@html $t(id, adaptedOptions)}
-
diff --git a/src/components/HtmlFormattedMessage.test.ts b/src/components/HtmlFormattedMessage.test.ts
deleted file mode 100644
index 09c01c7ef..000000000
--- a/src/components/HtmlFormattedMessage.test.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * @vitest-environment jsdom
- */
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-import '@testing-library/jest-dom';
-
-import { render, screen } from '@testing-library/svelte';
-import { IntlMessageFormat } from 'intl-messageformat';
-
-import HtmlFormattedMessage from './HtmlFormattedMessage.svelte';
-
-const messages: Record = {
- simple: 'An example',
- link: 'Before linked After',
- html: "'Before 'Bold '",
-};
-
-const tValue = (id: string, options: any) => {
- // Skipped the svelte-i18n layer but tested the XML-like parsing behaviour below it
- return new IntlMessageFormat(
- messages[id] ?? 'Unknown',
- undefined,
- undefined,
- options,
- ).format(options.values);
-};
-
-vitest.mock('../i18n', () => ({
- t: {
- subscribe(cb: any) {
- cb(tValue);
- return () => {};
- },
- },
-}));
-
-describe('HtmlFormattedMessage', () => {
- it('renders simple example', () => {
- render(HtmlFormattedMessage, { id: 'simple' });
- const dom = screen.getByText('An example');
- expect(dom).toMatchInlineSnapshot(`
-
- An example
-
- `);
- });
-
- it('renders a link', () => {
- render(HtmlFormattedMessage, {
- id: 'link',
- options: {
- values: {
- link: (chunks: string[]) => {
- const link = document.createElement('a');
- Object.assign(link, {
- href: '/',
- innerText: chunks.join(''),
- });
- return link;
- },
- },
- },
- });
- const dom = screen.getByText(/Before/);
- expect(dom).toMatchInlineSnapshot(`
-
- Before
-
- After
-
- `);
- });
-
- it('needs care due to lack of html escaping', () => {
- render(HtmlFormattedMessage, {
- id: 'html',
- });
- const dom = screen.getByText(/Bold/);
- expect(dom).toMatchInlineSnapshot(`
-
- Bold
-
- `);
- });
-});
diff --git a/src/components/IconButton.svelte b/src/components/IconButton.svelte
deleted file mode 100644
index cfa048b15..000000000
--- a/src/components/IconButton.svelte
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/InfoToolTip.tsx b/src/components/InfoToolTip.tsx
new file mode 100644
index 000000000..37f3a8fa7
--- /dev/null
+++ b/src/components/InfoToolTip.tsx
@@ -0,0 +1,32 @@
+import { Icon, Text, VStack } from "@chakra-ui/react";
+import { RiInformationLine } from "react-icons/ri";
+import { FormattedMessage } from "react-intl";
+import ClickableTooltip from "./ClickableTooltip";
+import { useDeployment } from "../deployment";
+
+export interface InfoToolTipProps {
+ titleId: string;
+ descriptionId: string;
+}
+const InfoToolTip = ({ titleId, descriptionId }: InfoToolTipProps) => {
+ const { appNameFull } = useDeployment();
+ return (
+
+
+
+
+
+
+
+
+ }
+ >
+
+
+ );
+};
+export default InfoToolTip;
diff --git a/src/components/LanguageDialog.tsx b/src/components/LanguageDialog.tsx
new file mode 100644
index 000000000..c4c870f1e
--- /dev/null
+++ b/src/components/LanguageDialog.tsx
@@ -0,0 +1,115 @@
+/**
+ * (c) 2021, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { Button } from "@chakra-ui/button";
+import {
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalFooter,
+ ModalHeader,
+ ModalOverlay,
+} from "@chakra-ui/modal";
+import { HStack, SimpleGrid, Text, VStack } from "@chakra-ui/react";
+import { useCallback } from "react";
+import { FormattedMessage } from "react-intl";
+import { Language, supportedLanguages } from "../settings";
+import { useSettings } from "../store";
+
+interface LanguageDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ finalFocusRef?: React.RefObject;
+}
+
+/**
+ * Language setting dialog.
+ */
+export const LanguageDialog = ({
+ isOpen,
+ onClose,
+ finalFocusRef,
+}: LanguageDialogProps) => {
+ const [, setSettings] = useSettings();
+ const handleChooseLanguage = useCallback(
+ (languageId: string) => {
+ setSettings({ languageId });
+ onClose();
+ },
+ [setSettings, onClose]
+ );
+ const hasPreviewLanguages = supportedLanguages.some((l) => l.preview);
+ return (
+
+
+
+
+
+
+
+
+
+ {supportedLanguages.map((language) => (
+
+ ))}
+
+
+ {hasPreviewLanguages && (
+
+ * These languages are an early preview of in-progress
+ translations.
+
+ )}
+
+
+
+
+
+
+
+
+
+ );
+};
+
+interface LanguageCardProps {
+ language: Language;
+ onChooseLanguage: (languageId: string) => void;
+}
+
+const LanguageCard = ({ language, onChooseLanguage }: LanguageCardProps) => {
+ return (
+ onChooseLanguage(language.id)}
+ height="auto"
+ data-testid={language.id}
+ >
+
+
+
+ {language.name}
+
+
+ {language.enName}
+ {language.preview ? "*" : null}
+
+
+
+
+ );
+};
diff --git a/src/components/LanguageMenuItem.tsx b/src/components/LanguageMenuItem.tsx
new file mode 100644
index 000000000..e56c3f58e
--- /dev/null
+++ b/src/components/LanguageMenuItem.tsx
@@ -0,0 +1,30 @@
+import { Icon, MenuItem, useDisclosure } from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import { IoMdGlobe } from "react-icons/io";
+import { LanguageDialog } from "./LanguageDialog";
+
+interface LanguageMenuItemProps {
+ finalFocusRef?: React.RefObject;
+}
+
+const LanguageMenuItem = ({ finalFocusRef }: LanguageMenuItemProps) => {
+ const languageDisclosure = useDisclosure();
+
+ return (
+ <>
+
+ }
+ onClick={languageDisclosure.onOpen}
+ >
+
+
+ >
+ );
+};
+
+export default LanguageMenuItem;
diff --git a/src/components/LedIcon.tsx b/src/components/LedIcon.tsx
new file mode 100644
index 000000000..3c9d84e69
--- /dev/null
+++ b/src/components/LedIcon.tsx
@@ -0,0 +1,97 @@
+import { AspectRatio, Box, HStack, keyframes, VStack } from "@chakra-ui/react";
+import { memo, useCallback } from "react";
+import { icons, LedIconType } from "../utils/icons";
+
+interface LedIconProps {
+ icon: LedIconType;
+ isTriggered?: boolean;
+ size?: string | number;
+}
+
+const LedIcon = ({ icon, isTriggered, size = 20 }: LedIconProps) => {
+ const iconData = icons[icon];
+ return (
+
+
+ {Array.from(Array(5)).map((_, idx) => {
+ const start = idx * 5;
+ return (
+
+ );
+ })}
+
+
+ );
+};
+
+const turnOn = keyframes`
+ 0% {
+ transform: scale(1);
+ }
+ 50% {
+ transform: scale(1.15);
+ }
+ 100% {
+ transform: scale(1);
+ }
+`;
+
+const turnOff = keyframes`
+ 0% {
+ transform: scale(1);
+ }
+ 50% {
+ transform: scale(0.8);
+ }
+ 100% {
+ transform: scale(1);
+ }
+`;
+
+interface LedIconRowProps {
+ data: string;
+ isTriggered?: boolean;
+}
+
+const LedIconRow = ({ data, isTriggered }: LedIconRowProps) => {
+ const turnOnAnimation = `${turnOn} 200ms ease`;
+ const turnOffAnimation = `${turnOff} 200ms ease`;
+ const getBgColor = useCallback(
+ (isOn: boolean) => {
+ if (!isOn) {
+ return "gray.200";
+ }
+ if (typeof isTriggered === "boolean" && isTriggered) {
+ return "brand2.500";
+ }
+ if (typeof isTriggered === "boolean" && !isTriggered) {
+ return "gray.600";
+ }
+ return "brand.500";
+ },
+ [isTriggered]
+ );
+ return (
+
+ {Array.from(Array(5)).map((_, idx) => (
+
+ ))}
+
+ );
+};
+
+export default memo(LedIcon);
diff --git a/src/components/LedIconPicker.tsx b/src/components/LedIconPicker.tsx
new file mode 100644
index 000000000..5f8fa3e25
--- /dev/null
+++ b/src/components/LedIconPicker.tsx
@@ -0,0 +1,67 @@
+import {
+ Grid,
+ IconButton,
+ Popover,
+ PopoverArrow,
+ PopoverBody,
+ PopoverContent,
+ PopoverTrigger,
+} from "@chakra-ui/react";
+import { memo, useCallback } from "react";
+import { RiArrowDropDownFill } from "react-icons/ri";
+import { MakeCodeIcon, makecodeIcons } from "../utils/icons";
+import LedIcon from "./LedIcon";
+
+interface LedIconPicker {
+ onIconSelected: (icon: MakeCodeIcon) => void;
+}
+
+const LedIconPicker = ({ onIconSelected }: LedIconPicker) => {
+ const handleClick = useCallback(
+ (icon: MakeCodeIcon, callback: () => void) => {
+ onIconSelected(icon);
+ callback();
+ },
+ [onIconSelected]
+ );
+
+ return (
+
+ {({ onClose }) => (
+ <>
+
+
+
+
+
+
+
+
+
+ {Object.keys(makecodeIcons).map((icon, idx) => (
+ handleClick(icon as MakeCodeIcon, onClose)}
+ variant="unstyled"
+ h={20}
+ w={20}
+ >
+
+
+ ))}
+
+
+
+ >
+ )}
+
+ );
+};
+
+export default memo(LedIconPicker);
diff --git a/src/components/Link.tsx b/src/components/Link.tsx
new file mode 100644
index 000000000..d46eecf5e
--- /dev/null
+++ b/src/components/Link.tsx
@@ -0,0 +1,26 @@
+import {
+ Link as RouterLink,
+ LinkProps as RouterLinkProps,
+} from "react-router-dom";
+import { chakra } from "@chakra-ui/react";
+import { Ref, forwardRef } from "react";
+
+// Adapter to deal with to vs href.
+type RouterLinkAdaptedProps = Omit & { href: string };
+
+const RouterLinkAdapted = forwardRef(function RouterLinkAdaptedInner(
+ { href, ...props }: RouterLinkAdaptedProps,
+ ref: Ref | undefined
+) {
+ return ;
+});
+
+// https://chakra-ui.com/docs/components/link
+const Link = chakra(
+ RouterLinkAdapted,
+ {
+ shouldForwardProp: (prop) => ["href", "target", "children"].includes(prop),
+ }
+);
+
+export default Link;
diff --git a/src/components/LinkOverlay.svelte b/src/components/LinkOverlay.svelte
deleted file mode 100644
index b5986e64f..000000000
--- a/src/components/LinkOverlay.svelte
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
-
-
-
-
-{#if isPathType(onClickOrHrefOrPath)}
-
-
-
-{:else if typeof onClickOrHrefOrPath === 'string'}
-
-
-
-{:else}
-
-
-
-{/if}
diff --git a/src/components/LinkOverlayContainer.svelte b/src/components/LinkOverlayContainer.svelte
deleted file mode 100644
index 46ced54c9..000000000
--- a/src/components/LinkOverlayContainer.svelte
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/LiveGraph.tsx b/src/components/LiveGraph.tsx
new file mode 100644
index 000000000..3f2085ff5
--- /dev/null
+++ b/src/components/LiveGraph.tsx
@@ -0,0 +1,202 @@
+import { Box, HStack, Icon, Text } from "@chakra-ui/react";
+import { useSize } from "@chakra-ui/react-use-size";
+import { useEffect, useMemo, useRef, useState } from "react";
+import { SmoothieChart, TimeSeries } from "smoothie";
+import { useConnectActions } from "../connect-actions-hooks";
+import { useConnectionStage } from "../connection-stage-hooks";
+import { AccelerometerDataEvent } from "@microbit/microbit-connection";
+import { mlSettings } from "../ml";
+import { ConnectionStatus } from "../connect-status-hooks";
+import { RiArrowDropLeftFill } from "react-icons/ri";
+import React from "react";
+import { LabelConfig, getUpdatedLabelConfig } from "../live-graph-label-config";
+import { useStore } from "../store";
+
+const initialLabelConfigs: LabelConfig[] = [
+ { label: "x", arrowHeight: 0, labelHeight: 0, color: "#f9808e", id: 0 },
+ { label: "y", arrowHeight: 0, labelHeight: 0, color: "#80f98e", id: 1 },
+ { label: "z", arrowHeight: 0, labelHeight: 0, color: "#808ef9", id: 2 },
+];
+
+const smoothenDataPoint = (curr: number, next: number) => {
+ // TODO: Factor out so that recording graph can do the same
+ // Remove dividing by 1000 operation once it gets moved to connection lib
+ return (next / 1000) * 0.25 + curr * 0.75;
+};
+
+const LiveGraph = () => {
+ const { isConnected, status } = useConnectionStage();
+ const connectActions = useConnectActions();
+
+ const canvasRef = useRef(null);
+
+ const [chart, setChart] = useState(undefined);
+ const lineWidth = 2;
+
+ const liveGraphContainerRef = useRef(null);
+ const { width, height } = useSize(liveGraphContainerRef) ?? {
+ width: 100,
+ height: 100,
+ };
+
+ const lineX = useMemo(() => new TimeSeries(), []);
+ const lineY = useMemo(() => new TimeSeries(), []);
+ const lineZ = useMemo(() => new TimeSeries(), []);
+ const recordLines = useMemo(() => new TimeSeries(), []);
+
+ // On mount draw smoothieChart
+ useEffect(() => {
+ if (!canvasRef.current) {
+ return;
+ }
+ const smoothieChart = new SmoothieChart({
+ maxValue: 2.3,
+ minValue: -2,
+ millisPerPixel: 7,
+ grid: {
+ fillStyle: "#ffffff00",
+ strokeStyle: "rgba(48,48,48,0.20)",
+ millisPerLine: 3000,
+ borderVisible: false,
+ },
+ interpolation: "linear",
+ });
+
+ smoothieChart.addTimeSeries(lineX, { lineWidth, strokeStyle: "#f9808e" });
+ smoothieChart.addTimeSeries(lineY, { lineWidth, strokeStyle: "#80f98e" });
+ smoothieChart.addTimeSeries(lineZ, { lineWidth, strokeStyle: "#808ef9" });
+ smoothieChart.addTimeSeries(recordLines, {
+ lineWidth: 3,
+ strokeStyle: "#4040ff44",
+ fillStyle: "#0000ff07",
+ });
+ setChart(smoothieChart);
+ smoothieChart.streamTo(canvasRef.current, 0);
+ smoothieChart.render();
+ return () => {
+ smoothieChart.stop();
+ };
+ }, [lineX, lineY, lineZ, recordLines]);
+
+ useEffect(() => {
+ if (isConnected || status === ConnectionStatus.ReconnectingAutomatically) {
+ chart?.start();
+ } else {
+ chart?.stop();
+ }
+ }, [chart, isConnected, status]);
+
+ // Draw on graph to display that users are recording
+ // Ideally we'd do this without timing the recording again!
+ const [isTimingRecording, setIsTimingRecording] = useState(false);
+ const isRecording = useStore((s) => s.isRecording);
+ useEffect(() => {
+ if (isRecording && !isTimingRecording) {
+ {
+ // Set the start recording line
+ const now = new Date().getTime();
+ recordLines.append(now - 1, -2, false);
+ recordLines.append(now, 2.3, false);
+ setIsTimingRecording(true);
+ }
+
+ setTimeout(() => {
+ // Set the end recording line
+ const now = new Date().getTime();
+ recordLines.append(now - 1, 2.3, false);
+ recordLines.append(now, -2, false);
+ setIsTimingRecording(false);
+ }, mlSettings.duration);
+ }
+ }, [isTimingRecording, recordLines, isRecording]);
+
+ const [labelConfigs, setLabelConfigs] =
+ useState(initialLabelConfigs);
+
+ const dataRef = useRef<{ x: number; y: number; z: number }>({
+ x: 0,
+ y: 0,
+ z: 0,
+ });
+
+ useEffect(() => {
+ const listener = ({ data }: AccelerometerDataEvent) => {
+ const t = new Date().getTime();
+ dataRef.current = {
+ x: smoothenDataPoint(dataRef.current.x, data.x),
+ y: smoothenDataPoint(dataRef.current.y, data.y),
+ z: smoothenDataPoint(dataRef.current.z, data.z),
+ };
+ lineX.append(t, dataRef.current.x, false);
+ lineY.append(t, dataRef.current.y, false);
+ lineZ.append(t, dataRef.current.z, false);
+
+ setLabelConfigs(getUpdatedLabelConfig(labelConfigs, dataRef.current));
+ };
+ if (isConnected) {
+ connectActions.addAccelerometerListener(listener);
+ }
+ return () => {
+ connectActions.removeAccelerometerListener(listener);
+ };
+ }, [connectActions, isConnected, labelConfigs, lineX, lineY, lineZ]);
+
+ const arrowHeightTransformAdjustValue = 1;
+
+ return (
+
+
+ {isConnected && (
+
+ {labelConfigs.map((config, idx) => (
+
+ element.
+ style={{
+ transform: `translateY(${
+ config.arrowHeight - arrowHeightTransformAdjustValue
+ }rem)`,
+ }}
+ >
+
+
+ element.
+ style={{
+ transform: `translateY(${
+ config.labelHeight - arrowHeightTransformAdjustValue + 0.45
+ }rem)`,
+ }}
+ >
+ {config.label}
+
+
+ ))}
+
+ )}
+
+ );
+};
+
+export default LiveGraph;
diff --git a/src/components/LiveGraphPanel.tsx b/src/components/LiveGraphPanel.tsx
new file mode 100644
index 000000000..caab2669c
--- /dev/null
+++ b/src/components/LiveGraphPanel.tsx
@@ -0,0 +1,144 @@
+import { Button, HStack, Portal, Text, VStack } from "@chakra-ui/react";
+import { useMemo, useRef } from "react";
+import { FormattedMessage } from "react-intl";
+import { ConnectionStatus } from "../connect-status-hooks";
+import { useConnectionStage } from "../connection-stage-hooks";
+import { Gesture } from "../model";
+import { tourElClassname } from "../tours";
+import InfoToolTip from "./InfoToolTip";
+import LedIcon from "./LedIcon";
+import LiveGraph from "./LiveGraph";
+
+interface LiveGraphPanelProps {
+ detected?: Gesture | undefined;
+ showPredictedGesture?: boolean;
+}
+
+const predictedGestureDisplayWidth = 180;
+
+const LiveGraphPanel = ({
+ showPredictedGesture,
+ detected,
+}: LiveGraphPanelProps) => {
+ const { actions, status } = useConnectionStage();
+ const parentPortalRef = useRef(null);
+ const isReconnecting =
+ status === ConnectionStatus.ReconnectingAutomatically ||
+ status === ConnectionStatus.ReconnectingExplicitly;
+ const connectBtnConfig = useMemo(() => {
+ return status === ConnectionStatus.NotConnected ||
+ status === ConnectionStatus.Connecting ||
+ status === ConnectionStatus.FailedToConnect ||
+ status === ConnectionStatus.FailedToReconnectTwice ||
+ status === ConnectionStatus.FailedToSelectBluetoothDevice
+ ? {
+ textId: "footer.connectButton",
+ onClick: actions.startConnect,
+ }
+ : {
+ textId: "actions.reconnect",
+ onClick: actions.reconnect,
+ };
+ }, [actions.reconnect, actions.startConnect, status]);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {status === ConnectionStatus.Connected ? (
+
+
+
+ ) : (
+
+
+
+ )}
+ {isReconnecting && (
+
+
+
+ )}
+
+
+
+
+
+ {showPredictedGesture && (
+
+
+
+
+
+
+
+
+
+
+
+ {detected?.name ?? }
+
+
+ )}
+
+
+ );
+};
+
+export default LiveGraphPanel;
diff --git a/src/components/LoadProjectInput.tsx b/src/components/LoadProjectInput.tsx
new file mode 100644
index 000000000..fc78b1f17
--- /dev/null
+++ b/src/components/LoadProjectInput.tsx
@@ -0,0 +1,71 @@
+import { Input } from "@chakra-ui/react";
+import { forwardRef, useCallback, useImperativeHandle, useRef } from "react";
+import { useProject } from "../hooks/project-hooks";
+
+export interface LoadProjectInputProps {
+ /**
+ *
+ * File input tag accept attribute.
+ * A project can be opened from .json or .hex file.
+ */
+ accept: ".json" | ".hex" | ".json,.hex";
+}
+
+export interface LoadProjectInputRef {
+ chooseFile(): void;
+}
+
+const LoadProjectInput = forwardRef(
+ function LoadProjectInput({ accept }: LoadProjectInputProps, ref) {
+ const { loadFile } = useProject();
+ const inputRef = useRef(null);
+ useImperativeHandle(
+ ref,
+ () => {
+ return {
+ chooseFile() {
+ inputRef.current?.click();
+ },
+ };
+ },
+ []
+ );
+
+ const onOpen = useCallback(
+ (files: File[]) => {
+ if (files.length === 1) {
+ loadFile(files[0]);
+ }
+ },
+ [loadFile]
+ );
+
+ const handleOpenFile = useCallback(
+ (e: React.ChangeEvent) => {
+ const files = e.target.files;
+ if (files) {
+ const filesArray = Array.from(files);
+ // Clear the input so we're triggered if the user opens the same file again.
+ inputRef.current!.value = "";
+ if (filesArray.length > 0) {
+ onOpen(filesArray);
+ }
+ }
+ },
+ [onOpen]
+ );
+
+ return (
+
+ );
+ }
+);
+
+export default LoadProjectInput;
diff --git a/src/components/LoadProjectMenuItem.tsx b/src/components/LoadProjectMenuItem.tsx
new file mode 100644
index 000000000..a33f0c07d
--- /dev/null
+++ b/src/components/LoadProjectMenuItem.tsx
@@ -0,0 +1,32 @@
+import { MenuItem, MenuItemProps } from "@chakra-ui/react";
+import { useRef } from "react";
+import LoadProjectInput, {
+ LoadProjectInputProps,
+ LoadProjectInputRef,
+} from "./LoadProjectInput";
+
+interface LoadProjectMenuItemProps
+ extends MenuItemProps,
+ LoadProjectInputProps {
+ /**
+ *
+ * File input tag accept attribute.
+ * A project can be opened from .json or .hex file.
+ */
+ accept: ".json" | ".hex" | ".json,.hex";
+}
+
+const LoadProjectMenuItem = ({
+ accept,
+ ...props
+}: LoadProjectMenuItemProps) => {
+ const ref = useRef(null);
+ return (
+ <>
+ ref.current?.chooseFile()} />
+
+ >
+ );
+};
+
+export default LoadProjectMenuItem;
diff --git a/src/components/LoadingAnimation/index.tsx b/src/components/LoadingAnimation/index.tsx
new file mode 100644
index 000000000..386964b26
--- /dev/null
+++ b/src/components/LoadingAnimation/index.tsx
@@ -0,0 +1,13 @@
+import { Box, HStack } from "@chakra-ui/react";
+import styles from "./styles.module.css";
+
+// TODO: Maybe use framer-motion for this
+const LoadingAnimation = () => {
+ return (
+
+
+
+ );
+};
+
+export default LoadingAnimation;
diff --git a/src/components/LoadingAnimation/styles.module.css b/src/components/LoadingAnimation/styles.module.css
new file mode 100644
index 000000000..ec833ffc9
--- /dev/null
+++ b/src/components/LoadingAnimation/styles.module.css
@@ -0,0 +1,57 @@
+/* Modified from https://github.com/lukehaas/css-loaders */
+.loader,
+.loader:before,
+.loader:after {
+ border-radius: 50%;
+ width: 25px;
+ height: 25px;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation: load7 1.8s infinite ease-in-out;
+ animation: load7 1.8s infinite ease-in-out;
+}
+.loader {
+ font-size: 10px;
+ position: absolute;
+ top: -25px;
+ text-indent: -9999em;
+ -webkit-transform: translateZ(0);
+ -ms-transform: translateZ(0);
+ transform: translateZ(0);
+ -webkit-animation-delay: -0.16s;
+ animation-delay: -0.16s;
+}
+.loader:before,
+.loader:after {
+ content: "";
+ position: absolute;
+ top: 0;
+}
+.loader:before {
+ left: -3.5em;
+ -webkit-animation-delay: -0.32s;
+ animation-delay: -0.32s;
+}
+.loader:after {
+ left: 3.5em;
+}
+@-webkit-keyframes load7 {
+ 0%,
+ 80%,
+ 100% {
+ box-shadow: 0 2.5em 0 -1.3em;
+ }
+ 40% {
+ box-shadow: 0 2.5em 0 -1.3em;
+ }
+}
+@keyframes load7 {
+ 0%,
+ 80%,
+ 100% {
+ box-shadow: 0 2.5em 0 -1.3em;
+ }
+ 40% {
+ box-shadow: 0 2.5em 0 0;
+ }
+}
diff --git a/src/components/LoadingBar.svelte b/src/components/LoadingBar.svelte
deleted file mode 100644
index c8f138642..000000000
--- a/src/components/LoadingBar.svelte
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/src/components/LoadingBlobs.svelte b/src/components/LoadingBlobs.svelte
deleted file mode 100644
index 82770284e..000000000
--- a/src/components/LoadingBlobs.svelte
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
diff --git a/src/components/LoadingDialog.tsx b/src/components/LoadingDialog.tsx
new file mode 100644
index 000000000..3c2f735d6
--- /dev/null
+++ b/src/components/LoadingDialog.tsx
@@ -0,0 +1,49 @@
+import {
+ Heading,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalOverlay,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import LoadingAnimation from "./LoadingAnimation";
+
+export interface LoadingDialogProps {
+ headingId: string;
+ isOpen: boolean;
+}
+
+const LoadingDialog = ({ headingId, isOpen }: LoadingDialogProps) => {
+ return (
+ {}}
+ size="3xl"
+ isCentered
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default LoadingDialog;
diff --git a/src/components/LoadingSpinner.svelte b/src/components/LoadingSpinner.svelte
deleted file mode 100644
index fd5291c0e..000000000
--- a/src/components/LoadingSpinner.svelte
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
diff --git a/src/components/ManualFlashingDialog.tsx b/src/components/ManualFlashingDialog.tsx
new file mode 100644
index 000000000..e49a1b2d6
--- /dev/null
+++ b/src/components/ManualFlashingDialog.tsx
@@ -0,0 +1,94 @@
+import { Button, Image, Text, VStack } from "@chakra-ui/react";
+import Bowser from "bowser";
+import { ReactNode, useCallback } from "react";
+import { FormattedMessage, useIntl } from "react-intl";
+import transferProgramChromeOS from "../images/transfer_program_chromeos.gif";
+import transferProgramMacOS from "../images/transfer_program_macos.gif";
+import transferProgramWindows from "../images/transfer_program_windows.gif";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+import { HexData, HexUrl } from "../model";
+import { downloadHex } from "../utils/fs-util";
+
+interface ImageProps {
+ src: string;
+ height: number;
+}
+
+// TODO: Update ChromeOS and Windows transfer program gif for the data collection program
+// See https://github.com/lancedikson/bowser/blob/master/src/constants.js
+const getImageProps = (os: string): ImageProps => {
+ switch (os) {
+ case "Chrome OS":
+ return { src: transferProgramChromeOS, height: 300 };
+ case "Windows":
+ return { src: transferProgramWindows, height: 362 };
+ case "macOS":
+ return { src: transferProgramMacOS, height: 347 };
+ default:
+ return { src: transferProgramWindows, height: 392 };
+ }
+};
+
+export interface ManualFlashingDialogProps
+ extends Omit {
+ hex: HexData | HexUrl;
+ closeIsPrimaryAction?: boolean;
+}
+
+const ManualFlashingDialog = ({
+ hex,
+ closeIsPrimaryAction,
+ ...props
+}: ManualFlashingDialogProps) => {
+ const intl = useIntl();
+ const browser = Bowser.getParser(window.navigator.userAgent);
+ const osName = browser.getOS().name ?? "unknown";
+
+ const imageProps = getImageProps(osName);
+
+ const handleDownload = useCallback(() => {
+ downloadHex(hex);
+ }, [hex]);
+
+ return (
+
+
+
+ ) : undefined
+ }
+ {...props}
+ >
+
+
+ (
+
+ {chunks}
+
+ ),
+ }}
+ />
+
+
+
+
+
+
+
+ );
+};
+
+export default ManualFlashingDialog;
diff --git a/src/components/MediaQuery.svelte b/src/components/MediaQuery.svelte
deleted file mode 100644
index afba71ea2..000000000
--- a/src/components/MediaQuery.svelte
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
diff --git a/src/components/MenuTransition.svelte b/src/components/MenuTransition.svelte
deleted file mode 100644
index e950ed94e..000000000
--- a/src/components/MenuTransition.svelte
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/MoreMenuButton.tsx b/src/components/MoreMenuButton.tsx
new file mode 100644
index 000000000..448335fda
--- /dev/null
+++ b/src/components/MoreMenuButton.tsx
@@ -0,0 +1,43 @@
+/**
+ * (c) 2021 - 2022, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import {
+ IconButton,
+ MenuButton,
+ MenuButtonProps,
+ ThemeTypings,
+} from "@chakra-ui/react";
+import React, { ForwardedRef } from "react";
+import { MdMoreVert } from "react-icons/md";
+
+interface MoreMenuButtonProps extends MenuButtonProps {
+ size?: ThemeTypings["components"]["Button"]["sizes"];
+ variant?: string;
+}
+
+const MoreMenuButton = React.forwardRef(function MoreMenuButtonInner(
+ { size, variant, ...props }: MoreMenuButtonProps,
+ ref: ForwardedRef
+) {
+ return (
+
+ }
+ size={size}
+ {...props}
+ />
+ );
+});
+
+export default MoreMenuButton;
diff --git a/src/components/NameProjectDialog.tsx b/src/components/NameProjectDialog.tsx
new file mode 100644
index 000000000..c3d7ea0ac
--- /dev/null
+++ b/src/components/NameProjectDialog.tsx
@@ -0,0 +1,106 @@
+/**
+ * (c) 2021, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { Button } from "@chakra-ui/button";
+import { Box, Text, VStack } from "@chakra-ui/layout";
+import {
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalFooter,
+ ModalHeader,
+ ModalOverlay,
+} from "@chakra-ui/modal";
+import {
+ FormControl,
+ FormErrorMessage,
+ FormHelperText,
+ FormLabel,
+ Input,
+} from "@chakra-ui/react";
+import { useCallback, useMemo, useState } from "react";
+import { FormattedMessage } from "react-intl";
+import { useStore } from "../store";
+
+interface NameProjectDialogProps {
+ onClose: () => void;
+ isOpen: boolean;
+ onSave: (newName?: string) => void;
+}
+
+type ValidationResult = "valid" | "project name empty";
+
+const validateProjectName = (name: string): ValidationResult => {
+ return name.trim().length === 0 ? "project name empty" : "valid";
+};
+
+export const NameProjectDialog = ({
+ onClose,
+ isOpen,
+ onSave,
+}: NameProjectDialogProps) => {
+ const initialName = useStore((s) => s.project.header?.name ?? "");
+ const [name, setName] = useState(initialName);
+ const validationResult = useMemo(() => validateProjectName(name), [name]);
+ const isValid = validationResult === "valid";
+ const ref = useCallback((input: HTMLInputElement | null) => {
+ input?.setSelectionRange(0, input.value.length);
+ }, []);
+
+ const handleSubmit = useCallback(() => {
+ onSave(name);
+ }, [name, onSave]);
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setName(e.currentTarget.value)}
+ >
+
+
+
+ {validationResult === "project name empty" && (
+
+
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/src/components/NewGestureButton.svelte b/src/components/NewGestureButton.svelte
deleted file mode 100644
index db42e70e5..000000000
--- a/src/components/NewGestureButton.svelte
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-
-
{$t('content.data.addAction')}
-
-
diff --git a/src/components/NewPageChoice.tsx b/src/components/NewPageChoice.tsx
new file mode 100644
index 000000000..51eec1f0f
--- /dev/null
+++ b/src/components/NewPageChoice.tsx
@@ -0,0 +1,82 @@
+import {
+ Box,
+ BoxProps,
+ Heading,
+ HStack,
+ IconButton,
+ Stack,
+} from "@chakra-ui/react";
+import { ReactElement, ReactNode, useCallback } from "react";
+
+interface NewPageChoice extends BoxProps {
+ children: ReactNode;
+ onClick: () => void;
+ icon: ReactElement;
+ disabled?: boolean;
+ label: string;
+}
+
+const NewPageChoice = ({
+ disabled,
+ children,
+ onClick,
+ icon,
+ label,
+ ...props
+}: NewPageChoice) => {
+ const handleClick = useCallback(() => {
+ if (!disabled) {
+ onClick();
+ }
+ }, [disabled, onClick]);
+ return (
+
+
+
+ {label}
+
+ {children}
+
+
+
+
+
+ );
+};
+
+export default NewPageChoice;
diff --git a/src/components/NotFound.tsx b/src/components/NotFound.tsx
new file mode 100644
index 000000000..8d80e2207
--- /dev/null
+++ b/src/components/NotFound.tsx
@@ -0,0 +1,23 @@
+import { createHomePageUrl } from "../urls";
+import ErrorPage from "./ErrorPage";
+import { FormattedMessage, useIntl } from "react-intl";
+import Link from "./Link";
+import { useDeployment } from "../deployment";
+
+interface NotFoundProps {
+ href?: string;
+}
+
+const NotFound = ({ href }: NotFoundProps) => {
+ const intl = useIntl();
+ const { appNameFull } = useDeployment();
+ return (
+
+
+
+
+
+ );
+};
+
+export default NotFound;
diff --git a/src/components/OpenButton.tsx b/src/components/OpenButton.tsx
new file mode 100644
index 000000000..c11c74f3c
--- /dev/null
+++ b/src/components/OpenButton.tsx
@@ -0,0 +1,23 @@
+import { Button } from "@chakra-ui/react";
+import { useRef } from "react";
+import { RiFolderOpenLine } from "react-icons/ri";
+import { FormattedMessage } from "react-intl";
+import LoadProjectInput, { LoadProjectInputRef } from "./LoadProjectInput";
+
+const OpenButton = () => {
+ const ref = useRef(null);
+ return (
+ <>
+ }
+ onClick={() => ref.current?.chooseFile()}
+ >
+
+
+
+ >
+ );
+};
+
+export default OpenButton;
diff --git a/src/components/PatternBox.svelte b/src/components/PatternBox.svelte
deleted file mode 100644
index 1f7f6edb6..000000000
--- a/src/components/PatternBox.svelte
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/PatternColumnInput.svelte b/src/components/PatternColumnInput.svelte
deleted file mode 100644
index ad5a57074..000000000
--- a/src/components/PatternColumnInput.svelte
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.pattern.inputLabel', {
- values: {
- colNum: colIdx + 1,
- },
- })}
-
-
diff --git a/src/components/PatternMatrix.svelte b/src/components/PatternMatrix.svelte
deleted file mode 100644
index 564225410..000000000
--- a/src/components/PatternMatrix.svelte
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/PercentageDisplay.tsx b/src/components/PercentageDisplay.tsx
new file mode 100644
index 000000000..5ce826756
--- /dev/null
+++ b/src/components/PercentageDisplay.tsx
@@ -0,0 +1,26 @@
+import { BoxProps, Text } from "@chakra-ui/react";
+
+interface PercentageDisplayProps extends BoxProps {
+ value: number;
+ colorScheme?: string;
+}
+
+const PercentageDisplay = ({
+ value,
+ colorScheme = "gray.600",
+ ...rest
+}: PercentageDisplayProps) => {
+ return (
+ {`${Math.round(value * 100)}%`}
+ );
+};
+
+export default PercentageDisplay;
diff --git a/src/components/PercentageMeter.tsx b/src/components/PercentageMeter.tsx
new file mode 100644
index 000000000..6139c433a
--- /dev/null
+++ b/src/components/PercentageMeter.tsx
@@ -0,0 +1,62 @@
+import { HStack, StackProps } from "@chakra-ui/react";
+
+interface PercentageMeterProps extends StackProps {
+ value: number;
+ colorScheme?: string;
+ meterBarWidthPx?: number;
+}
+
+const PercentageMeter = ({
+ value,
+ colorScheme = "gray.600",
+ meterBarWidthPx,
+}: PercentageMeterProps) => {
+ const height = 3;
+ const numTicks = 9;
+ return (
+
+ element.
+ style={{
+ width: `${value * 100}%`,
+ }}
+ h={height}
+ rounded="full"
+ bgColor={colorScheme}
+ />
+
+ {
+ // Adding 2 ticks with no background color for each end of the meter
+ // so that the ticks can be justified using space-between
+ Array(numTicks + 2)
+ .fill(0)
+ .map((_, i) => (
+
+ ))
+ }
+
+
+ );
+};
+
+export default PercentageMeter;
diff --git a/src/components/PleaseConnectFirst.svelte b/src/components/PleaseConnectFirst.svelte
deleted file mode 100644
index 98e15705f..000000000
--- a/src/components/PleaseConnectFirst.svelte
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
- {$t('menu.trainer.notConnected1')}
-
-
- {$t('menu.trainer.notConnected2')}
-
-
-
{$t(
- $state.showConnectHelp || Microbits.getInputMicrobit()
- ? 'actions.reconnect'
- : 'footer.connectButton',
- )}
-
diff --git a/src/components/PreReleaseNotice.tsx b/src/components/PreReleaseNotice.tsx
new file mode 100644
index 000000000..5578fd601
--- /dev/null
+++ b/src/components/PreReleaseNotice.tsx
@@ -0,0 +1,56 @@
+/**
+ * (c) 2021, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { Button } from "@chakra-ui/button";
+import { Flex, HStack, Text } from "@chakra-ui/layout";
+import { useDisclosure } from "@chakra-ui/react";
+import { RiFeedbackFill } from "react-icons/ri";
+import FeedbackForm from "./FeedbackForm";
+import { FormattedMessage } from "react-intl";
+
+const PreReleaseNotice = () => {
+ const feedbackDialogDisclosure = useDisclosure();
+ return (
+ <>
+
+
+
+ This is a beta version and is subject to change without notice
+
+
+ }
+ variant="link"
+ color="white"
+ colorScheme="whiteAlpha"
+ fontWeight="bold"
+ size="xs"
+ p={1}
+ onClick={feedbackDialogDisclosure.onOpen}
+ >
+
+
+
+
+ >
+ );
+};
+
+export default PreReleaseNotice;
diff --git a/src/components/ProjectDropTarget.tsx b/src/components/ProjectDropTarget.tsx
new file mode 100644
index 000000000..ba7b35c8d
--- /dev/null
+++ b/src/components/ProjectDropTarget.tsx
@@ -0,0 +1,28 @@
+/**
+ * (c) 2021, Micro:bit Educational Foundation and contributors
+ *
+ * SPDX-License-Identifier: MIT
+ */
+import { BoxProps } from "@chakra-ui/layout";
+import { useCallback } from "react";
+import FileDropTarget from "./FileDropTarget";
+import { useProject } from "../hooks/project-hooks";
+
+interface ProjectDropTargetProps extends BoxProps {
+ children: React.ReactElement;
+}
+
+const ProjectDropTarget = ({ children }: ProjectDropTargetProps) => {
+ const { loadFile } = useProject();
+ const handleDrop = useCallback(
+ (files: File[]) => {
+ if (files.length === 1) {
+ loadFile(files[0]);
+ }
+ },
+ [loadFile]
+ );
+ return {children} ;
+};
+
+export default ProjectDropTarget;
diff --git a/src/components/PrototypeVersionWarning.svelte b/src/components/PrototypeVersionWarning.svelte
deleted file mode 100644
index 88cfa48ad..000000000
--- a/src/components/PrototypeVersionWarning.svelte
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
{$t('prototype.warning')}
-
diff --git a/src/components/ReconnectHelp.svelte b/src/components/ReconnectHelp.svelte
deleted file mode 100644
index d36ce9c40..000000000
--- a/src/components/ReconnectHelp.svelte
+++ /dev/null
@@ -1,135 +0,0 @@
-
-
-
-
-{#if $state.reconnectState.connectionType !== 'none'}
-
-
- {$t(content.heading)}
-
-
- {$t(content.subtitle)}
-
-
{$t(content.listHeading)}
-
- {$t(content.bulletOne)}
- {$t(content.bulletTwo)}
-
-
-
-
-
-
-{/if}
diff --git a/src/components/Recording.svelte b/src/components/Recording.svelte
deleted file mode 100644
index e3702e31e..000000000
--- a/src/components/Recording.svelte
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
- onDelete(recording)}
- on:focus>
-
-
-
-
diff --git a/src/components/RecordingDialog.tsx b/src/components/RecordingDialog.tsx
new file mode 100644
index 000000000..cffd46132
--- /dev/null
+++ b/src/components/RecordingDialog.tsx
@@ -0,0 +1,281 @@
+import {
+ Button,
+ Heading,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalOverlay,
+ Progress,
+ Text,
+ useToast,
+ VStack,
+} from "@chakra-ui/react";
+import { useCallback, useEffect, useMemo, useRef, useState } from "react";
+import { FormattedMessage, useIntl } from "react-intl";
+import { TimedXYZ } from "../buffered-data";
+import { useBufferedData } from "../buffered-data-hooks";
+import { mlSettings } from "../ml";
+import { GestureData, XYZData } from "../model";
+import { useStore } from "../store";
+
+interface CountdownStage {
+ value: string | number;
+ duration: number;
+ fontSize?: string;
+}
+
+export interface RecordingDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ actionName: string;
+ gestureId: GestureData["ID"];
+}
+
+enum RecordingStatus {
+ None,
+ Recording,
+ Countdown,
+}
+
+const RecordingDialog = ({
+ isOpen,
+ actionName,
+ onClose,
+ gestureId,
+}: RecordingDialogProps) => {
+ const intl = useIntl();
+ const toast = useToast();
+ const recordingStarted = useStore((s) => s.recordingStarted);
+ const recordingStopped = useStore((s) => s.recordingStopped);
+ const addGestureRecordings = useStore((s) => s.addGestureRecordings);
+ const recordingDataSource = useRecordingDataSource();
+ const [recordingStatus, setRecordingStatus] = useState(
+ RecordingStatus.None
+ );
+ const countdownStages: CountdownStage[] = useMemo(
+ () => [
+ { value: 3, duration: 500, fontSize: "8xl" },
+ { value: 2, duration: 500, fontSize: "8xl" },
+ { value: 1, duration: 500, fontSize: "8xl" },
+ {
+ value: intl.formatMessage({ id: "content.data.recordingDialog.go" }),
+ duration: 1000,
+ fontSize: "6xl",
+ },
+ ],
+ [intl]
+ );
+ const [countdownStageIndex, setCountdownStageIndex] = useState(0);
+
+ const handleCleanup = useCallback(() => {
+ recordingStopped();
+ setRecordingStatus(RecordingStatus.None);
+ setCountdownStageIndex(0);
+ setProgress(0);
+ onClose();
+ }, [onClose, recordingStopped]);
+
+ const handleOnClose = useCallback(() => {
+ recordingDataSource.cancelRecording();
+ handleCleanup();
+ }, [handleCleanup, recordingDataSource]);
+
+ useEffect(() => {
+ if (isOpen) {
+ // When dialog is opened, restart countdown
+ setRecordingStatus(RecordingStatus.Countdown);
+ setCountdownStageIndex(0);
+ }
+ }, [isOpen]);
+
+ const [progress, setProgress] = useState(0);
+ useEffect(() => {
+ if (recordingStatus === RecordingStatus.Countdown) {
+ const config = countdownStages[countdownStageIndex];
+
+ const countdownTimeout = setTimeout(() => {
+ if (countdownStageIndex < countdownStages.length - 1) {
+ setCountdownStageIndex(countdownStageIndex + 1);
+ return;
+ } else {
+ setRecordingStatus(RecordingStatus.Recording);
+ recordingStarted();
+ recordingDataSource.startRecording({
+ onDone(data) {
+ addGestureRecordings(gestureId, [{ ID: Date.now(), data }]);
+ handleCleanup();
+ },
+ onError() {
+ handleCleanup();
+
+ toast({
+ position: "top",
+ duration: 5_000,
+ title: intl.formatMessage({
+ id: "alert.recording.disconnectedDuringRecording",
+ }),
+ variant: "subtle",
+ status: "error",
+ });
+ },
+ onProgress: setProgress,
+ });
+ }
+ }, config.duration);
+ return () => {
+ clearTimeout(countdownTimeout);
+ };
+ }
+ }, [
+ countdownStages,
+ isOpen,
+ recordingStatus,
+ countdownStageIndex,
+ recordingDataSource,
+ gestureId,
+ handleOnClose,
+ handleCleanup,
+ toast,
+ intl,
+ recordingStarted,
+ addGestureRecordings,
+ ]);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ {recordingStatus === RecordingStatus.Recording ? (
+
+
+
+ ) : (
+
+ {countdownStages[countdownStageIndex].value}
+
+ )}
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+interface RecordingOptions {
+ onDone: (data: XYZData) => void;
+ onError: () => void;
+ onProgress: (percentage: number) => void;
+}
+
+interface InProgressRecording extends RecordingOptions {
+ startTimeMillis: number;
+}
+
+interface RecordingDataSource {
+ startRecording(options: RecordingOptions): void;
+ cancelRecording(): void;
+}
+
+const useRecordingDataSource = (): RecordingDataSource => {
+ const ref = useRef();
+ const bufferedData = useBufferedData();
+ useEffect(() => {
+ const listener = (sample: TimedXYZ) => {
+ if (ref.current) {
+ const percentage =
+ ((sample.timestamp - ref.current.startTimeMillis) /
+ mlSettings.duration) *
+ 100;
+ ref.current.onProgress(percentage);
+ }
+ };
+ bufferedData.addListener(listener);
+ return () => {
+ bufferedData.removeListener(listener);
+ };
+ }, [bufferedData]);
+
+ return useMemo(
+ () => ({
+ timeout: undefined as ReturnType | undefined,
+
+ startRecording(options: RecordingOptions) {
+ this.timeout = setTimeout(() => {
+ if (ref.current) {
+ const data = bufferedData.getSamples(
+ ref.current.startTimeMillis,
+ ref.current.startTimeMillis + mlSettings.duration
+ );
+ const sampleCount = data.x.length;
+ if (sampleCount < mlSettings.minSamples) {
+ ref.current.onError();
+ ref.current = undefined;
+ } else {
+ ref.current.onProgress(100);
+ ref.current.onDone(data);
+ ref.current = undefined;
+ }
+ }
+ }, mlSettings.duration);
+
+ ref.current = {
+ startTimeMillis: Date.now(),
+ ...options,
+ };
+ },
+ cancelRecording() {
+ clearTimeout(this.timeout);
+ ref.current = undefined;
+ },
+ }),
+ [bufferedData]
+ );
+};
+
+export default RecordingDialog;
diff --git a/src/components/RecordingGraph.tsx b/src/components/RecordingGraph.tsx
new file mode 100644
index 000000000..29d3e4281
--- /dev/null
+++ b/src/components/RecordingGraph.tsx
@@ -0,0 +1,50 @@
+import { Box, BoxProps } from "@chakra-ui/react";
+import {
+ Chart,
+ LineController,
+ LineElement,
+ LinearScale,
+ PointElement,
+ registerables,
+} from "chart.js";
+import { useEffect, useRef } from "react";
+import { XYZData } from "../model";
+import { getConfig as getRecordingChartConfig } from "../recording-graph";
+
+interface RecordingGraphProps extends BoxProps {
+ data: XYZData;
+}
+
+const RecordingGraph = ({ data, ...rest }: RecordingGraphProps) => {
+ const canvasRef = useRef(null);
+
+ useEffect(() => {
+ Chart.unregister(...registerables);
+ Chart.register([LinearScale, LineController, PointElement, LineElement]);
+ const chart = new Chart(
+ canvasRef.current?.getContext("2d") ?? new HTMLCanvasElement(),
+ getRecordingChartConfig(data)
+ );
+ return () => {
+ chart.destroy();
+ };
+ }, [data]);
+
+ const containerRef = useRef(null);
+
+ return (
+
+
+
+ );
+};
+
+export default RecordingGraph;
diff --git a/src/components/ResourceCard.tsx b/src/components/ResourceCard.tsx
new file mode 100644
index 000000000..96eb2b493
--- /dev/null
+++ b/src/components/ResourceCard.tsx
@@ -0,0 +1,46 @@
+import {
+ AspectRatio,
+ HStack,
+ Heading,
+ Image,
+ LinkBox,
+ LinkOverlay,
+ VStack,
+} from "@chakra-ui/react";
+import { ReactNode } from "react";
+import Link from "./Link";
+
+interface ResourceCardProps {
+ url: string;
+ imgSrc: string;
+ title: ReactNode;
+}
+
+const ResourceCard = ({ imgSrc, url, title }: ResourceCardProps) => {
+ return (
+
+
+
+
+
+
+
+
+ {title}
+
+
+
+
+
+ );
+};
+
+export default ResourceCard;
diff --git a/src/components/ResourceCardPlaceholder.tsx b/src/components/ResourceCardPlaceholder.tsx
new file mode 100644
index 000000000..562c23363
--- /dev/null
+++ b/src/components/ResourceCardPlaceholder.tsx
@@ -0,0 +1,35 @@
+import { AspectRatio, Box, Text, VStack } from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+
+const ResourceCardPlaceholder = () => {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ResourceCardPlaceholder;
diff --git a/src/components/ResourcePageLayout.svelte b/src/components/ResourcePageLayout.svelte
deleted file mode 100644
index 58a6b28e6..000000000
--- a/src/components/ResourcePageLayout.svelte
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/SaveDialogs.tsx b/src/components/SaveDialogs.tsx
new file mode 100644
index 000000000..e65dc67fa
--- /dev/null
+++ b/src/components/SaveDialogs.tsx
@@ -0,0 +1,55 @@
+import { useCallback } from "react";
+import { useProject } from "../hooks/project-hooks";
+import { useStore } from "../store";
+import SaveHelpDialog from "./SaveHelpDialog";
+import SaveProgressDialog from "./SaveProgressDialog";
+import { SaveStep } from "../model";
+import { NameProjectDialog } from "./NameProjectDialog";
+
+const SaveDialogs = () => {
+ const setSave = useStore((s) => s.setSave);
+ const projectName = useStore((s) => s.project.header?.name);
+ const isUntitled = projectName === "Untitled";
+ const { step, hex } = useStore((s) => s.save);
+ const setProjectName = useStore((s) => s.setProjectName);
+ const { saveHex } = useProject();
+
+ const handleHelpNext = useCallback(async () => {
+ if (isUntitled) {
+ setSave({ step: SaveStep.ProjectName });
+ } else {
+ await saveHex();
+ }
+ }, [isUntitled, saveHex, setSave]);
+
+ const handleSave = useCallback(
+ async (newName?: string) => {
+ if (newName) {
+ setProjectName(newName);
+ }
+ await saveHex(hex);
+ },
+ [hex, saveHex, setProjectName]
+ );
+
+ const handleClose = useCallback(() => {
+ setSave({ step: SaveStep.None });
+ }, [setSave]);
+
+ switch (step) {
+ case SaveStep.PreSaveHelp:
+ return (
+
+ );
+ case SaveStep.ProjectName:
+ return (
+
+ );
+ case SaveStep.SaveProgress:
+ return ;
+ default:
+ return null;
+ }
+};
+
+export default SaveDialogs;
diff --git a/src/components/SaveHelpDialog.tsx b/src/components/SaveHelpDialog.tsx
new file mode 100644
index 000000000..5cfe0ff3c
--- /dev/null
+++ b/src/components/SaveHelpDialog.tsx
@@ -0,0 +1,83 @@
+import {
+ Button,
+ Checkbox,
+ Heading,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalFooter,
+ ModalHeader,
+ ModalOverlay,
+ Stack,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import { useSettings } from "../store";
+import { ChangeEvent, useCallback } from "react";
+import { useDeployment } from "../deployment";
+
+interface SaveHelpDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ onSave: () => void;
+}
+
+const SaveHelpDialog = ({ isOpen, onClose, onSave }: SaveHelpDialogProps) => {
+ const { appNameFull } = useDeployment();
+ const [settings, setSettings] = useSettings();
+ const skip = !settings.showPreSaveHelp;
+ const handleChangeSkip = useCallback(
+ (e: ChangeEvent) => {
+ setSettings({ showPreSaveHelp: !e.currentTarget.checked });
+ },
+ [setSettings]
+ );
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default SaveHelpDialog;
diff --git a/src/components/SaveProgressDialog.tsx b/src/components/SaveProgressDialog.tsx
new file mode 100644
index 000000000..acc08cdac
--- /dev/null
+++ b/src/components/SaveProgressDialog.tsx
@@ -0,0 +1,46 @@
+import {
+ Heading,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalOverlay,
+ Progress,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+
+export interface SavingDialogProps {
+ isOpen: boolean;
+}
+
+const SaveProgressDialog = ({ isOpen }: SavingDialogProps) => {
+ return (
+ {}}
+ size="2xl"
+ isCentered
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default SaveProgressDialog;
diff --git a/src/components/SelectMicrobitBluetoothDialog.tsx b/src/components/SelectMicrobitBluetoothDialog.tsx
new file mode 100644
index 000000000..a1ab5e84c
--- /dev/null
+++ b/src/components/SelectMicrobitBluetoothDialog.tsx
@@ -0,0 +1,86 @@
+import {
+ Box,
+ Flex,
+ Image,
+ List,
+ ListItem,
+ Text,
+ VisuallyHidden,
+} from "@chakra-ui/react";
+import { FormattedMessage, useIntl } from "react-intl";
+import selectMicrobitImage from "../images/select-microbit-bluetooth.png";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+import ArrowOne from "./ArrowOne";
+import ArrowTwo from "./ArrowTwo";
+
+export interface SelectMicrobitBluetoothDialogProps
+ extends Omit {}
+
+const SelectMicrobitBluetoothDialog = ({
+ ...props
+}: SelectMicrobitBluetoothDialogProps) => {
+ const intl = useIntl();
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ 1.
+
+
+
+
+
+
+
+
+
+ 2.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default SelectMicrobitBluetoothDialog;
diff --git a/src/components/SelectMicrobitUsbDialog.tsx b/src/components/SelectMicrobitUsbDialog.tsx
new file mode 100644
index 000000000..85a555d88
--- /dev/null
+++ b/src/components/SelectMicrobitUsbDialog.tsx
@@ -0,0 +1,82 @@
+import {
+ Box,
+ Flex,
+ Image,
+ List,
+ ListItem,
+ Text,
+ VisuallyHidden,
+} from "@chakra-ui/react";
+import { FormattedMessage, useIntl } from "react-intl";
+import selectMicrobitImage from "../images/select-microbit-web-usb.png";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+import ArrowOne from "./ArrowOne";
+import ArrowTwo from "./ArrowTwo";
+
+export interface SelectMicrobitDialogProps
+ extends Omit {}
+
+const SelectMicrobitUsbDialog = ({ ...props }: SelectMicrobitDialogProps) => {
+ const intl = useIntl();
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ 1.
+
+
+
+
+
+
+
+
+
+ 2.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default SelectMicrobitUsbDialog;
diff --git a/src/components/SettingsMenu.tsx b/src/components/SettingsMenu.tsx
new file mode 100644
index 000000000..7ecc7f6d0
--- /dev/null
+++ b/src/components/SettingsMenu.tsx
@@ -0,0 +1,55 @@
+import {
+ IconButton,
+ Menu,
+ MenuButton,
+ MenuList,
+ ThemeTypings,
+} from "@chakra-ui/react";
+import { useRef } from "react";
+import { RiSettings2Line } from "react-icons/ri";
+import { useIntl } from "react-intl";
+import LanguageMenuItem from "./LanguageMenuItem";
+
+interface SettingsMenuProps {
+ variant?: ThemeTypings["components"]["Menu"]["variants"];
+}
+
+/**
+ * A settings button that triggers a drop-down menu with actions.
+ */
+const SettingsMenu = ({ variant = "plain", ...rest }: SettingsMenuProps) => {
+ const intl = useIntl();
+ const settingsMenuRef = useRef(null);
+
+ return (
+ <>
+
+
+ }
+ variant={variant}
+ isRound
+ h={12}
+ w={12}
+ _focusVisible={{
+ boxShadow: variant === "secondary" ? "outline" : "outlineDark",
+ }}
+ />
+
+
+
+
+ >
+ );
+};
+
+export default SettingsMenu;
diff --git a/src/components/StandardButton.svelte b/src/components/StandardButton.svelte
deleted file mode 100644
index 119c2e439..000000000
--- a/src/components/StandardButton.svelte
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/StartResumeActions.svelte b/src/components/StartResumeActions.svelte
deleted file mode 100644
index c91046b27..000000000
--- a/src/components/StartResumeActions.svelte
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
- {#if hasExistingSession}
- navigate(Paths.DATA)}
- >{$t('footer.resume')}
- {/if}
- {$t('footer.start')}
-
-
- (showDataLossWarning = false)}
- class="w-150 space-y-5">
-
- {$t('content.index.dataWarning.title')}
-
-
-
-
{$t('content.index.dataWarning.subtitleOne')}
-
-
-
-
- {$t('footer.start')}
-
-
-
-
diff --git a/src/components/TestingModelGridView.tsx b/src/components/TestingModelGridView.tsx
new file mode 100644
index 000000000..5f775c715
--- /dev/null
+++ b/src/components/TestingModelGridView.tsx
@@ -0,0 +1,200 @@
+import {
+ Button,
+ ButtonGroup,
+ Grid,
+ GridProps,
+ HStack,
+ Icon,
+ Menu,
+ MenuItem,
+ MenuList,
+ Portal,
+ VStack,
+ VisuallyHidden,
+} from "@chakra-ui/react";
+import { MakeCodeRenderBlocksProvider } from "@microbit/makecode-embed/react";
+import React from "react";
+import { RiArrowRightLine, RiDeleteBin2Line } from "react-icons/ri";
+import { FormattedMessage, useIntl } from "react-intl";
+import { usePrediction } from "../hooks/ml-hooks";
+import { useProject } from "../hooks/project-hooks";
+import { mlSettings } from "../ml";
+import { getMakeCodeLang } from "../settings";
+import { useSettings, useStore } from "../store";
+import { tourElClassname } from "../tours";
+import CertaintyThresholdGridItem from "./CertaintyThresholdGridItem";
+import CodeViewCard from "./CodeViewCard";
+import CodeViewGridItem from "./CodeViewGridItem";
+import GestureNameGridItem from "./GestureNameGridItem";
+import HeadingGrid from "./HeadingGrid";
+import LiveGraphPanel from "./LiveGraphPanel";
+import MoreMenuButton from "./MoreMenuButton";
+
+const gridCommonProps: Partial = {
+ gridTemplateColumns: "290px 360px 40px auto",
+ gap: 3,
+ w: "100%",
+};
+
+const headings = [
+ {
+ titleId: "content.model.output.action.descriptionTitle",
+ descriptionId: "content.model.output.action.descriptionBody",
+ },
+ {
+ titleId: "content.model.output.certainty.descriptionTitle",
+ descriptionId: "content.model.output.certainty.descriptionBody",
+ },
+ // Empty heading for arrow column
+ {},
+ {
+ titleId: "content.model.output.output.descriptionTitle",
+ descriptionId: "content.model.output.output.descriptionBody",
+ },
+];
+
+const TestingModelGridView = () => {
+ const prediction = usePrediction();
+ const { detected, confidences } = prediction ?? {};
+ const intl = useIntl();
+ const gestures = useStore((s) => s.gestures);
+ const setRequiredConfidence = useStore((s) => s.setRequiredConfidence);
+ const { openEditor, project, resetProject, projectEdited } = useProject();
+
+ const detectedLabel =
+ detected?.name ??
+ intl.formatMessage({
+ id: "unknown",
+ });
+
+ const [{ languageId }] = useSettings();
+ const makeCodeLang = getMakeCodeLang(languageId);
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+ {gestures.map((gesture, idx) => {
+ const {
+ ID,
+ name,
+ icon,
+ requiredConfidence: threshold,
+ } = gesture;
+ const isTriggered = detected ? detected.ID === ID : false;
+ return (
+
+
+
+ setRequiredConfidence(ID, val)
+ }
+ currentConfidence={confidences?.[ID]}
+ requiredConfidence={
+ threshold ?? mlSettings.defaultRequiredConfidence
+ }
+ isTriggered={isTriggered}
+ />
+
+
+
+
+
+ );
+ })}
+
+ {projectEdited && }
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+ onClick={resetProject}
+ isDisabled={!projectEdited}
+ >
+
+
+
+
+
+
+
+
+
+ >
+ );
+};
+
+export default TestingModelGridView;
diff --git a/src/components/ToolbarMenu.tsx b/src/components/ToolbarMenu.tsx
new file mode 100644
index 000000000..9a4b0a797
--- /dev/null
+++ b/src/components/ToolbarMenu.tsx
@@ -0,0 +1,49 @@
+import {
+ Box,
+ IconButton,
+ Menu,
+ MenuButton,
+ MenuList,
+ ThemeTypings,
+} from "@chakra-ui/react";
+import { ReactNode } from "react";
+import { RiMenuLine } from "react-icons/ri";
+
+interface ToolbarMenuProps {
+ label: string;
+ isMobile?: boolean;
+ children: ReactNode;
+ icon?: JSX.Element;
+ variant?: ThemeTypings["components"]["Menu"]["variants"];
+ onDarkBackground?: boolean;
+}
+
+const ToolbarMenu = ({
+ label,
+ icon,
+ children,
+ isMobile,
+ variant,
+ onDarkBackground = true,
+}: ToolbarMenuProps) => {
+ return (
+
+
+ }
+ variant={variant}
+ size="lg"
+ fontSize="xl"
+ _focusVisible={{
+ boxShadow: onDarkBackground ? "outlineDark" : "outline",
+ }}
+ />
+ {children}
+
+
+ );
+};
+
+export default ToolbarMenu;
diff --git a/src/components/TrainModelFirstTitle.svelte b/src/components/TrainModelFirstTitle.svelte
deleted file mode 100644
index 549a20782..000000000
--- a/src/components/TrainModelFirstTitle.svelte
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-
- {$t('content.model.trainModelFirstHeading')}
-
-
- {#if !sufficientData}
-
- {$t('content.model.notEnoughDataInfoBody1')}
-
-
- {$t('content.model.notEnoughDataInfoBody2')}
-
- {:else if $state.hasTrainedBefore}
-
- {$t('content.model.retrainModelBody')}
-
- {:else}
-
- {$t('content.model.trainModelBody')}
-
- {/if}
-
-
- {#if !sufficientData}
- navigate(Paths.DATA)}>
- {$t('content.model.addData')}
-
- {:else}
- navigate(Paths.TRAINING)} />
- {/if}
-
-
diff --git a/src/components/TrainModelFlowDialogs.tsx b/src/components/TrainModelFlowDialogs.tsx
new file mode 100644
index 000000000..066a50ef7
--- /dev/null
+++ b/src/components/TrainModelFlowDialogs.tsx
@@ -0,0 +1,55 @@
+import { useCallback } from "react";
+import { useNavigate } from "react-router";
+import { TourId, TrainModelDialogStage } from "../model";
+import { SessionPageId } from "../pages-config";
+import { useStore, useSettings } from "../store";
+import { createSessionPageUrl } from "../urls";
+import TrainingErrorDialog from "./TrainingErrorDialog";
+import TrainingModelProgressDialog from "./TrainingModelProgressDialog";
+import TrainModelIntroDialog from "./TrainModelHelpDialog";
+import TrainModelInsufficientDataDialog from "./TrainModelInsufficientDataDialog";
+
+const TrainModelDialogs = () => {
+ const stage = useStore((s) => s.trainModelDialogStage);
+ const closeTrainModelDialogs = useStore((s) => s.closeTrainModelDialogs);
+ const tourStart = useStore((s) => s.tourStart);
+ const navigate = useNavigate();
+ const trainModel = useStore((s) => s.trainModel);
+ const trainModelProgress = useStore((s) => s.trainModelProgress);
+ const [, setSettings] = useSettings();
+
+ const handleHelpNext = useCallback(
+ async (isSkipNextTime: boolean) => {
+ setSettings({ showPreTrainHelp: !isSkipNextTime });
+ const result = await trainModel();
+ if (result) {
+ navigate(createSessionPageUrl(SessionPageId.TestingModel));
+ tourStart(TourId.TestModelPage);
+ }
+ },
+ [navigate, tourStart, setSettings, trainModel]
+ );
+ return (
+ <>
+
+
+
+
+ >
+ );
+};
+
+export default TrainModelDialogs;
diff --git a/src/components/TrainModelHelpDialog.tsx b/src/components/TrainModelHelpDialog.tsx
new file mode 100644
index 000000000..3e1347152
--- /dev/null
+++ b/src/components/TrainModelHelpDialog.tsx
@@ -0,0 +1,87 @@
+import {
+ Button,
+ Checkbox,
+ Heading,
+ HStack,
+ Image,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { ComponentProps, useCallback, useState } from "react";
+import { FormattedMessage } from "react-intl";
+import trainModelImage from "../images/train_model_black.svg";
+import { useDeployment } from "../deployment";
+
+interface TrainModelHelpDialogProps
+ extends Omit, "children"> {
+ onNext: (isSkipNextTime: boolean) => void;
+}
+
+const TrainModelIntroDialog = ({
+ onNext,
+ ...props
+}: TrainModelHelpDialogProps) => {
+ const { appNameFull } = useDeployment();
+ const [skip, setSkip] = useState(false);
+ const handleNext = useCallback(() => onNext(skip), [onNext, skip]);
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ setSkip(e.target.checked)}
+ >
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default TrainModelIntroDialog;
diff --git a/src/components/TrainModelInsufficientDataDialog.tsx b/src/components/TrainModelInsufficientDataDialog.tsx
new file mode 100644
index 000000000..ed402a066
--- /dev/null
+++ b/src/components/TrainModelInsufficientDataDialog.tsx
@@ -0,0 +1,68 @@
+import {
+ Button,
+ Heading,
+ HStack,
+ Image,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import trainModelImage from "../images/train_model_black.svg";
+import { ComponentProps } from "react";
+
+const TrainModelInsufficientDataDialog = ({
+ onClose,
+ ...rest
+}: Omit, "children">) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default TrainModelInsufficientDataDialog;
diff --git a/src/components/TrainingErrorDialog.tsx b/src/components/TrainingErrorDialog.tsx
new file mode 100644
index 000000000..c4a491d11
--- /dev/null
+++ b/src/components/TrainingErrorDialog.tsx
@@ -0,0 +1,51 @@
+import {
+ Heading,
+ Modal,
+ ModalBody,
+ ModalCloseButton,
+ ModalContent,
+ ModalOverlay,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+
+interface TrainingErrorDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+}
+
+const TrainingErrorDialog = ({ isOpen, onClose }: TrainingErrorDialogProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default TrainingErrorDialog;
diff --git a/src/components/TrainingModelProgressDialog.tsx b/src/components/TrainingModelProgressDialog.tsx
new file mode 100644
index 000000000..e59c51abc
--- /dev/null
+++ b/src/components/TrainingModelProgressDialog.tsx
@@ -0,0 +1,51 @@
+import {
+ Heading,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalOverlay,
+ Progress,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+
+export interface DownloadingDialogProps {
+ isOpen: boolean;
+ progress: number;
+}
+
+const TrainingModelProgressDialog = ({
+ isOpen,
+ progress,
+}: DownloadingDialogProps) => {
+ return (
+ {}}
+ size="2xl"
+ isCentered
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default TrainingModelProgressDialog;
diff --git a/src/components/TrainingStatusSection.svelte b/src/components/TrainingStatusSection.svelte
deleted file mode 100644
index 4d4594daa..000000000
--- a/src/components/TrainingStatusSection.svelte
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
- {$t(statusId)}
-
- {#if descriptionId}
-
{$t(descriptionId)}
- {/if}
-
-
-
diff --git a/src/components/TryAgainDialog.tsx b/src/components/TryAgainDialog.tsx
new file mode 100644
index 000000000..cd19e3472
--- /dev/null
+++ b/src/components/TryAgainDialog.tsx
@@ -0,0 +1,143 @@
+import {
+ Button,
+ HStack,
+ Heading,
+ ListItem,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+ Text,
+ UnorderedList,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import { ConnectionFlowStep } from "../connection-stage-hooks";
+import { useDeployment } from "../deployment";
+
+const OneLineContent = ({ textId }: { textId: string }) => {
+ return (
+
+
+
+ );
+};
+
+const ReplugMicrobitContent = () => {
+ return (
+ <>
+
+
+
+
+ {[
+ "connectMB.usbTryAgain.replugMicrobit3",
+ "connectMB.usbTryAgain.replugMicrobit4",
+ ].map((textId) => (
+
+
+
+
+
+ ))}
+
+
+ >
+ );
+};
+
+const CloseTabsContent = () => {
+ const { appNameShort } = useDeployment();
+ return (
+
+
+
+
+
+
+
+
+ );
+};
+
+const configs = {
+ [ConnectionFlowStep.TryAgainReplugMicrobit]: {
+ headingId: "connectMB.usbTryAgain.heading",
+ children: ,
+ },
+ [ConnectionFlowStep.TryAgainCloseTabs]: {
+ headingId: "connectMB.usbTryAgain.heading",
+ children: ,
+ },
+ [ConnectionFlowStep.TryAgainWebUsbSelectMicrobit]: {
+ headingId: "connectMB.usbTryAgain.heading",
+ children: ,
+ },
+ [ConnectionFlowStep.TryAgainBluetoothSelectMicrobit]: {
+ headingId: "connectMB.bluetooth.heading",
+ children: (
+
+ ),
+ },
+};
+
+interface TryAgainDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ onTryAgain: () => void;
+ type:
+ | ConnectionFlowStep.TryAgainReplugMicrobit
+ | ConnectionFlowStep.TryAgainCloseTabs
+ | ConnectionFlowStep.TryAgainWebUsbSelectMicrobit
+ | ConnectionFlowStep.TryAgainBluetoothSelectMicrobit;
+}
+
+const TryAgainDialog = ({
+ type,
+ isOpen,
+ onClose,
+ onTryAgain,
+}: TryAgainDialogProps) => {
+ const config = configs[type];
+ return (
+
+
+
+
+
+
+
+
+
+ {config.children}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default TryAgainDialog;
diff --git a/src/components/UnplugRadioLinkMicrobitDialog.tsx b/src/components/UnplugRadioLinkMicrobitDialog.tsx
new file mode 100644
index 000000000..01ee0b18d
--- /dev/null
+++ b/src/components/UnplugRadioLinkMicrobitDialog.tsx
@@ -0,0 +1,51 @@
+import { HStack, Image, Text, VStack } from "@chakra-ui/react";
+import { FormattedMessage, useIntl } from "react-intl";
+import unplugMicrobit from "../images/unplug-microbit.gif";
+import microbitWithComputer from "../images/stylised-microbit-with-usb-computer.svg";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+
+export interface ConnectCableDialogProps
+ extends Omit {}
+
+const UnplugRadioLinkMicrobitDialog = ({
+ ...props
+}: ConnectCableDialogProps) => {
+ const intl = useIntl();
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default UnplugRadioLinkMicrobitDialog;
diff --git a/src/components/UnsupportedMicrobitDialog.tsx b/src/components/UnsupportedMicrobitDialog.tsx
new file mode 100644
index 000000000..ad043c041
--- /dev/null
+++ b/src/components/UnsupportedMicrobitDialog.tsx
@@ -0,0 +1,113 @@
+import {
+ Button,
+ HStack,
+ Heading,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { ReactNode } from "react";
+import { FormattedMessage } from "react-intl";
+import { useDeployment } from "../deployment";
+import Link from "./Link";
+
+interface UnsupportedMicrobitDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+ onStartBluetoothClick: () => void;
+ isBluetoothSupported: boolean;
+}
+
+const UnsupportedMicrobitDialog = ({
+ isOpen,
+ onClose,
+ onStartBluetoothClick,
+ isBluetoothSupported,
+}: UnsupportedMicrobitDialogProps) => {
+ const { supportLinks } = useDeployment();
+ return (
+
+
+
+
+
+
+
+
+
+
+ (
+
+ {chunks}
+
+ ),
+ }}
+ />
+
+
+ {isBluetoothSupported ? (
+
+ ) : (
+ (
+
+ {chunks}
+
+ ),
+ }}
+ />
+ )}
+
+
+
+
+
+
+ {isBluetoothSupported ? (
+
+
+
+ ) : (
+
+
+
+ )}
+
+
+
+
+
+ );
+};
+
+export default UnsupportedMicrobitDialog;
diff --git a/src/components/UpCurveArrow.tsx b/src/components/UpCurveArrow.tsx
new file mode 100644
index 000000000..158598db3
--- /dev/null
+++ b/src/components/UpCurveArrow.tsx
@@ -0,0 +1,21 @@
+import { Icon } from "@chakra-ui/react";
+
+interface UpCurveArrowProps {
+ w: string;
+ h: string;
+ color?: string;
+}
+
+const UpCurveArrow = ({ w, h, color }: UpCurveArrowProps) => {
+ return (
+
+
+
+ );
+};
+
+export default UpCurveArrow;
diff --git a/src/components/WebUsbBluetoothUnsupportedDialog.tsx b/src/components/WebUsbBluetoothUnsupportedDialog.tsx
new file mode 100644
index 000000000..43bd93365
--- /dev/null
+++ b/src/components/WebUsbBluetoothUnsupportedDialog.tsx
@@ -0,0 +1,63 @@
+import {
+ Button,
+ HStack,
+ Heading,
+ Modal,
+ ModalBody,
+ ModalContent,
+ ModalFooter,
+ ModalOverlay,
+ Text,
+ VStack,
+} from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+
+interface WebUsbBluetoothUnsupportedDialogProps {
+ isOpen: boolean;
+ onClose: () => void;
+}
+
+const WebUsbBluetoothUnsupportedDialog = ({
+ isOpen,
+ onClose,
+}: WebUsbBluetoothUnsupportedDialogProps) => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default WebUsbBluetoothUnsupportedDialog;
diff --git a/src/components/WhatYouWillNeedDialog.tsx b/src/components/WhatYouWillNeedDialog.tsx
new file mode 100644
index 000000000..d8265f53b
--- /dev/null
+++ b/src/components/WhatYouWillNeedDialog.tsx
@@ -0,0 +1,144 @@
+import { Button, Grid, GridItem, Image, Text, VStack } from "@chakra-ui/react";
+import { FormattedMessage } from "react-intl";
+import batteryPackImage from "../images/stylised-battery-pack.svg";
+import microbitImage from "../images/stylised-microbit-black.svg";
+import twoMicrobitsImage from "../images/stylised-two-microbits-black.svg";
+import usbCableImage from "../images/stylised-usb-cable.svg";
+import computerImage from "../images/stylised_computer.svg";
+import computerBluetoothImage from "../images/stylised_computer_w_bluetooth.svg";
+import ConnectContainerDialog, {
+ ConnectContainerDialogProps,
+} from "./ConnectContainerDialog";
+import ExternalLink from "./ExternalLink";
+import { useDeployment } from "../deployment";
+
+const itemsConfig = {
+ radio: [
+ {
+ imgSrc: twoMicrobitsImage,
+ titleId: "connectMB.radioStart.requirements1",
+ subtitleId: "connectMB.radioStart.requirements1.subtitle",
+ },
+ {
+ imgSrc: computerImage,
+ titleId: "connectMB.radioStart.requirements2",
+ subtitleId: "connectMB.radioStart.requirements2.subtitle",
+ },
+ {
+ imgSrc: usbCableImage,
+ titleId: "connectMB.radioStart.requirements3",
+ },
+ {
+ imgSrc: batteryPackImage,
+ titleId: "connectMB.radioStart.requirements4",
+ subtitleId: "connectMB.radioStart.requirements4.subtitle",
+ },
+ ],
+ bluetooth: [
+ {
+ imgSrc: microbitImage,
+ titleId: "connectMB.bluetoothStart.requirements1",
+ },
+ {
+ imgSrc: computerBluetoothImage,
+ titleId: "connectMB.bluetoothStart.requirements2",
+ subtitleId: "connectMB.bluetoothStart.requirements2.subtitle",
+ },
+ {
+ imgSrc: usbCableImage,
+ titleId: "connectMB.bluetoothStart.requirements3",
+ },
+ {
+ imgSrc: batteryPackImage,
+ titleId: "connectMB.bluetoothStart.requirements4",
+ subtitleId: "connectMB.bluetoothStart.requirements4.subtitle",
+ },
+ ],
+};
+
+export interface WhatYouWillNeedDialogProps
+ extends Omit<
+ ConnectContainerDialogProps,
+ "children" | "onBack" | "headingId"
+ > {
+ reconnect: boolean;
+ type: "radio" | "bluetooth";
+ onLinkClick: (() => void) | undefined;
+}
+
+const WhatYouWillNeedDialog = ({
+ reconnect,
+ type,
+ onLinkClick,
+ ...props
+}: WhatYouWillNeedDialogProps) => {
+ const { supportLinks } = useDeployment();
+ return (
+
+ {onLinkClick && (
+
+
+
+ )}
+ {reconnect && (
+
+ )}
+
+ }
+ >
+ {reconnect && (
+
+
+
+ )}
+
+ {itemsConfig[type].map(({ imgSrc, titleId, subtitleId }) => {
+ return (
+
+
+
+
+
+
+
+ {subtitleId && (
+
+
+
+ )}
+
+
+
+ );
+ })}
+
+
+ );
+};
+
+export default WhatYouWillNeedDialog;
diff --git a/src/components/YoutubeVideoEmbed.tsx b/src/components/YoutubeVideoEmbed.tsx
new file mode 100644
index 000000000..8df16fb07
--- /dev/null
+++ b/src/components/YoutubeVideoEmbed.tsx
@@ -0,0 +1,34 @@
+import { AspectRatio, Box } from "@chakra-ui/react";
+
+export interface YoutubeVideo {
+ alt: string;
+ youtubeId: string;
+}
+
+interface YoutubeVideoProps {
+ alt: string;
+ youtubeId: string;
+}
+
+const YoutubeVideoEmbed = ({ alt, youtubeId }: YoutubeVideoProps) => {
+ return (
+
+
+
+
+
+ );
+};
+
+export default YoutubeVideoEmbed;
diff --git a/src/components/bottom/BottomPanel.svelte b/src/components/bottom/BottomPanel.svelte
deleted file mode 100644
index 4923950e5..000000000
--- a/src/components/bottom/BottomPanel.svelte
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- {#if $state.reconnectState.reconnecting && $state.isInputConnected}
-
-
{$t('connectMB.reconnecting')}
-
- {/if}
-
-
-
- {#if live3dViewVisible}
-
-
-
(isLive3DOpen = true)}>
-
-
-
(isLive3DOpen = false)}>
-
-
-
- {/if}
-
-
-
-
-
diff --git a/src/components/bottom/ConnectedLiveGraphButtons.svelte b/src/components/bottom/ConnectedLiveGraphButtons.svelte
deleted file mode 100644
index e9aef7410..000000000
--- a/src/components/bottom/ConnectedLiveGraphButtons.svelte
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-{#if $state.isPredicting || $state.isTraining || $state.isOutputConnected}
- {#if Microbits.getOutputMicrobit()}
-
- {#if !$state.isOutputConnected || $state.isOutputReady}
-
- {$t('menu.model.disconnect')}
- {:else}
- {$t('menu.model.connect')}
- {/if}
- {/if}
-{/if}
-{#if !$state.isInputConnected}
- {$t(
- $state.showConnectHelp || Microbits.getInputMicrobit()
- ? 'actions.reconnect'
- : 'footer.connectButton',
- )}
-{:else}
- {$t('footer.disconnectButton')}
-{/if}
diff --git a/src/components/bottom/LiveGraphInformationSection.svelte b/src/components/bottom/LiveGraphInformationSection.svelte
deleted file mode 100644
index 4da8a72b8..000000000
--- a/src/components/bottom/LiveGraphInformationSection.svelte
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
diff --git a/src/components/connection-prompt/ConnectDialogContainer.svelte b/src/components/connection-prompt/ConnectDialogContainer.svelte
deleted file mode 100644
index 619fdac0a..000000000
--- a/src/components/connection-prompt/ConnectDialogContainer.svelte
+++ /dev/null
@@ -1,405 +0,0 @@
-
-
-
-
-
-
- {#if $connectionDialogState.connectionState === ConnectDialogStates.START_RADIO}
- {
- $connectionDialogState.connectionState =
- ConnectDialogStates.START_BLUETOOTH;
- flashStage = 'bluetooth';
- }
- : undefined}
- onNextClick={() => {
- $connectionDialogState.connectionState = ConnectDialogStates.CONNECT_CABLE;
- flashStage = 'radio-remote';
- }} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.START_BLUETOOTH}
- {
- $connectionDialogState.connectionState = ConnectDialogStates.START_RADIO;
- flashStage = 'radio-remote';
- }
- : undefined}
- onNextClick={() =>
- ($connectionDialogState.connectionState = ConnectDialogStates.CONNECT_CABLE)} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.CONNECT_CABLE}
- {#if flashStage === 'bluetooth'}
-
- ($connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_BATTERY)}
- onBackClick={() =>
- ($connectionDialogState.connectionState =
- ConnectDialogStates.START_BLUETOOTH)}
- onNextClick={() =>
- usb
- ? ($connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_TUTORIAL_USB)
- : ($connectionDialogState.connectionState =
- ConnectDialogStates.MANUAL_TUTORIAL)} />
- {:else if flashStage === 'radio-remote'}
- {
- $connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_BATTERY;
- flashStage = 'radio-bridge';
- }
- : undefined}
- onBackClick={() =>
- ($connectionDialogState.connectionState = ConnectDialogStates.START_RADIO)}
- onNextClick={() => {
- $connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_TUTORIAL_USB;
- flashStage = 'radio-remote';
- }} />
- {:else if flashStage === 'radio-bridge'}
- {
- $connectionDialogState.connectionState =
- ConnectDialogStates.START_BLUETOOTH;
- flashStage = 'bluetooth';
- }
- : undefined}
- onBackClick={() => {
- $connectionDialogState.connectionState = ConnectDialogStates.CONNECT_BATTERY;
- flashStage = 'radio-remote';
- }}
- onNextClick={() =>
- ($connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_TUTORIAL_USB)} />
- {/if}
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.CONNECT_TUTORIAL_USB}
-
- ($connectionDialogState.connectionState = ConnectDialogStates.CONNECT_CABLE)}
- onNextClick={tryMicrobitUSBConnection} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.CONNECT_BATTERY}
- {#if flashStage === 'bluetooth'}
-
- usb
- ? ($connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_TUTORIAL_USB)
- : ($connectionDialogState.connectionState =
- ConnectDialogStates.MANUAL_TUTORIAL)}
- onNextClick={() =>
- ($connectionDialogState.connectionState = ConnectDialogStates.BLUETOOTH)} />
- {:else}
- {
- $connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_TUTORIAL_USB;
- flashStage = 'radio-remote';
- }}
- onNextClick={() => {
- $connectionDialogState.connectionState = ConnectDialogStates.CONNECT_CABLE;
- flashStage = 'radio-bridge';
- }} />
- {/if}
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.BLUETOOTH}
- {
- $connectionDialogState.connectionState = ConnectDialogStates.CONNECT_BATTERY;
- }}
- onNextClick={() => {
- $connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_TUTORIAL_BLUETOOTH;
- }}
- deviceState={$connectionDialogState.deviceState} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.CONNECT_TUTORIAL_BLUETOOTH}
-
- ($connectionDialogState.connectionState = ConnectDialogStates.BLUETOOTH)}
- onNextClick={tryMicrobitBluetoothConnection} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.BLUETOOTH_CONNECTING}
-
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.CONNECTING_MICROBITS}
-
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.BAD_FIRMWARE}
-
- ($connectionDialogState.connectionState = ConnectDialogStates.MANUAL_TUTORIAL)}
- onTryAgain={() =>
- ($connectionDialogState.connectionState = ConnectDialogStates.CONNECT_CABLE)}
- onCancel={endFlow} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.USB_DOWNLOADING}
-
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.MANUAL_TUTORIAL}
-
- usb
- ? ($connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_TUTORIAL_USB)
- : ($connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_CABLE)}
- onNextClick={() =>
- ($connectionDialogState.connectionState =
- ConnectDialogStates.CONNECT_BATTERY)} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.USB_TRY_AGAIN}
- {
- $connectionDialogState.connectionState = ConnectDialogStates.CONNECT_CABLE;
- }} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.BLUETOOTH_TRY_AGAIN}
- {
- $connectionDialogState.connectionState = ConnectDialogStates.BLUETOOTH;
- }} />
- {:else if $connectionDialogState.connectionState === ConnectDialogStates.MICROBIT_UNSUPPORTED}
- {
- $connectionDialogState.connectionState = ConnectDialogStates.START_BLUETOOTH;
- }}
- onClose={endFlow} />
- {/if}
-
-
diff --git a/src/components/connection-prompt/ConnectSameDialog.svelte b/src/components/connection-prompt/ConnectSameDialog.svelte
deleted file mode 100644
index b4dada3af..000000000
--- a/src/components/connection-prompt/ConnectSameDialog.svelte
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
- {$t('connectMB.output.header')}
-
-
-
-
-
-
- {$t('connectMB.outputMB.same')}
-
-
- {$t('connectMB.outputMB.sameButton')}
-
-
-
-
- {$t('connectMB.outputMB.different')}
-
-
- {$t('connectMB.outputMB.otherButton')}
-
-
-
diff --git a/src/components/connection-prompt/WebBluetoothTryAgain.svelte b/src/components/connection-prompt/WebBluetoothTryAgain.svelte
deleted file mode 100644
index 3b6076650..000000000
--- a/src/components/connection-prompt/WebBluetoothTryAgain.svelte
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.bluetooth.heading')}
-
-
-
{$t('connectMB.bluetooth.cancelledConnection')}
-
- {$t('actions.cancel')}
- {$t('connectMB.tryAgain')}
-
-
-
diff --git a/src/components/connection-prompt/WebUsbTryAgain.svelte b/src/components/connection-prompt/WebUsbTryAgain.svelte
deleted file mode 100644
index bf342dc7e..000000000
--- a/src/components/connection-prompt/WebUsbTryAgain.svelte
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
-
-
-
{$t('connectMB.usbTryAgain.heading')}
-
- {#if type === 'select microbit'}
-
{$t('connectMB.usbTryAgain.selectMicrobit')}
- {:else if type === 'close tabs'}
-
{$t('connectMB.usbTryAgain.closeTabs1')}
-
{$t('connectMB.usbTryAgain.closeTabs2')}
- {:else}
-
{$t('connectMB.usbTryAgain.replugMicrobit1')}
-
-
-
{$t('connectMB.usbTryAgain.replugMicrobit2')}
-
-
-
- {/if}
-
- {$t('actions.cancel')}
- {$t('connectMB.tryAgain')}
-
-
-
diff --git a/src/components/connection-prompt/WhatYouWillNeedDialog.svelte b/src/components/connection-prompt/WhatYouWillNeedDialog.svelte
deleted file mode 100644
index ff517044a..000000000
--- a/src/components/connection-prompt/WhatYouWillNeedDialog.svelte
+++ /dev/null
@@ -1,69 +0,0 @@
-
-
-
-
-
-
{$t(headingId)}
-
- {#if $state.reconnectState.reconnectFailed}
- {$t('reconnectFailed.subtitle')}
- {/if}
-
-
- {#each items as item}
-
-
-
- {$t(item.titleId)}
-
- {#if item.subtitleId}
-
{$t(item.subtitleId)}
- {/if}
-
- {/each}
-
-
-
-
-
{$t('connectMB.nextButton')}
-
-
diff --git a/src/components/connection-prompt/arrows/ArrowOne.svelte b/src/components/connection-prompt/arrows/ArrowOne.svelte
deleted file mode 100644
index 92e947f56..000000000
--- a/src/components/connection-prompt/arrows/ArrowOne.svelte
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/connection-prompt/arrows/ArrowTwo.svelte b/src/components/connection-prompt/arrows/ArrowTwo.svelte
deleted file mode 100644
index 09820d556..000000000
--- a/src/components/connection-prompt/arrows/ArrowTwo.svelte
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/connection-prompt/bluetooth/BluetoothConnectDialog.svelte b/src/components/connection-prompt/bluetooth/BluetoothConnectDialog.svelte
deleted file mode 100644
index 033f846b4..000000000
--- a/src/components/connection-prompt/bluetooth/BluetoothConnectDialog.svelte
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.pattern.heading')}
-
-
{$t('connectMB.pattern.subtitle')}
-
-
-
- {$t('connectMB.bluetooth.invalidPattern')}
-
-
-
- {$t('connectMB.backButton')}
- {$t('connectMB.nextButton')}
-
-
diff --git a/src/components/connection-prompt/bluetooth/BluetoothConnectingDialog.svelte b/src/components/connection-prompt/bluetooth/BluetoothConnectingDialog.svelte
deleted file mode 100644
index 5c3653ac5..000000000
--- a/src/components/connection-prompt/bluetooth/BluetoothConnectingDialog.svelte
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.bluetooth.heading')}
-
-
-
{$t('connectMB.connecting')}
-
-
-
diff --git a/src/components/connection-prompt/bluetooth/ConnectBatteryDialog.svelte b/src/components/connection-prompt/bluetooth/ConnectBatteryDialog.svelte
deleted file mode 100644
index cabf2ded6..000000000
--- a/src/components/connection-prompt/bluetooth/ConnectBatteryDialog.svelte
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.connectBattery.heading')}
-
-
-
-
- {$t('connectMB.backButton')}
- {$t('connectMB.nextButton')}
-
diff --git a/src/components/connection-prompt/bluetooth/ConnectCableDialog.svelte b/src/components/connection-prompt/bluetooth/ConnectCableDialog.svelte
deleted file mode 100644
index 910d7ac4d..000000000
--- a/src/components/connection-prompt/bluetooth/ConnectCableDialog.svelte
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
- {$t(titleId)}
-
-
-
- {$t(subtitleId)}
-
-
-
-
-
- {#if onSkipClick}
-
{$t('connectMB.connectCable.skip')}
- {/if}
- {#if onAltClick && altClickId}
-
{$t(altClickId)}
- {/if}
-
- {$t('connectMB.backButton')}
- {$t('connectMB.nextButton')}
-
-
diff --git a/src/components/connection-prompt/bluetooth/SelectMicrobitDialogBluetooth.svelte b/src/components/connection-prompt/bluetooth/SelectMicrobitDialogBluetooth.svelte
deleted file mode 100644
index 1d5777d13..000000000
--- a/src/components/connection-prompt/bluetooth/SelectMicrobitDialogBluetooth.svelte
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.webPopup')}
-
-
-
-
-
- {$t('connectMB.webPopup.instruction.heading')}:
-
-
- 1. {$t('connectMB.webPopup.instruction1')}
-
- 2.
- {$t('connectMB.webPopup.webBluetooth.instruction2')}
-
-
-
-
-
-
-
-
- {$t('connectMB.backButton')}
- {$t('connectMB.nextButton')}
-
diff --git a/src/components/connection-prompt/bluetooth/StartBluetoothDialog.svelte b/src/components/connection-prompt/bluetooth/StartBluetoothDialog.svelte
deleted file mode 100644
index 8ab58f7cd..000000000
--- a/src/components/connection-prompt/bluetooth/StartBluetoothDialog.svelte
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
diff --git a/src/components/connection-prompt/radio/ConnectingMicrobits.svelte b/src/components/connection-prompt/radio/ConnectingMicrobits.svelte
deleted file mode 100644
index 307ece23e..000000000
--- a/src/components/connection-prompt/radio/ConnectingMicrobits.svelte
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.radio.heading')}
-
-
-
{$t('connectMB.connecting')}
-
-
-
diff --git a/src/components/connection-prompt/radio/StartRadioDialog.svelte b/src/components/connection-prompt/radio/StartRadioDialog.svelte
deleted file mode 100644
index ed176e472..000000000
--- a/src/components/connection-prompt/radio/StartRadioDialog.svelte
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-
-
diff --git a/src/components/connection-prompt/usb/BrokenFirmwareDetected.svelte b/src/components/connection-prompt/usb/BrokenFirmwareDetected.svelte
deleted file mode 100644
index 01890c141..000000000
--- a/src/components/connection-prompt/usb/BrokenFirmwareDetected.svelte
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
{$t('connectMB.usb.firmwareBroken.heading')}
-
-
- {$t('connectMB.usb.firmwareBroken.content1')}
-
-
-
-
-
-
- {$t('connectMB.usb.firmwareBroken.content3')}
-
-
-
-
- {$t('actions.cancel')}
- {#if flashStage === 'bluetooth'}
- {$t('connectMB.usb.firmwareBroken.skip')}
- {/if}
- {$t('connectMB.tryAgain')}
-
-
-
diff --git a/src/components/connection-prompt/usb/DownloadingDialog.svelte b/src/components/connection-prompt/usb/DownloadingDialog.svelte
deleted file mode 100644
index 7c069c1cc..000000000
--- a/src/components/connection-prompt/usb/DownloadingDialog.svelte
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
- {#if flashStage === 'bluetooth'}
- {$t('connectMB.usbDownloading.header')}
- {:else if flashStage === 'radio-remote'}
- {$t('connectMB.usbDownloadingMB1.header')}
- {:else if flashStage === 'radio-bridge'}
- {$t('connectMB.usbDownloadingMB2.header')}
- {/if}
-
-
- {$t('connectMB.usbDownloading.subtitle')}
-
-
-
diff --git a/src/components/connection-prompt/usb/SelectMicrobitDialogUsb.svelte b/src/components/connection-prompt/usb/SelectMicrobitDialogUsb.svelte
deleted file mode 100644
index be4b5ee13..000000000
--- a/src/components/connection-prompt/usb/SelectMicrobitDialogUsb.svelte
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.webPopup')}
-
-
-
-
-
- {$t('connectMB.webPopup.instruction.heading')}:
-
-
- 1. {$t('connectMB.webPopup.instruction1')}
-
- 2. {$t('connectMB.webPopup.webUsb.instruction2')}
-
-
-
-
-
-
-
-
- {$t('connectMB.backButton')}
- {$t('connectMB.nextButton')}
-
diff --git a/src/components/connection-prompt/usb/manual/ManualInstallTutorial.svelte b/src/components/connection-prompt/usb/manual/ManualInstallTutorial.svelte
deleted file mode 100644
index 25d9f8fc0..000000000
--- a/src/components/connection-prompt/usb/manual/ManualInstallTutorial.svelte
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
- {$t('connectMB.transferHex.heading')}
-
-
-
-
-
-
- {$t('connectMB.transferHex.message')}
-
-
-
- {$t('connectMB.backButton')}
- {$t('connectMB.nextButton')}
-
-
-
diff --git a/src/components/control-bar/ControlBar.svelte b/src/components/control-bar/ControlBar.svelte
deleted file mode 100644
index 6a7790119..000000000
--- a/src/components/control-bar/ControlBar.svelte
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
diff --git a/src/components/control-bar/control-bar-items/AboutDialog.svelte b/src/components/control-bar/control-bar-items/AboutDialog.svelte
deleted file mode 100644
index 2f306fc0f..000000000
--- a/src/components/control-bar/control-bar-items/AboutDialog.svelte
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {$t('content.index.title')} {import.meta.env.VITE_APP_VERSION} GitHub
- {$t('about.softwareVersions')}
-
-
-
-
- {$t('actions.close')}
-
-
-
diff --git a/src/components/control-bar/control-bar-items/ExpandableControlBarMenu.svelte b/src/components/control-bar/control-bar-items/ExpandableControlBarMenu.svelte
deleted file mode 100644
index 589df7ee0..000000000
--- a/src/components/control-bar/control-bar-items/ExpandableControlBarMenu.svelte
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
- {#if isExpanded}
-
-
-
- {/if}
-
diff --git a/src/components/control-bar/control-bar-items/HelpMenu.svelte b/src/components/control-bar/control-bar-items/HelpMenu.svelte
deleted file mode 100644
index aa2e6f6b6..000000000
--- a/src/components/control-bar/control-bar-items/HelpMenu.svelte
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {#if $open}
-
-
-
-
- {$t('helpMenu.helpAndSupport')}
-
-
-
-
-
- {$t('helpMenu.termsOfUse')}
-
-
-
- {$t('helpMenu.privacyPolicy')}
-
-
-
- {$t('helpMenu.cookies')}
-
-
-
-
-
- {$t('helpMenu.about')}
-
-
-
- {/if}
-
-
diff --git a/src/components/control-bar/control-bar-items/LanguageDialog.svelte b/src/components/control-bar/control-bar-items/LanguageDialog.svelte
deleted file mode 100644
index cda58b0bf..000000000
--- a/src/components/control-bar/control-bar-items/LanguageDialog.svelte
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
- {$t('languageDialog.title')}
-
-
-
- {#each allLanguages as language}
-
{
- $currentLocale = language.id;
- onClose();
- }}>
-
-
{language.name}
-
{language.enName}
-
-
- {/each}
-
-
- {$t('actions.close')}
-
-
-
diff --git a/src/components/control-bar/control-bar-items/MenuItem.svelte b/src/components/control-bar/control-bar-items/MenuItem.svelte
deleted file mode 100644
index 21d631fda..000000000
--- a/src/components/control-bar/control-bar-items/MenuItem.svelte
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/src/components/control-bar/control-bar-items/MenuItems.svelte b/src/components/control-bar/control-bar-items/MenuItems.svelte
deleted file mode 100644
index aae335c52..000000000
--- a/src/components/control-bar/control-bar-items/MenuItems.svelte
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
diff --git a/src/components/control-bar/control-bar-items/SelectLanguageControlBarDropdown.svelte b/src/components/control-bar/control-bar-items/SelectLanguageControlBarDropdown.svelte
deleted file mode 100644
index ff72db45d..000000000
--- a/src/components/control-bar/control-bar-items/SelectLanguageControlBarDropdown.svelte
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- {#each $locales as l}
- {l}
- {/each}
-
diff --git a/src/components/control-bar/control-bar-items/SettingsMenu.svelte b/src/components/control-bar/control-bar-items/SettingsMenu.svelte
deleted file mode 100644
index daf02db72..000000000
--- a/src/components/control-bar/control-bar-items/SettingsMenu.svelte
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- {#if $open}
-
-
-
-
- {$t('languageDialog.title')}
-
-
-
- {/if}
-
-
diff --git a/src/components/datacollection/DataPageControlBar.svelte b/src/components/datacollection/DataPageControlBar.svelte
deleted file mode 100644
index 5fc02113c..000000000
--- a/src/components/datacollection/DataPageControlBar.svelte
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
- {$t('content.data.controlbar.button.uploadData')}
-
-
- {$t('content.data.controlbar.button.downloadData')}
-
-
- {$t('content.data.controlbar.button.clearData')}
-
-
diff --git a/src/components/datacollection/DataPageMenu.svelte b/src/components/datacollection/DataPageMenu.svelte
deleted file mode 100644
index 02d3ec226..000000000
--- a/src/components/datacollection/DataPageMenu.svelte
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
- {#if $open}
-
-
-
-
- {$t('content.data.controlbar.button.uploadData')}
-
-
-
- {$t('content.data.controlbar.button.downloadData')}
-
-
-
- {$t('content.data.controlbar.button.clearData')}
-
-
-
- {/if}
-
diff --git a/src/components/datacollection/RecordInformationContent.svelte b/src/components/datacollection/RecordInformationContent.svelte
deleted file mode 100644
index d616d0f17..000000000
--- a/src/components/datacollection/RecordInformationContent.svelte
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
- {$t('content.data.choice.header')}
-
-
- {$t('content.data.choice.body')}
-
-
-
-
-
-
- {$t('content.index.recordButtonDescription')}
-
-
-
diff --git a/src/components/dialogs/AppVersionRedirectDialog.svelte b/src/components/dialogs/AppVersionRedirectDialog.svelte
deleted file mode 100644
index 44a815f27..000000000
--- a/src/components/dialogs/AppVersionRedirectDialog.svelte
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
- {$t('popup.appVersionRedirect.header')}
-
-
-
-
{$t('popup.appVersionRedirect.explain')}
-
- {$t('popup.appVersionRedirect.button.redirect')}
- {$t('popup.appVersionRedirect.button.stay')}
-
-
{$t('popup.appVersionRedirect.uk')}
-
-
-
diff --git a/src/components/dialogs/BaseDialog.svelte b/src/components/dialogs/BaseDialog.svelte
deleted file mode 100644
index 73d33c521..000000000
--- a/src/components/dialogs/BaseDialog.svelte
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-
-
-
-
-{#if isOpen}
-
-
-
-
-{/if}
diff --git a/src/components/dialogs/CompatibilityWarningDialog.svelte b/src/components/dialogs/CompatibilityWarningDialog.svelte
deleted file mode 100644
index c6759e983..000000000
--- a/src/components/dialogs/CompatibilityWarningDialog.svelte
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
- {$t('popup.compatibility.header')}
-
-
-
-
-
{$t('popup.compatibility.explain')}
-
{$t('popup.compatibility.advice')}
-
-
- {$t('actions.close')}
-
-
-
-
diff --git a/src/components/dialogs/PerformanceWarningDialog.svelte b/src/components/dialogs/PerformanceWarningDialog.svelte
deleted file mode 100644
index d4c2ad43b..000000000
--- a/src/components/dialogs/PerformanceWarningDialog.svelte
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
- {}} class="w-150 space-y-5">
-
- {$t('performanceWarning.heading')}
-
-
- {$t('performanceWarning.content1')}
- {$t('performanceWarning.content2')}
-
- {$t('performanceWarning.troubleshoot')}
-
-
-
-
{$t('performanceWarning.ignore')}
-
-
- {}}>{$t('actions.cancel')}
- {}}
- >{$t('performanceWarning.nextButton')}
-
-
-
-
diff --git a/src/components/dialogs/SignUpDialog.svelte b/src/components/dialogs/SignUpDialog.svelte
deleted file mode 100644
index bcd9e92c0..000000000
--- a/src/components/dialogs/SignUpDialog.svelte
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
- {$t('sign-up.title')}
-
-
-
-
-
{$t('sign-up.content')}
-
-
-
-
- {$t('sign-up.skip-action')}
-
-
- {$t('sign-up.sign-up-action')}
-
-
-
-
-
-
-
-
diff --git a/src/components/dialogs/StandardDialog.svelte b/src/components/dialogs/StandardDialog.svelte
deleted file mode 100644
index e1cdca702..000000000
--- a/src/components/dialogs/StandardDialog.svelte
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
-
-
- {#if $open}
-
-
- {#if hasCloseButton}
-
-
-
-
-
- {/if}
-
-
-
-
-
-
-
- {#if !$$slots.heading && !$$slots.body}
-
- {/if}
-
-
- {/if}
-
diff --git a/src/components/dialogs/UnsupportedMicrobitWarningDialog.svelte b/src/components/dialogs/UnsupportedMicrobitWarningDialog.svelte
deleted file mode 100644
index d1d83f82a..000000000
--- a/src/components/dialogs/UnsupportedMicrobitWarningDialog.svelte
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
{$t('connectMB.unsupportedMicrobit.header')}
-
-
-
-
-
- {#if bluetooth}
-
- {$t('connectMB.unsupportedMicrobit.withBluetooth')}
-
- {:else}
-
-
-
- {/if}
-
-
- {#if bluetooth}
- {$t('connectMB.unsupportedMicrobit.ctaWithBluetooth')}
- {:else}
- {$t('actions.close')}
- {/if}
-
-
-
diff --git a/src/components/graphs/DimensionLabels.svelte b/src/components/graphs/DimensionLabels.svelte
deleted file mode 100644
index ad26ad61b..000000000
--- a/src/components/graphs/DimensionLabels.svelte
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
-{#if $state.isInputConnected}
-
- {#each labels as dimension}
-
-
- {dimension.label}
-
- {/each}
-
-{/if}
diff --git a/src/components/graphs/LiveGraph.svelte b/src/components/graphs/LiveGraph.svelte
deleted file mode 100644
index adfe60ce2..000000000
--- a/src/components/graphs/LiveGraph.svelte
+++ /dev/null
@@ -1,98 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/src/components/graphs/RecordingGraph.svelte b/src/components/graphs/RecordingGraph.svelte
deleted file mode 100644
index e46f3a180..000000000
--- a/src/components/graphs/RecordingGraph.svelte
+++ /dev/null
@@ -1,251 +0,0 @@
-
-
-
-
-
-
- {#if enableInspector && !isNaN(hoverIndex)}
-
- {hoverIndex}
-
- {/if}
-
-
-
- {#if enableInspector}
-
- {/if}
-
diff --git a/src/components/information/Information.svelte b/src/components/information/Information.svelte
deleted file mode 100644
index d5ce2d295..000000000
--- a/src/components/information/Information.svelte
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
- {#if iconText !== undefined}
-
- {iconText}
-
- {/if}
-
-
-
-
-
-
- {#if isOpen}
-
-
-
- {#if titleText}
-
- {titleText}
-
- {/if}
- {#if bodyText}
-
- {bodyText}
-
- {/if}
-
-
- {/if}
-
-
diff --git a/src/components/information/InformationComponentUtility.ts b/src/components/information/InformationComponentUtility.ts
deleted file mode 100644
index 64cbbb5cb..000000000
--- a/src/components/information/InformationComponentUtility.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * (c) 2023, Center for Computational Thinking and Design at Aarhus University and contributors
- *
- * SPDX-License-Identifier: MIT
- */
-
-import windi from '../../../windi.config.js';
-export const getInfoBoxColors = (isLightTheme: boolean) => {
- return {
- backgroundColor: isLightTheme
- ? windi.theme.extend.colors.infobglight
- : windi.theme.extend.colors.infobgdark,
- iconColor: isLightTheme
- ? windi.theme.extend.colors.infoiconlight
- : windi.theme.extend.colors.infoicondark,
- iconTextColor: isLightTheme
- ? windi.theme.extend.colors.infotextlight
- : windi.theme.extend.colors.infotextdark,
- textColor: isLightTheme
- ? windi.theme.extend.colors.primarytext
- : windi.theme.extend.colors.secondarytext,
- };
-};
diff --git a/src/components/output/OutputGesture.svelte b/src/components/output/OutputGesture.svelte
deleted file mode 100644
index 8042db080..000000000
--- a/src/components/output/OutputGesture.svelte
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-{#if variant === 'stack'}
-
-{/if}
-
-{#if variant === 'tile'}
-
-{/if}
diff --git a/src/components/output/OutputGestureStack.svelte b/src/components/output/OutputGestureStack.svelte
deleted file mode 100644
index d99d26b8d..000000000
--- a/src/components/output/OutputGestureStack.svelte
+++ /dev/null
@@ -1,288 +0,0 @@
-
-
-
-
-
-
-
-
- {$gesture.name}
-
-
-
-
-
-
-
-
-
-
- {#each Array(9) as _, index (index)}
-
- {/each}
-
-
-
- {Math.round(meterWidthPct)}%
-
-
-
-
- {$t('content.model.output.recognitionPoint')}
-
-
-
- {#if enableOutputGestures}
-
-
-
-
-
- {/if}
-
-
-{#if enableOutputGestures}
-
-
-
-
(hasLoadedMicrobitImage = true)} />
-
-
-
-
-
-
-
-
-{/if}
diff --git a/src/components/output/OutputGestureTile.svelte b/src/components/output/OutputGestureTile.svelte
deleted file mode 100644
index 77cb4e3ea..000000000
--- a/src/components/output/OutputGestureTile.svelte
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
-
-
-
{$gesture.name}
-
-
-
-
-
-
-
-
-
-
- {#each [75, 50, 25] as line}
-
- {/each}
-
-
-
-
-
-
-
diff --git a/src/components/output/OutputMatrix.svelte b/src/components/output/OutputMatrix.svelte
deleted file mode 100644
index ec922e2d6..000000000
--- a/src/components/output/OutputMatrix.svelte
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
-
-
-
-