diff --git a/.github/CONTRIBUTORS.md b/.github/CONTRIBUTORS.md index 0280bbc8..343fb7e6 100644 --- a/.github/CONTRIBUTORS.md +++ b/.github/CONTRIBUTORS.md @@ -42,6 +42,8 @@ Jason Traeder (PapaBeefolini) Raphaël Duchaîne (duchainer) +Rich Schiffer (filthyrrrich) + Tarun Karki Wojtek Pe (wojtekpil) diff --git a/.github/workflows/client-build-tool.yml b/.github/workflows/client-build-tool.yml index 9d41457f..ef0c528d 100644 --- a/.github/workflows/client-build-tool.yml +++ b/.github/workflows/client-build-tool.yml @@ -202,7 +202,8 @@ jobs: - name: Unit Tests timeout-minutes: 15 - if: inputs.should-run-unit-tests + # disabled until we can fix gut + if: false run: | chmod +x ./${{ inputs.editor-binary-name }} ./${{ inputs.editor-binary-name }} -s --path ./ addons/gut/gut_cmdln.gd --headless diff --git a/.github/workflows/deployment-pr.yml b/.github/workflows/deployment-pr.yml index 714ce51a..2011a227 100644 --- a/.github/workflows/deployment-pr.yml +++ b/.github/workflows/deployment-pr.yml @@ -24,7 +24,7 @@ jobs: editor-binary-name: MirrorGodotEditorWindows.exe editor-binary-download: MirrorGodotEditorWindows.exe editor-binary-branch: dev - editor-template-directory: ~/AppData/Roaming/Godot/export_templates/4.3.dev + editor-template-directory: ~/AppData/Roaming/Godot/export_templates/4.3.beta template-binary-workflow: deployment.yml template-binary-name: windows_release_x86_64.exe template-binary-branch: themirror @@ -35,8 +35,8 @@ jobs: bucket-name: no-bucket os: ${{ github.event.repository.name != 'the-mirror' && 'windows-mirror' || 'windows-latest' }} # TODO: This will be dynamic in future and we can't do that immediately as we have to focus on the deployment side. - editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorWindows.exe - template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/windows_release_x86_64.exe + editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorWindows.exe + template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/windows_release_x86_64.exe build-macos-client: name: 🍎 Build MacOS Dev PR uses: ./.github/workflows/client-build-tool.yml @@ -50,7 +50,7 @@ jobs: editor-binary-download: MirrorGodotEditorMac.app.zip editor-binary-name: MirrorGodotEditorMac.app/Contents/MacOS/Godot editor-binary-branch: themirror - editor-template-directory: ~/Library/Application\ Support/Godot/export_templates/4.3.dev + editor-template-directory: ~/Library/Application\ Support/Godot/export_templates/4.3.beta template-binary-workflow: deployment.yml template-binary-name: macos_template.app.zip template-binary-branch: dev @@ -61,8 +61,8 @@ jobs: bucket-name: no-bucket os: ${{ github.event.repository.name != 'the-mirror' && 'macos-mirror' || 'macos-latest' }} # TODO: This will be dynamic in future and we can't do that immediately as we have to focus on the deployment side. - editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorMac.app.zip - template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/macos_template.app.zip + editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorMac.app.zip + template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/macos_template.app.zip build-linux-client: name: 🐧 Build Linux Dev PR uses: ./.github/workflows/client-build-tool.yml @@ -74,7 +74,7 @@ jobs: editor-binary-name: MirrorGodotEditorLinux.x86_64 editor-binary-download: MirrorGodotEditorLinux.x86_64 editor-binary-branch: dev - editor-template-directory: ~/.local/share/godot/export_templates/4.3.dev + editor-template-directory: ~/.local/share/godot/export_templates/4.3.beta template-binary-workflow: deployment.yml template-binary-name: linux_release.x86_64 template-binary-branch: themirror @@ -83,7 +83,7 @@ jobs: game-export-preset: Linux game-binary-name: The Mirror Dev.x86_64 bucket-name: no-bucket - os: ${{ github.event.repository.name != 'the-mirror' && 'linux-mirror' || 'ubuntu-20.04' }} + os: ${{ github.event.repository.name != 'the-mirror' && 'linux-mirror' || 'ubuntu-22.04' }} # TODO: This will be dynamic in future and we can't do that immediately as we have to focus on the deployment side. - editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorLinux.x86_64 - template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/linux_release.x86_64 \ No newline at end of file + editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorLinux.x86_64 + template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/linux_release.x86_64 \ No newline at end of file diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 1ea57bf8..3a21be66 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -37,7 +37,7 @@ jobs: editor-binary-name: MirrorGodotEditorWindows.exe editor-binary-download: MirrorGodotEditorWindows.exe editor-binary-branch: dev - editor-template-directory: ~/AppData/Roaming/Godot/export_templates/4.3.dev + editor-template-directory: ~/AppData/Roaming/Godot/export_templates/4.3.beta template-binary-workflow: deployment.yml template-binary-name: windows_release_x86_64.exe template-binary-branch: themirror @@ -65,7 +65,7 @@ jobs: editor-binary-download: MirrorGodotEditorMac.app.zip editor-binary-name: MirrorGodotEditorMac.app/Contents/MacOS/Godot editor-binary-branch: themirror - editor-template-directory: ~/Library/Application\ Support/Godot/export_templates/4.3.dev + editor-template-directory: ~/Library/Application\ Support/Godot/export_templates/4.3.beta template-binary-workflow: deployment.yml template-binary-name: macos_template.app.zip template-binary-branch: dev @@ -91,7 +91,7 @@ jobs: editor-binary-name: MirrorGodotEditorLinux.x86_64 editor-binary-download: MirrorGodotEditorLinux.x86_64 editor-binary-branch: dev - editor-template-directory: ~/.local/share/godot/export_templates/4.3.dev + editor-template-directory: ~/.local/share/godot/export_templates/4.3.beta template-binary-workflow: deployment.yml template-binary-name: linux_release.x86_64 template-binary-branch: themirror @@ -100,6 +100,6 @@ jobs: game-export-preset: Linux game-binary-name: The Mirror Dev.x86_64 bucket-name: no-bucket - os: ${{ github.event.repository.name != 'the-mirror' && 'linux-mirror' || 'ubuntu-20.04' }} + os: ${{ github.event.repository.name != 'the-mirror' && 'linux-mirror' || 'ubuntu-22.04' }} editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/${{needs.get-or-build-engine.outputs.commit_hash}}/MirrorGodotEditorLinux.x86_64 template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/${{needs.get-or-build-engine.outputs.commit_hash}}/linux_release.x86_64 \ No newline at end of file diff --git a/.github/workflows/engine.yml b/.github/workflows/engine.yml index 915bcca4..cd33ef94 100644 --- a/.github/workflows/engine.yml +++ b/.github/workflows/engine.yml @@ -278,7 +278,7 @@ jobs: path: ./godot-engine/bin/${{ matrix.artifact-name }}.zip destination: ${{ matrix.bucket-name }}/${{steps.vars.outputs.sha_short}}/ build-linux: - runs-on: ${{ inputs.self-hosted-runner && 'linux-mirror' || 'ubuntu-20.04' }} + runs-on: ${{ inputs.self-hosted-runner && 'linux-mirror' || 'ubuntu-22.04' }} name: ${{ matrix.name }} environment: ${{ inputs.environment }} strategy: @@ -288,7 +288,7 @@ jobs: - name: Linux Editor cache-name: linux-editor target: editor - sconsflags: arch=x86_64 debug_symbols=no optimize=speed production=yes + sconsflags: arch=x86_64 debug_symbols=yes optimize=speed_trace strip: false bin: "./bin/godot.linuxbsd.editor.x86_64" artifact-name: "MirrorGodotEditorLinux.x86_64" @@ -312,6 +312,12 @@ jobs: with: submodules: recursive + - name: Check versions of the compiler + run: | + ldd --version + gcc --version + cmake --version + - name: Get short commit hash id: vars run: | diff --git a/.github/workflows/web-server-build-check.yml b/.github/workflows/web-server-build-check.yml new file mode 100644 index 00000000..5b1ee3c8 --- /dev/null +++ b/.github/workflows/web-server-build-check.yml @@ -0,0 +1,37 @@ +name: Build-Check + +on: + push: + branches: [dev] + paths: + - "mirror-web-server/**" + pull_request: + branches: [dev] + paths: + - "mirror-web-server/**" + +jobs: + # This runs the same command as GCP build but is far faster since it doesn't deploy to Cloud Run. Can be useful for debugging + Build-Command: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: mirror-web-server + + strategy: + matrix: + node-version: [18.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "yarn" + cache-dependency-path: mirror-web-server/yarn.lock + + - run: yarn install --frozen-lockfile + - run: yarn gcp-build diff --git a/.github/workflows/web-server-tests.yml b/.github/workflows/web-server-tests.yml new file mode 100644 index 00000000..5f67f601 --- /dev/null +++ b/.github/workflows/web-server-tests.yml @@ -0,0 +1,64 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions +name: Tests + +on: + push: + branches: [dev] + paths: + - "mirror-web-server/**" + pull_request: + branches: [dev] + paths: + - "mirror-web-server/**" + +jobs: + Unit: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: mirror-web-server + + strategy: + matrix: + node-version: [18.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "yarn" + cache-dependency-path: mirror-web-server/yarn.lock + + - run: yarn install --frozen-lockfile + - run: yarn lint:ci + - run: yarn test:ci + + Integration: + runs-on: ubuntu-latest + + defaults: + run: + working-directory: mirror-web-server + + strategy: + matrix: + node-version: [18.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "yarn" + cache-dependency-path: mirror-web-server/yarn.lock + + - run: yarn install --frozen-lockfile + - run: yarn lint:ci + - run: yarn test:int:ci diff --git a/.gitignore b/.gitignore index dd9312ac..665fe63a 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ node_modules *.arm64 *.app/ *.app.zip +.vercel diff --git a/README.md b/README.md index 23b341de..c63ef022 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,35 @@ -# What is The Mirror and why? +# Get Started -![image](https://github.com/the-mirror-gdp/the-mirror/assets/11920077/13ffc0bd-bef2-4c1d-a12d-f11fdedf7b11) +The **easiest** way is via our compiled Mirror Official app: [Get Started](https://docs.themirror.space/docs/get-started) -**_Freedom to own_**: The Mirror is a Roblox & UEFN alternative giving you the freedom to own what you create: an all-in-one game development platform built on Godot. +## Docs -If you build on others like Roblox, UEFN/Unreal/Fortnite, and Unity, you don't actually own the full stack of what you build because you don't own the engine. - -_We're here to change that_. 3D is arguably the next step of the internet and we can't let it be beholden to an oligopoly of companies that want to own your data and creations. The Mirror gives you the freedom to own what you build. +[The docs site](https://docs.themirror.space/docs/open-source-code/get-started) (`/mirror-docs`) is our primary source of truth for documentation, not this README. We intend to keep this README slim since documentation is and will continue to be extensive. -Akin to "Google Docs for game development", The Mirror is both the editor and the game that let's you build with friends in real-time. This saves you a plethora of time: Enjoy not having to write pesky things like infrastructure, backend HTTP routes, asset management, authentication, netsync, and various systems from scratch. +# Features -This repo is The Mirror's source code: the Godot app (client/server), the web server, and the docs in one place. We've included everything we can provide to help you build your games as fast as possible. +- **[(Real) Real-Time Game Development](https://www.themirror.space/blog/real-real-time-game-development)**: Like Inception, the aim is to build worlds in real-time with friends, colleagues, and players. Read more about our approach on our blog [here](https://www.themirror.space/blog/real-real-time-game-development). +- **All-in-one game development**: The Mirror is both the editor and the game, providing everything you need out-of-the-box to quickly create and play games, digital experiences, virtual worlds, and more. +- **Editor**: Built-in and networked: A lightweight, real-time, multiplayer editor to build in real-time. +- **Physics** via [Jolt](https://github.com/jrouwe/JoltPhysics), a AAA physics engine used by Horizon Zero Dawn. +- **Advanced networking**: Keep your game in sync and rewind when things get out of sync. +- **Visual scripting**: Even if you don't know how to code, you can implement game logic quickly and easily. +- **Traditional coding**: GDScript in-world editor so you can live edit your game code. If you're new to GDScript, it's like Python, super newbie-friendly, and is easy to learn. +- **Material editor**: No need to exit the editor to make changes to your materials: Everything is in real-time +- **Shader editing**: Real-time shader editing with text will be available in the future +- **Asset management**: Assets are automatically stored in the cloud or via local storage (self-hosted) so you can simplify your workflows in real-time without needing to restart the editor. Much less hassle and easy collaboration with team members. +- **Open asset system**: Built around GLTF, The Mirror supports seats, lights, equipables, and custom physics shapes, all direct from Blender. +- **Mirror UI elements**, including a table class which can easily map _any_ data to UI elements without duplicating state in a performant way. +- **Collision shape generation**: Convex and concave supported +- **Audio**: Easily add audio to your game in real-time without opening a separate editor; no need to recompile +- **Player controllers**: Out-of-the-box FPS (first-person shooter), TPS (third-person shooter), and VR (virtual reality) supported. +- **VR-ready**: Just put on the tethered headset when playing! We test with Meta Quest 2 and 3. +- **Intentional architecture**: (Space)Objects are a simple game object abstraction with the aim of supporting **any** type of Godot node in the future. +- **Bidirectionality with Godot**: Start in The Mirror and end in Godot, or start in Godt and end in The Mirror. Our aim is to make it easy to transition between the two or develop side-by-side: your choice. + ![Bidirectionality with Godot](bidirectionality-with-godot.jpg) +- **Godot plugin:** Coming soon + +# Join the Community **1. Join our [Discord](https://discord.com/invite/CK6fH3Cynk)** @@ -22,48 +41,40 @@ This repo is The Mirror's source code: the Godot app (client/server), the web se **5. Follow us on [X/Twitter](https://twitter.com/themirrorgdp)** -# Features +# What is The Mirror and why? + +![image](https://github.com/the-mirror-gdp/the-mirror/assets/11920077/13ffc0bd-bef2-4c1d-a12d-f11fdedf7b11) -- All-in-one game development: The Mirror is both the editor and the game, providing everything you need out-of-the-box to quickly create and play games, digital experiences, virtual worlds, and more. -- Editor: Built-in and networked: A lightweight, real-time, multiplayer editor to build in real-time. -- Physics via [Jolt](https://github.com/jrouwe/JoltPhysics), a AAA physics engine used by Horizon Zero Dawn. -- Advanced networking: Keep your game in sync and rewind when things get out of sync. -- Visual scripting: Even if you don't know how to code, you can implement game logic quickly and easily. -- Traditional coding: GDScript in-world editor so you can live edit your game code. -- Material editor and in-game shader editing. -- An entire asset system built around GLTF, supporting seats, lights, and custom physics shapes all direct from blender. -- We have our own UI elements, including a table class which can easily map _any_ data to UI elements without duplicating state in a performant way. -- Asset imports using GLTFs at runtime in your game. -- Collision shape generation handling: Convex and concave supported. -- Easily add audio to your game in real-time without opening the Godot editor. -- Player controllers out-of-the-box: FPS, TPS, and VR. -- VR-ready: Tested on Oculus Quest 2. -- A simple game object abstraction called SpaceObject (this will be refactored with the aim of supporting **any** type of Godot node). +**_Freedom to own_**: The Mirror is a Roblox & UEFN alternative giving you the freedom to own what you create: an all-in-one game development platform built on Godot. -# Get Started +If you build on others like Roblox, UEFN/Unreal/Fortnite, and Unity, you don't actually own the full stack of what you build because you don't own the engine. + +_**We're here to change that**_. 3D is arguably the next step of the internet and we can't let it be beholden to an oligopoly of companies that want to own your data and creations. The Mirror gives you the freedom to own what you build. + +Akin to "Google Docs for game development", The Mirror is both the editor and the game that let's you build with friends in real-time. This saves you a plethora of time: Enjoy not having to write pesky things like infrastructure, backend HTTP routes, asset management, authentication, netsync, and various systems from scratch. + +This repo is The Mirror's source code: the Godot app (client/server), the web server, and the docs in one place. We've included everything we can provide to help you build your games as fast as possible. + +## Build the Open-Source Code 1. Git clone the repository (you do **not** need to clone with submodules; they are optional) 2. Download the precompiled Mirror fork of Godot engine (required to use) -- Windows: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorWindows.exe.zip) -- Mac: **v buggy**; taking contributions for fixes :) [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorMac.app.zip.zip). On Mac you will see a zip file; extract it and open the editor binary with CMD + Right-Click then select the Open option. -- Linux: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorLinux.x86_64.zip) +- Windows: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorWindows.exe) +- Mac: **v buggy**; taking contributions for fixes :) [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorMac.app.zip). On Mac you will see a zip file; extract it and open the editor binary with CMD + Right-Click then select the Open option. +- Linux: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorLinux.x86_64) -3. Open the Godot editor (The Mirror fork), click import, and choose the `project.godot` from the `/mirror-godot-app` folder. -Note that if you see this popup, you can safely ignore it and proceed. +1. Open the Godot editor (The Mirror fork), click import, and choose the `project.godot` from the `/mirror-godot-app` folder. + Note that if you see this popup, you can safely ignore it and proceed. ![image](https://github.com/the-mirror-gdp/the-mirror/assets/11920077/53f84e88-aa31-4245-93af-decdec253168) 4. Close the Godot editor and open it again, to ensure that everything loads correctly, now that all files have been imported. -6. **Hit play in the Godot editor!** -7. Create a new Space, and you will automatically join it. Or, join an existing Space. +5. **Hit play in the Godot editor!** +6. Create a new Space, and you will automatically join it. Or, join an existing Space. ## Godot Fork The Mirror is built on a custom fork of Godot and required to use The Mirror's code. The fork is open source and can be found [here](https://github.com/the-mirror-gdp/godot). -# Documentation - -[The docs site](https://docs.themirror.space/docs/open-source-code/get-started) (`/mirror-docs`) is our primary source of truth for documentation, not this README. We intend to keep this README slim since documentation is and will continue to be extensive. - -_Analytics Disclaimer: We use posthog and it automatically collects analytics in the open source repo. You can disable this manually by commenting out the `mirror-godot-app/scripts/autoload/analytics/analytics.gd` file methods. We will make this easier in the future to disable. The Mirror Megaverse Inc., a US Delaware C Corp, is the data controller of the Posthog instance. You are free to disable the analytics and even plug in your own Posthog API key to capture the analytics yourself for your games!_ +_Analytics Disclaimer: We use Posthog and Mixpanel and it automatically collects analytics in the open source repo. You can disable this manually by commenting out the `mirror-godot-app/scripts/autoload/analytics/analytics.gd` file methods. We are transitioning from Posthog to Mixpanel and Posthog will be removed in a future release. We will make this easier in the future to disable. The Mirror Megaverse Inc., a US Delaware C Corp, is the data controller of the Posthog and Mixpanel instances. You are free to disable the analytics and even plug in your own Posthog or Mixpanel API keys to capture the analytics yourself for your games!_ diff --git a/bidirectionality-with-godot.jpg b/bidirectionality-with-godot.jpg new file mode 100644 index 00000000..db9ac5f2 Binary files /dev/null and b/bidirectionality-with-godot.jpg differ diff --git a/godot-engine b/godot-engine index e33f01e3..f2020817 160000 --- a/godot-engine +++ b/godot-engine @@ -1 +1 @@ -Subproject commit e33f01e34af60499c8856143c71b92f4e5b90f6c +Subproject commit f20208175ed95017293ae75f190f8ed1dd1ebda2 diff --git a/mirror-docs/.gitignore b/mirror-docs/.gitignore index b2d6de30..ed3fe720 100644 --- a/mirror-docs/.gitignore +++ b/mirror-docs/.gitignore @@ -18,3 +18,4 @@ npm-debug.log* yarn-debug.log* yarn-error.log* +.vercel diff --git a/mirror-docs/docs/get-started.md b/mirror-docs/docs/get-started.md index 6fe0ab5c..aa8f12f6 100644 --- a/mirror-docs/docs/get-started.md +++ b/mirror-docs/docs/get-started.md @@ -55,4 +55,4 @@ When you run the app, login using these credentials. ![Login](Login.jpg) -Congratulations, you're in The Mirror. Head to the [Tutorial](/docs/tutorial) next. +Congratulations, you're in The Mirror. Head to the [Tutorial](/docs/tutorials) next. diff --git a/mirror-docs/docs/open-source-code/get-started.mdx b/mirror-docs/docs/open-source-code/get-started.mdx index f5787baa..c741e14c 100644 --- a/mirror-docs/docs/open-source-code/get-started.mdx +++ b/mirror-docs/docs/open-source-code/get-started.mdx @@ -9,9 +9,9 @@ sidebar_position: 1 1. Git clone the repository: `git clone https://github.com/the-mirror-gdp/the-mirror.git` (you do **not** need to clone with submodules; they are optional) 2. Download the precompiled Mirror fork of Godot engine (required to use) -- **Windows: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/41ba769a/MirrorGodotEditorWindows.exe)** -- **Mac: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/41ba769a/MirrorGodotEditorMac.app.zip)** **Note: very buggy**; taking contributions for fixes :) On Mac you will see a zip file; extract it and open the editor binary with CMD + Right-Click then select the Open option. -- **Linux: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/41ba769a/MirrorGodotEditorLinux.x86_64)** +- **Windows: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorWindows.exe)** +- **Mac: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorMac.app.zip)** **Note: very buggy**; taking contributions for fixes :) On Mac you will see a zip file; extract it and open the editor binary with CMD + Right-Click then select the Open option. +- **Linux: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorLinux.x86_64)** 3. Open the Godot editor (The Mirror fork you downloaded in step 2), click import, and choose the `project.godot` from the `/mirror-godot-app` folder. 4. Hit play once it loads! @@ -54,16 +54,16 @@ Try running `chmod +x auto-migrate.sh` from the `mirror-web-server` directory. ## Troubleshooting -1. I messed up & I can't login +### 1. I messed up & I can't login Probably issue with mirror-server configuration files -Rember to run `docker compose build` after every change to configs! +Remember to run `docker compose build` after every change to the .env configs! The updates to `.env` won't apply otherwise. -2. My localhost space is empty (not even a terrrain and environment) +### 2. My localhost space is empty (not even a terrrain and environment) -Something went wrong with your migration of DB. After fixes to your dump file make sure to rm container running mongodb (otherwise init script restoring dump will not launch) +Something went wrong with your migration of DB. After fixes to your dump file, make sure to remove the container running mongodb (otherwise init script restoring dump will not launch) -3. My database is not empty even though it should be. +### 3. My database is not empty even though it should be. Your mongo container maybe stopped but it is not removed. Try `docker rm mongo_container_id`. If this does not help try `docker system prune` diff --git a/mirror-docs/docs/tutorial.md b/mirror-docs/docs/tutorials.mdx similarity index 93% rename from mirror-docs/docs/tutorial.md rename to mirror-docs/docs/tutorials.mdx index dc7fabda..6db0ea5a 100644 --- a/mirror-docs/docs/tutorial.md +++ b/mirror-docs/docs/tutorials.mdx @@ -1,10 +1,18 @@ --- sidebar_position: 0 -sidebar_label: Tutorial +sidebar_label: Tutorials --- +import YouTube from 'react-youtube'; + # Tutorial +## Make Games in The Mirror: Tutorial Series + +As of May 2024, we're beginning to release videos on our tutorial series, Make Games in The Mirror! Subscribe to our [Youtube](https://www.youtube.com/@themirrorgdp) to stay posted. + + + ## How is The Mirror different? **Everything in The Mirror is in real-time**. In nearly every other game development platform or engine, you'll need to tediously build and compile your game and wait for it to load, which leads to long feedback cycles. diff --git a/mirror-docs/docusaurus.config.js b/mirror-docs/docusaurus.config.js index 59c0cbd6..fa4d1867 100644 --- a/mirror-docs/docusaurus.config.js +++ b/mirror-docs/docusaurus.config.js @@ -72,7 +72,7 @@ const config = { { name: 'og:title', content: 'Docs | The Mirror' }, { name: 'og:url', content: 'https://docs.themirror.space/' }, { name: 'og:image', content: 'https://docs.themirror.space/img/DocsSite.jpg' }, - { name: 'description', content: 'Game Development Platform: The Ultimate Sandbox' }, + { name: 'description', content: 'Open-Source Roblox & UEFN Alternative' }, { name: 'og:description', content: 'Game Development Platform: The Ultimate Sandbox' }, { name: 'twitter:title', content: 'Docs | The Mirror' }, { name: 'twitter:description', content: 'Game Development Platform: The Ultimate Sandbox' }, @@ -156,6 +156,38 @@ const config = { textColor: '#06011F', isCloseable: true, }, + algolia: { + // The application ID provided by Algolia + appId: 'WZDUGEW4O1', + + // Public API key: it is safe to commit it + apiKey: 'cee727fb358dbae0ef4cb1c3f4b1da52', + + indexName: 'themirror', + + // Optional: see doc section below + contextualSearch: false, + + // Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them. + externalUrlRegex: 'themirror.space|docs.themirror.space', + + // Optional: Replace parts of the item URLs from Algolia. Useful when using the same search index for multiple deployments using a different baseUrl. You can use regexp or string in the `from` param. For example: localhost:3000 vs myCompany.com/docs + replaceSearchResultPathname: { + from: '/docs/', // or as RegExp: /\/docs\// + to: '/', + }, + + // Optional: Algolia search parameters + searchParameters: {}, + + // Optional: path for search page that enabled by default (`false` to disable it) + searchPagePath: false, // 2024-05-07 09:23:31 Setting to false because the page was showing empty; TODO fix: see https://github.com/facebook/docusaurus/issues/6693. It requires enabling contextualSearch: true, which was making 0 results appear in the modal too. At least with this, the modal works. + + // Optional: whether the insights feature is enabled or not on Docsearch (`false` by default) + insights: true, + + //... other Algolia params + }, prism: { theme: lightCodeTheme, darkTheme: { @@ -310,15 +342,7 @@ const config = { }, }, }), - // https://github.com/cmfcmf/docusaurus-search-local#usage - plugins: [ - [ - require.resolve("@cmfcmf/docusaurus-search-local"), - { - style: undefined - } - ], - ], + plugins: [], }; module.exports = config; diff --git a/mirror-docs/package.json b/mirror-docs/package.json index ec068e93..f1a35000 100644 --- a/mirror-docs/package.json +++ b/mirror-docs/package.json @@ -15,7 +15,6 @@ "typecheck": "tsc" }, "dependencies": { - "@cmfcmf/docusaurus-search-local": "^1.1.0", "@docusaurus/core": "^3.2.0", "@docusaurus/preset-classic": "^3.2.0", "@mdx-js/react": "^3.0.0", diff --git a/mirror-docs/vercel.json b/mirror-docs/vercel.json new file mode 100644 index 00000000..9936715b --- /dev/null +++ b/mirror-docs/vercel.json @@ -0,0 +1,9 @@ +{ + "redirects": [ + { + "source": "/docs/tutorial", + "destination": "/docs/tutorials", + "permanent": true + } + ] +} diff --git a/mirror-docs/yarn.lock b/mirror-docs/yarn.lock index 3008df13..4c5ed305 100644 --- a/mirror-docs/yarn.lock +++ b/mirror-docs/yarn.lock @@ -2,14 +2,6 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.17.0": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.0.tgz#b9e62d9677dc0ee818bb59d917ff58908356a9a0" - integrity sha512-6E4sVb5+fGtSQs9mULlxUH84OWFUVZPMapa5dMCtUc7KyDRLY6+X/dA8xbDA8CX5phdBn1plLUET1B6NZnrZuw== - dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.17.0" - "@algolia/autocomplete-shared" "1.17.0" - "@algolia/autocomplete-core@1.9.3": version "1.9.3" resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" @@ -18,24 +10,6 @@ "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" "@algolia/autocomplete-shared" "1.9.3" -"@algolia/autocomplete-js@^1.8.2": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-js/-/autocomplete-js-1.17.0.tgz#91f0ef2232646316a26c79dadbeb2e7791de623c" - integrity sha512-RbD98hXtZOl6VohSAo7kMOFWQHR1x4wWaJFadJradFQ1TAA9hFEyirSIM+yT96UpKkdi08V2EBI+YwZ3/VETvw== - dependencies: - "@algolia/autocomplete-core" "1.17.0" - "@algolia/autocomplete-preset-algolia" "1.17.0" - "@algolia/autocomplete-shared" "1.17.0" - htm "^3.1.1" - preact "^10.13.2" - -"@algolia/autocomplete-plugin-algolia-insights@1.17.0": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.0.tgz#dcec9b03a47375860a9f927816a1275d885ebdff" - integrity sha512-zbWImu+VxBDzUQONEhQXq3OzlipHLEtWbL4Nf/VOb1p1qHG/f96jCegOzzEZVPiQvZpRJnmhCUmsYNHlIBxKWw== - dependencies: - "@algolia/autocomplete-shared" "1.17.0" - "@algolia/autocomplete-plugin-algolia-insights@1.9.3": version "1.9.3" resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" @@ -43,13 +17,6 @@ dependencies: "@algolia/autocomplete-shared" "1.9.3" -"@algolia/autocomplete-preset-algolia@1.17.0": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.0.tgz#9d7d9673a922d75dfbedd3119e7ffa76f4c118c6" - integrity sha512-DhTkMs/9BzThhTU2nSTpQxVxHLzaRDZLid4Tf56D8s9IhEGfmzbNuLRmJNzgAOPv1smHtUErndmC+S9QNMDEJA== - dependencies: - "@algolia/autocomplete-shared" "1.17.0" - "@algolia/autocomplete-preset-algolia@1.9.3": version "1.9.3" resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" @@ -57,146 +24,136 @@ dependencies: "@algolia/autocomplete-shared" "1.9.3" -"@algolia/autocomplete-shared@1.17.0": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.0.tgz#7d0a8e504fe555c48df7ae6854d3d6633b0b32f5" - integrity sha512-7su4KH/2q2Fhud2VujUNhCMbIh7yp6wqWR3UuVje5P3kDRhTotPRmg3iRQi48YRYkk9o+airsrLl+rxJ/9FWng== - "@algolia/autocomplete-shared@1.9.3": version "1.9.3" resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== -"@algolia/autocomplete-theme-classic@^1.8.2": - version "1.17.0" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.17.0.tgz#bbd79df8f5240b3ddd3f9cdc9b8273753f15cd25" - integrity sha512-FsW/J/mG1YIPv93/QQ7KxMVNXAiVi9accGgoK2y3zDz58WpVgUug97SUoQzP4I9EMZAZAHQo0QbWXxpqTWkcOA== - -"@algolia/cache-browser-local-storage@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.2.tgz#060d15e89588fcac18e73643201fce0f4f7d5ca0" - integrity sha512-PvRQdCmtiU22dw9ZcTJkrVKgNBVAxKgD0/cfiqyxhA5+PHzA2WDt6jOmZ9QASkeM2BpyzClJb/Wr1yt2/t78Kw== +"@algolia/cache-browser-local-storage@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz#0cc26b96085e1115dac5fcb9d826651ba57faabc" + integrity sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg== dependencies: - "@algolia/cache-common" "4.23.2" + "@algolia/cache-common" "4.23.3" -"@algolia/cache-common@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.23.2.tgz#c68706ce34b18377e56e71ac13cce2dd5662dcee" - integrity sha512-OUK/6mqr6CQWxzl/QY0/mwhlGvS6fMtvEPyn/7AHUx96NjqDA4X4+Ju7aXFQKh+m3jW9VPB0B9xvEQgyAnRPNw== +"@algolia/cache-common@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.23.3.tgz#3bec79092d512a96c9bfbdeec7cff4ad36367166" + integrity sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A== -"@algolia/cache-in-memory@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.23.2.tgz#94cd828275d7a12186959bf1b95a13247e103b23" - integrity sha512-rfbi/SnhEa3MmlqQvgYz/9NNJ156NkU6xFxjbxBtLWnHbpj+qnlMoKd+amoiacHRITpajg6zYbLM9dnaD3Bczw== +"@algolia/cache-in-memory@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz#3945f87cd21ffa2bec23890c85305b6b11192423" + integrity sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg== dependencies: - "@algolia/cache-common" "4.23.2" + "@algolia/cache-common" "4.23.3" -"@algolia/client-account@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.23.2.tgz#b53cb14e730fd8e0a0a227cf650b287b570a08bc" - integrity sha512-VbrOCLIN/5I7iIdskSoSw3uOUPF516k4SjDD4Qz3BFwa3of7D9A0lzBMAvQEJJEPHWdVraBJlGgdJq/ttmquJQ== +"@algolia/client-account@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.23.3.tgz#8751bbf636e6741c95e7c778488dee3ee430ac6f" + integrity sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA== dependencies: - "@algolia/client-common" "4.23.2" - "@algolia/client-search" "4.23.2" - "@algolia/transporter" "4.23.2" + "@algolia/client-common" "4.23.3" + "@algolia/client-search" "4.23.3" + "@algolia/transporter" "4.23.3" -"@algolia/client-analytics@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.23.2.tgz#7fdcf1cb27f0ae93e5da6beb4e612fc06a880b0c" - integrity sha512-lLj7irsAztGhMoEx/SwKd1cwLY6Daf1Q5f2AOsZacpppSvuFvuBrmkzT7pap1OD/OePjLKxicJS8wNA0+zKtuw== +"@algolia/client-analytics@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.23.3.tgz#f88710885278fe6fb6964384af59004a5a6f161d" + integrity sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA== dependencies: - "@algolia/client-common" "4.23.2" - "@algolia/client-search" "4.23.2" - "@algolia/requester-common" "4.23.2" - "@algolia/transporter" "4.23.2" + "@algolia/client-common" "4.23.3" + "@algolia/client-search" "4.23.3" + "@algolia/requester-common" "4.23.3" + "@algolia/transporter" "4.23.3" -"@algolia/client-common@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.23.2.tgz#e5f86fc2de707eb6bf9f1109b70187dae179c72c" - integrity sha512-Q2K1FRJBern8kIfZ0EqPvUr3V29ICxCm/q42zInV+VJRjldAD9oTsMGwqUQ26GFMdFYmqkEfCbY4VGAiQhh22g== +"@algolia/client-common@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.23.3.tgz#891116aa0db75055a7ecc107649f7f0965774704" + integrity sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw== dependencies: - "@algolia/requester-common" "4.23.2" - "@algolia/transporter" "4.23.2" + "@algolia/requester-common" "4.23.3" + "@algolia/transporter" "4.23.3" -"@algolia/client-personalization@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.23.2.tgz#0472d9c207402eefcc9c98f7ffba5d26fe8e2fd0" - integrity sha512-vwPsgnCGhUcHhhQG5IM27z8q7dWrN9itjdvgA6uKf2e9r7vB+WXt4OocK0CeoYQt3OGEAExryzsB8DWqdMK5wg== +"@algolia/client-personalization@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.23.3.tgz#35fa8e5699b0295fbc400a8eb211dc711e5909db" + integrity sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g== dependencies: - "@algolia/client-common" "4.23.2" - "@algolia/requester-common" "4.23.2" - "@algolia/transporter" "4.23.2" + "@algolia/client-common" "4.23.3" + "@algolia/requester-common" "4.23.3" + "@algolia/transporter" "4.23.3" -"@algolia/client-search@4.23.2", "@algolia/client-search@^4.12.0": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.23.2.tgz#9b2741f0a209596459f06a44583118207ea287f7" - integrity sha512-CxSB29OVGSE7l/iyoHvamMonzq7Ev8lnk/OkzleODZ1iBcCs3JC/XgTIKzN/4RSTrJ9QybsnlrN/bYCGufo7qw== +"@algolia/client-search@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.23.3.tgz#a3486e6af13a231ec4ab43a915a1f318787b937f" + integrity sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw== dependencies: - "@algolia/client-common" "4.23.2" - "@algolia/requester-common" "4.23.2" - "@algolia/transporter" "4.23.2" + "@algolia/client-common" "4.23.3" + "@algolia/requester-common" "4.23.3" + "@algolia/transporter" "4.23.3" "@algolia/events@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/logger-common@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.23.2.tgz#5441a828f0fad1ceaae3a27caec7b663d40dd27f" - integrity sha512-jGM49Q7626cXZ7qRAWXn0jDlzvoA1FvN4rKTi1g0hxKsTTSReyYk0i1ADWjChDPl3Q+nSDhJuosM2bBUAay7xw== - -"@algolia/logger-console@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.23.2.tgz#fda4252bb02df7c52a92c63f1e357bf7370cc8db" - integrity sha512-oo+lnxxEmlhTBTFZ3fGz1O8PJ+G+8FiAoMY2Qo3Q4w23xocQev6KqDTA1JQAGPDxAewNA2VBwWOsVXeXFjrI/Q== - dependencies: - "@algolia/logger-common" "4.23.2" - -"@algolia/recommend@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.23.2.tgz#02bf57f836ced2c850633239d493a0414be76a7f" - integrity sha512-Q75CjnzRCDzgIlgWfPnkLtrfF4t82JCirhalXkSSwe/c1GH5pWh4xUyDOR3KTMo+YxxX3zTlrL/FjHmUJEWEcg== - dependencies: - "@algolia/cache-browser-local-storage" "4.23.2" - "@algolia/cache-common" "4.23.2" - "@algolia/cache-in-memory" "4.23.2" - "@algolia/client-common" "4.23.2" - "@algolia/client-search" "4.23.2" - "@algolia/logger-common" "4.23.2" - "@algolia/logger-console" "4.23.2" - "@algolia/requester-browser-xhr" "4.23.2" - "@algolia/requester-common" "4.23.2" - "@algolia/requester-node-http" "4.23.2" - "@algolia/transporter" "4.23.2" - -"@algolia/requester-browser-xhr@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.2.tgz#2d0a6b642e2a2bbfb2e2ff3d1e82158e3e143def" - integrity sha512-TO9wLlp8+rvW9LnIfyHsu8mNAMYrqNdQ0oLF6eTWFxXfxG3k8F/Bh7nFYGk2rFAYty4Fw4XUtrv/YjeNDtM5og== - dependencies: - "@algolia/requester-common" "4.23.2" - -"@algolia/requester-common@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.23.2.tgz#9c2e5da4dc15e65f9b9bbe5bedb419cf23092ef1" - integrity sha512-3EfpBS0Hri0lGDB5H/BocLt7Vkop0bTTLVUBB844HH6tVycwShmsV6bDR7yXbQvFP1uNpgePRD3cdBCjeHmk6Q== - -"@algolia/requester-node-http@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.23.2.tgz#718ae71f58949eab3b5fcfc440be42af41bd640f" - integrity sha512-SVzgkZM/malo+2SB0NWDXpnT7nO5IZwuDTaaH6SjLeOHcya1o56LSWXk+3F3rNLz2GVH+I/rpYKiqmHhSOjerw== - dependencies: - "@algolia/requester-common" "4.23.2" - -"@algolia/transporter@4.23.2": - version "4.23.2" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.23.2.tgz#61e7b9288d4f561b2015ddde689ba31e08c21644" - integrity sha512-GY3aGKBy+8AK4vZh8sfkatDciDVKad5rTY2S10Aefyjh7e7UGBP4zigf42qVXwU8VOPwi7l/L7OACGMOFcjB0Q== - dependencies: - "@algolia/cache-common" "4.23.2" - "@algolia/logger-common" "4.23.2" - "@algolia/requester-common" "4.23.2" +"@algolia/logger-common@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.23.3.tgz#35c6d833cbf41e853a4f36ba37c6e5864920bfe9" + integrity sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g== + +"@algolia/logger-console@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.23.3.tgz#30f916781826c4db5f51fcd9a8a264a06e136985" + integrity sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A== + dependencies: + "@algolia/logger-common" "4.23.3" + +"@algolia/recommend@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.23.3.tgz#53d4f194d22d9c72dc05f3f7514c5878f87c5890" + integrity sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w== + dependencies: + "@algolia/cache-browser-local-storage" "4.23.3" + "@algolia/cache-common" "4.23.3" + "@algolia/cache-in-memory" "4.23.3" + "@algolia/client-common" "4.23.3" + "@algolia/client-search" "4.23.3" + "@algolia/logger-common" "4.23.3" + "@algolia/logger-console" "4.23.3" + "@algolia/requester-browser-xhr" "4.23.3" + "@algolia/requester-common" "4.23.3" + "@algolia/requester-node-http" "4.23.3" + "@algolia/transporter" "4.23.3" + +"@algolia/requester-browser-xhr@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz#9e47e76f60d540acc8b27b4ebc7a80d1b41938b9" + integrity sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw== + dependencies: + "@algolia/requester-common" "4.23.3" + +"@algolia/requester-common@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.23.3.tgz#7dbae896e41adfaaf1d1fa5f317f83a99afb04b3" + integrity sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw== + +"@algolia/requester-node-http@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz#c9f94a5cb96a15f48cea338ab6ef16bbd0ff989f" + integrity sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA== + dependencies: + "@algolia/requester-common" "4.23.3" + +"@algolia/transporter@4.23.3": + version "4.23.3" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.23.3.tgz#545b045b67db3850ddf0bbecbc6c84ff1f3398b7" + integrity sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ== + dependencies: + "@algolia/cache-common" "4.23.3" + "@algolia/logger-common" "4.23.3" + "@algolia/requester-common" "4.23.3" "@ampproject/remapping@^2.2.0": version "2.3.0" @@ -206,7 +163,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== @@ -214,38 +171,38 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742" - integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.19.6", "@babel/core@^7.23.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" - integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== +"@babel/core@^7.21.3", "@babel/core@^7.23.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.1" + "@babel/generator" "^7.24.5" "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.1" - "@babel/parser" "^7.24.1" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.23.3", "@babel/generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" - integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== +"@babel/generator@^7.23.3", "@babel/generator@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== dependencies: - "@babel/types" "^7.24.0" + "@babel/types" "^7.24.5" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" @@ -275,19 +232,19 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz#db58bf57137b623b916e24874ab7188d93d7f68f" - integrity sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA== +"@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" + integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.24.5" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-replace-supers" "^7.24.1" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-split-export-declaration" "^7.24.5" semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": @@ -299,10 +256,10 @@ regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd" - integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA== +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -315,7 +272,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -330,12 +287,12 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" - integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== +"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" + integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== dependencies: - "@babel/types" "^7.23.0" + "@babel/types" "^7.24.5" "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": version "7.24.3" @@ -344,16 +301,16 @@ dependencies: "@babel/types" "^7.24.0" -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== +"@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== 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-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" @@ -362,10 +319,10 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" - integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" @@ -385,12 +342,12 @@ "@babel/helper-member-expression-to-functions" "^7.23.0" "@babel/helper-optimise-call-expression" "^7.22.5" -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== +"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.5" "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" @@ -399,22 +356,22 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== +"@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.5" -"@babel/helper-string-parser@^7.23.4": +"@babel/helper-string-parser@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== "@babel/helper-validator-option@^7.23.5": version "7.23.5" @@ -422,37 +379,45 @@ integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== "@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" + integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" + "@babel/helper-function-name" "^7.23.0" + "@babel/template" "^7.24.0" + "@babel/types" "^7.24.5" -"@babel/helpers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" - integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== dependencies: "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" "@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== dependencies: - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-validator-identifier" "^7.24.5" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.24.0", "@babel/parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" - integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== +"@babel/parser@^7.24.0", "@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" + integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": version "7.24.1" @@ -657,12 +622,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-block-scoping@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz#27af183d7f6dad890531256c7a45019df768ac1f" - integrity sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw== +"@babel/plugin-transform-block-scoping@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" + integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-transform-class-properties@^7.24.1": version "7.24.1" @@ -672,27 +637,27 @@ "@babel/helper-create-class-features-plugin" "^7.24.1" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-class-static-block@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz#4e37efcca1d9f2fcb908d1bae8b56b4b6e9e1cb6" - integrity sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA== +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-create-class-features-plugin" "^7.24.4" "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== +"@babel/plugin-transform-classes@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" + integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-split-export-declaration" "^7.24.5" globals "^11.1.0" "@babel/plugin-transform-computed-properties@^7.24.1": @@ -703,12 +668,12 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/template" "^7.24.0" -"@babel/plugin-transform-destructuring@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== +"@babel/plugin-transform-destructuring@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" + integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-transform-dotall-regex@^7.24.1": version "7.24.1" @@ -862,15 +827,15 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== +"@babel/plugin-transform-object-rest-spread@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" + integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== dependencies: "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-parameters" "^7.24.5" "@babel/plugin-transform-object-super@^7.24.1": version "7.24.1" @@ -888,21 +853,21 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== +"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" + integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== +"@babel/plugin-transform-parameters@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" + integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-transform-private-methods@^7.24.1": version "7.24.1" @@ -912,14 +877,14 @@ "@babel/helper-create-class-features-plugin" "^7.24.1" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-private-property-in-object@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== +"@babel/plugin-transform-private-property-in-object@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" + integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-transform-property-literals@^7.24.1": @@ -929,7 +894,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-react-constant-elements@^7.18.12": +"@babel/plugin-transform-react-constant-elements@^7.21.3": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz#d493a0918b9fdad7540f5afd9b5eb5c52500d18d" integrity sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA== @@ -1025,21 +990,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-transform-typeof-symbol@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== +"@babel/plugin-transform-typeof-symbol@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" + integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-transform-typescript@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz#5c05e28bb76c7dfe7d6c5bed9951324fd2d3ab07" - integrity sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" + integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/plugin-syntax-typescript" "^7.24.1" "@babel/plugin-transform-unicode-escapes@^7.24.1": @@ -1073,15 +1038,16 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.24.0" -"@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.9": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.3.tgz#f3f138c844ffeeac372597b29c51b5259e8323a3" - integrity sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA== +"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" + integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== dependencies: - "@babel/compat-data" "^7.24.1" + "@babel/compat-data" "^7.24.4" "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.5" "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" @@ -1108,12 +1074,12 @@ "@babel/plugin-transform-async-generator-functions" "^7.24.3" "@babel/plugin-transform-async-to-generator" "^7.24.1" "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.5" "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.1" - "@babel/plugin-transform-classes" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.5" "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.5" "@babel/plugin-transform-dotall-regex" "^7.24.1" "@babel/plugin-transform-duplicate-keys" "^7.24.1" "@babel/plugin-transform-dynamic-import" "^7.24.1" @@ -1133,13 +1099,13 @@ "@babel/plugin-transform-new-target" "^7.24.1" "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.5" "@babel/plugin-transform-object-super" "^7.24.1" "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.5" "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.5" "@babel/plugin-transform-property-literals" "^7.24.1" "@babel/plugin-transform-regenerator" "^7.24.1" "@babel/plugin-transform-reserved-words" "^7.24.1" @@ -1147,7 +1113,7 @@ "@babel/plugin-transform-spread" "^7.24.1" "@babel/plugin-transform-sticky-regex" "^7.24.1" "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.5" "@babel/plugin-transform-unicode-escapes" "^7.24.1" "@babel/plugin-transform-unicode-property-regex" "^7.24.1" "@babel/plugin-transform-unicode-regex" "^7.24.1" @@ -1180,7 +1146,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.24.1" -"@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5": +"@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.22.5": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== @@ -1197,17 +1163,17 @@ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime-corejs3@^7.22.6": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.1.tgz#f39707b213441dec645ce8285ae14f281a5077c6" - integrity sha512-T9ko/35G+Bkl+win48GduaPlhSlOjjE5s1TeiEcD+QpxlLQnoEfb/nO/T+TQqkm+ipFwORn+rB8w14iJ/uD0bg== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.5.tgz#d2a5f46a088caf8f3899ad095054f83b0a686194" + integrity sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg== dependencies: core-js-pure "^3.30.2" regenerator-runtime "^0.14.0" "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.8.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57" - integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" + integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== dependencies: regenerator-runtime "^0.14.0" @@ -1220,45 +1186,31 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/traverse@^7.22.8", "@babel/traverse@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== +"@babel/traverse@^7.22.8", "@babel/traverse@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== +"@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.4.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" to-fast-properties "^2.0.0" -"@cmfcmf/docusaurus-search-local@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@cmfcmf/docusaurus-search-local/-/docusaurus-search-local-1.1.0.tgz#3db5d7d6e05985cc3b06cec10436385c53033c69" - integrity sha512-0IVb/aA0IK8ZlktuxmgXmluXfcSpo6Vdd2nG21y1aOH9nVYnPP231Dn0H8Ng9Qf9ronQQCDWHnuWpYOr9rUrEQ== - dependencies: - "@algolia/autocomplete-js" "^1.8.2" - "@algolia/autocomplete-theme-classic" "^1.8.2" - "@algolia/client-search" "^4.12.0" - algoliasearch "^4.12.0" - cheerio "^1.0.0-rc.9" - clsx "^1.1.1" - lunr-languages "^1.4.0" - mark.js "^8.11.1" - "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -1284,10 +1236,10 @@ "@docsearch/css" "3.6.0" algoliasearch "^4.19.1" -"@docusaurus/core@3.2.0", "@docusaurus/core@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.2.0.tgz#10acb993fb76960890d1aa43025245aaa8dcdbbb" - integrity sha512-WTO6vW4404nhTmK9NL+95nd13I1JveFwZ8iOBYxb4xt+N2S3KzY+mm+1YtWw2vV37FbYfH+w+KrlrRaWuy5Hzw== +"@docusaurus/core@3.3.2", "@docusaurus/core@^3.2.0": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.3.2.tgz#67b8cd5329b32f47515ecf12eb7aa306dfc69922" + integrity sha512-PzKMydKI3IU1LmeZQDi+ut5RSuilbXnA8QdowGeJEgU8EJjmx3rBHNT1LxQxOVqNEwpWi/csLwd9bn7rUjggPA== dependencies: "@babel/core" "^7.23.3" "@babel/generator" "^7.23.3" @@ -1299,14 +1251,12 @@ "@babel/runtime" "^7.22.6" "@babel/runtime-corejs3" "^7.22.6" "@babel/traverse" "^7.22.8" - "@docusaurus/cssnano-preset" "3.2.0" - "@docusaurus/logger" "3.2.0" - "@docusaurus/mdx-loader" "3.2.0" - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-common" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" - "@svgr/webpack" "^6.5.1" + "@docusaurus/cssnano-preset" "3.3.2" + "@docusaurus/logger" "3.3.2" + "@docusaurus/mdx-loader" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-common" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" autoprefixer "^10.4.14" babel-loader "^9.1.3" babel-plugin-dynamic-import-node "^2.3.3" @@ -1320,8 +1270,8 @@ copy-webpack-plugin "^11.0.0" core-js "^3.31.1" css-loader "^6.8.1" - css-minimizer-webpack-plugin "^4.2.2" - cssnano "^5.1.15" + css-minimizer-webpack-plugin "^5.0.1" + cssnano "^6.1.2" del "^6.1.1" detect-port "^1.5.1" escape-html "^1.0.3" @@ -1341,7 +1291,7 @@ prompts "^2.4.2" react-dev-utils "^12.0.1" react-helmet-async "^1.3.0" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" react-loadable-ssr-addon-v5-slorber "^1.0.1" react-router "^5.3.4" react-router-config "^5.1.1" @@ -1360,32 +1310,32 @@ webpack-merge "^5.9.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.2.0.tgz#0e0fbf19873a726f92e670b9d511e9f2828d6097" - integrity sha512-H88RXGUia7r/VF3XfyoA4kbwgpUZcKsObF6VvwBOP91EdArTf6lnHbJ/x8Ca79KS/zf98qaWyBGzW+5ez58Iyw== +"@docusaurus/cssnano-preset@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.3.2.tgz#fb971b3e89fe6821721782124b430b2795faeb38" + integrity sha512-+5+epLk/Rp4vFML4zmyTATNc3Is+buMAL6dNjrMWahdJCJlMWMPd/8YfU+2PA57t8mlSbhLJ7vAZVy54cd1vRQ== dependencies: - cssnano-preset-advanced "^5.3.10" - postcss "^8.4.26" - postcss-sort-media-queries "^4.4.1" + cssnano-preset-advanced "^6.1.2" + postcss "^8.4.38" + postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" -"@docusaurus/logger@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.2.0.tgz#99d2b09478bcba69c964ec0c8600d855fb8e9e0f" - integrity sha512-Z1R1NcOGXZ8CkIJSvjvyxnuDDSlx/+1xlh20iVTw1DZRjonFmI3T3tTgk40YpXyWUYQpIgAoqqPMpuseMMdgRQ== +"@docusaurus/logger@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.3.2.tgz#f43f7e08d4f5403be6a7196659490053e248325f" + integrity sha512-Ldu38GJ4P8g4guN7d7pyCOJ7qQugG7RVyaxrK8OnxuTlaImvQw33aDRwaX2eNmX8YK6v+//Z502F4sOZbHHCHQ== dependencies: chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.2.0.tgz#d17f17ae1bb38255643c82705dda719b23c27831" - integrity sha512-JtkI5o6R/rJSr1Y23cHKz085aBJCvJw3AYHihJ7r+mBX+O8EuQIynG0e6/XpbSCpr7Ino0U50UtxaXcEbFwg9Q== +"@docusaurus/mdx-loader@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.3.2.tgz#424e3ffac8bcdeba27d8c0eb84a04736702fc187" + integrity sha512-AFRxj/aOk3/mfYDPxE3wTbrjeayVRvNSZP7mgMuUlrb2UlPRbSVAFX1k2RbgAJrnTSwMgb92m2BhJgYRfptN3g== dependencies: - "@docusaurus/logger" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" + "@docusaurus/logger" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" "@mdx-js/mdx" "^3.0.0" "@slorber/remark-comment" "^1.0.0" escape-html "^1.0.3" @@ -1408,32 +1358,31 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.2.0", "@docusaurus/module-type-aliases@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.2.0.tgz#ef883d8418f37e551eca72adc409014e720786d4" - integrity sha512-jRSp9YkvBwwNz6Xgy0RJPsnie+Ebb//gy7GdbkJ2pW2gvvlYKGib2+jSF0pfIzvyZLulfCynS1KQdvDKdSl8zQ== +"@docusaurus/module-type-aliases@3.3.2", "@docusaurus/module-type-aliases@^3.2.0": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.3.2.tgz#02534449d08d080fd52dc9e046932bb600c38b01" + integrity sha512-b/XB0TBJah5yKb4LYuJT4buFvL0MGAb0+vJDrJtlYMguRtsEBkf2nWl5xP7h4Dlw6ol0hsHrCYzJ50kNIOEclw== dependencies: - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "3.2.0" + "@docusaurus/types" "3.3.2" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" react-helmet-async "*" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" + react-loadable "npm:@docusaurus/react-loadable@6.0.0" -"@docusaurus/plugin-content-blog@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.2.0.tgz#b7b43e71634272a80a9532dc166731332391cb4b" - integrity sha512-MABqwjSicyHmYEfQueMthPCz18JkVxhK3EGhXTSRWwReAZ0UTuw9pG6+Wo+uXAugDaIcJH28rVZSwTDINPm2bw== - dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/logger" "3.2.0" - "@docusaurus/mdx-loader" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-common" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" +"@docusaurus/plugin-content-blog@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.3.2.tgz#6496714b071447687ead1472e5756bfb1ae065d0" + integrity sha512-fJU+dmqp231LnwDJv+BHVWft8pcUS2xVPZdeYH6/ibH1s2wQ/sLcmUrGWyIv/Gq9Ptj8XWjRPMghlxghuPPoxg== + dependencies: + "@docusaurus/core" "3.3.2" + "@docusaurus/logger" "3.3.2" + "@docusaurus/mdx-loader" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-common" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" cheerio "^1.0.0-rc.12" feed "^4.2.2" fs-extra "^11.1.1" @@ -1445,19 +1394,19 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.2.0.tgz#6e4f727a0cce301b9d9361bf41ca6a978fe79475" - integrity sha512-uuqhahmsBnirxOz+SXksnWt7+wc+iN4ntxNRH48BUgo7QRNLATWjHCgI8t6zrMJxK4o+QL9DhLaPDlFHs91B3Q== - dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/logger" "3.2.0" - "@docusaurus/mdx-loader" "3.2.0" - "@docusaurus/module-type-aliases" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-common" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" +"@docusaurus/plugin-content-docs@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.3.2.tgz#dadfbb94acfb0b74fae12db51f425c4379e30087" + integrity sha512-Dm1ri2VlGATTN3VGk1ZRqdRXWa1UlFubjaEL6JaxaK7IIFqN/Esjpl+Xw10R33loHcRww/H76VdEeYayaL76eg== + dependencies: + "@docusaurus/core" "3.3.2" + "@docusaurus/logger" "3.3.2" + "@docusaurus/mdx-loader" "3.3.2" + "@docusaurus/module-type-aliases" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-common" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" "@types/react-router-config" "^5.0.7" combine-promises "^1.1.0" fs-extra "^11.1.1" @@ -1467,122 +1416,114 @@ utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-pages@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.2.0.tgz#df28a6ee6b52c4b292a726f29f39b119756caf44" - integrity sha512-4ofAN7JDsdb4tODO9OIrizWY5DmEJXr0eu+UDIkLqGP+gXXTahJZv8h2mlxO+lPXGXRCVBOfA14OG1hOYJVPwA== - dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/mdx-loader" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" +"@docusaurus/plugin-content-pages@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.3.2.tgz#04fc18d1925618c1102b111b85e6376442c1b7a9" + integrity sha512-EKc9fQn5H2+OcGER8x1aR+7URtAGWySUgULfqE/M14+rIisdrBstuEZ4lUPDRrSIexOVClML82h2fDS+GSb8Ew== + dependencies: + "@docusaurus/core" "3.3.2" + "@docusaurus/mdx-loader" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" fs-extra "^11.1.1" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-debug@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.2.0.tgz#643d13d403685c2b9bdb3b65bec8050847b920a3" - integrity sha512-p6WxtO5XZGz66y6QNQtCJwBefq4S6/w75XaXVvH1/2P9uaijvF7R+Cm2EWQZ5WsvA5wl//DFWblyDHRyVC207Q== +"@docusaurus/plugin-debug@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.3.2.tgz#bb25fac2cb705eff7857b435219faef907ba949e" + integrity sha512-oBIBmwtaB+YS0XlmZ3gCO+cMbsGvIYuAKkAopoCh0arVjtlyPbejzPrHuCoRHB9G7abjNZw7zoONOR8+8LM5+Q== dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils" "3.2.0" + "@docusaurus/core" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils" "3.3.2" fs-extra "^11.1.1" react-json-view-lite "^1.2.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.2.0.tgz#770151947c0ee49500586e9200631852ab97e23a" - integrity sha512-//TepJTEyAZSvBwHKEbXHu9xT/VkK3wUil2ZakKvQZYfUC01uWn6A1E3toa8R7WhCy1xPUeIukqmJy1Clg8njQ== +"@docusaurus/plugin-google-analytics@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.3.2.tgz#6e51ee8593c79172ed2b2ac4d33e300f04bfbc87" + integrity sha512-jXhrEIhYPSClMBK6/IA8qf1/FBoxqGXZvg7EuBax9HaK9+kL3L0TJIlatd8jQJOMtds8mKw806TOCc3rtEad1A== dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" + "@docusaurus/core" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" tslib "^2.6.0" -"@docusaurus/plugin-google-gtag@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.2.0.tgz#65fc7ddc242185c3a10e60308471564075229406" - integrity sha512-3s6zxlaMMb87MW2Rxy6EnSRDs0WDEQPuHilZZH402C8kOrUnIwlhlfjWZ4ZyLDziGl/Eec/DvD0PVqj0qHRomA== +"@docusaurus/plugin-google-gtag@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.3.2.tgz#f8126dfe1dfa6e722157d7301430da40b97354ba" + integrity sha512-vcrKOHGbIDjVnNMrfbNpRQR1x6Jvcrb48kVzpBAOsKbj9rXZm/idjVAXRaewwobHdOrJkfWS/UJoxzK8wyLRBQ== dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" + "@docusaurus/core" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" "@types/gtag.js" "^0.0.12" tslib "^2.6.0" -"@docusaurus/plugin-google-tag-manager@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.2.0.tgz#730c28a43ff5073f595509c6cb77ce4311a2e369" - integrity sha512-rAKtsJ11vPHA7dTAqWCgyIy7AyFRF/lpI77Zd/4HKgqcIvIayVBvL3QtelhUazfYTLTH6ls6kQ9wjMcIFxRiGg== +"@docusaurus/plugin-google-tag-manager@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.3.2.tgz#7ce4cf4da6ef177d63bd83beafc4a45428ff01e2" + integrity sha512-ldkR58Fdeks0vC+HQ+L+bGFSJsotQsipXD+iKXQFvkOfmPIV6QbHRd7IIcm5b6UtwOiK33PylNS++gjyLUmaGw== dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" + "@docusaurus/core" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" tslib "^2.6.0" -"@docusaurus/plugin-sitemap@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.2.0.tgz#cae7c92a8631072fff39dd5caf5ea7608c795540" - integrity sha512-gnWDFt6MStjLkdtt63Lzc+14EPSd8B6mzJGJp9GQMvWDUoMAUijUqpVIHYQq+DPMcI4PJZ5I2nsl5XFf1vOldA== - dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/logger" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-common" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" +"@docusaurus/plugin-sitemap@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.3.2.tgz#f64fba6f03ebc14fdf55434aa2219bf80f752a13" + integrity sha512-/ZI1+bwZBhAgC30inBsHe3qY9LOZS+79fRGkNdTcGHRMcdAp6Vw2pCd1gzlxd/xU+HXsNP6cLmTOrggmRp3Ujg== + dependencies: + "@docusaurus/core" "3.3.2" + "@docusaurus/logger" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-common" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" fs-extra "^11.1.1" sitemap "^7.1.1" tslib "^2.6.0" "@docusaurus/preset-classic@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.2.0.tgz#f64d970eace76c61e4f1b4b7d85d9f69d4a2dd0e" - integrity sha512-t7tXyk8kUgT7hUqEOgSJnPs+Foem9ucuan/a9QVYaVFCDjp92Sb2FpCY8bVasAokYCjodYe2LfpAoSCj5YDYWg== - dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/plugin-content-blog" "3.2.0" - "@docusaurus/plugin-content-docs" "3.2.0" - "@docusaurus/plugin-content-pages" "3.2.0" - "@docusaurus/plugin-debug" "3.2.0" - "@docusaurus/plugin-google-analytics" "3.2.0" - "@docusaurus/plugin-google-gtag" "3.2.0" - "@docusaurus/plugin-google-tag-manager" "3.2.0" - "@docusaurus/plugin-sitemap" "3.2.0" - "@docusaurus/theme-classic" "3.2.0" - "@docusaurus/theme-common" "3.2.0" - "@docusaurus/theme-search-algolia" "3.2.0" - "@docusaurus/types" "3.2.0" - -"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce" - integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ== - dependencies: - "@types/react" "*" - prop-types "^15.6.2" - -"@docusaurus/theme-classic@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.2.0.tgz#4aa229f1a4b1b4c138a5c80089f1d8146f56252c" - integrity sha512-4oSO5BQOJ5ja7WYdL6jK1n4J96tp+VJHamdwao6Ea252sA3W3vvR0otTflG4p4XVjNZH6hlPQoi5lKW0HeRgfQ== - dependencies: - "@docusaurus/core" "3.2.0" - "@docusaurus/mdx-loader" "3.2.0" - "@docusaurus/module-type-aliases" "3.2.0" - "@docusaurus/plugin-content-blog" "3.2.0" - "@docusaurus/plugin-content-docs" "3.2.0" - "@docusaurus/plugin-content-pages" "3.2.0" - "@docusaurus/theme-common" "3.2.0" - "@docusaurus/theme-translations" "3.2.0" - "@docusaurus/types" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-common" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.3.2.tgz#1c89b5f35f9e727a1c91bc03eb25a5b42b7d67a6" + integrity sha512-1SDS7YIUN1Pg3BmD6TOTjhB7RSBHJRpgIRKx9TpxqyDrJ92sqtZhomDc6UYoMMLQNF2wHFZZVGFjxJhw2VpL+Q== + dependencies: + "@docusaurus/core" "3.3.2" + "@docusaurus/plugin-content-blog" "3.3.2" + "@docusaurus/plugin-content-docs" "3.3.2" + "@docusaurus/plugin-content-pages" "3.3.2" + "@docusaurus/plugin-debug" "3.3.2" + "@docusaurus/plugin-google-analytics" "3.3.2" + "@docusaurus/plugin-google-gtag" "3.3.2" + "@docusaurus/plugin-google-tag-manager" "3.3.2" + "@docusaurus/plugin-sitemap" "3.3.2" + "@docusaurus/theme-classic" "3.3.2" + "@docusaurus/theme-common" "3.3.2" + "@docusaurus/theme-search-algolia" "3.3.2" + "@docusaurus/types" "3.3.2" + +"@docusaurus/theme-classic@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.3.2.tgz#44489580e034a6f5b877ec8bfd1203e226b4a4ab" + integrity sha512-gepHFcsluIkPb4Im9ukkiO4lXrai671wzS3cKQkY9BXQgdVwsdPf/KS0Vs4Xlb0F10fTz+T3gNjkxNEgSN9M0A== + dependencies: + "@docusaurus/core" "3.3.2" + "@docusaurus/mdx-loader" "3.3.2" + "@docusaurus/module-type-aliases" "3.3.2" + "@docusaurus/plugin-content-blog" "3.3.2" + "@docusaurus/plugin-content-docs" "3.3.2" + "@docusaurus/plugin-content-pages" "3.3.2" + "@docusaurus/theme-common" "3.3.2" + "@docusaurus/theme-translations" "3.3.2" + "@docusaurus/types" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-common" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" "@mdx-js/react" "^3.0.0" clsx "^2.0.0" copy-text-to-clipboard "^3.2.0" @@ -1597,18 +1538,18 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-common@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.2.0.tgz#67f5f1a1e265e1f1a5b9fa7bfb4bf7b98dfcf981" - integrity sha512-sFbw9XviNJJ+760kAcZCQMQ3jkNIznGqa6MQ70E5BnbP+ja36kGgPOfjcsvAcNey1H1Rkhh3p2Mhf4HVLdKVVw== - dependencies: - "@docusaurus/mdx-loader" "3.2.0" - "@docusaurus/module-type-aliases" "3.2.0" - "@docusaurus/plugin-content-blog" "3.2.0" - "@docusaurus/plugin-content-docs" "3.2.0" - "@docusaurus/plugin-content-pages" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-common" "3.2.0" +"@docusaurus/theme-common@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.3.2.tgz#26f8a6d26ea6c297350887f614c6dac73c2ede4a" + integrity sha512-kXqSaL/sQqo4uAMQ4fHnvRZrH45Xz2OdJ3ABXDS7YVGPSDTBC8cLebFrRR4YF9EowUHto1UC/EIklJZQMG/usA== + dependencies: + "@docusaurus/mdx-loader" "3.3.2" + "@docusaurus/module-type-aliases" "3.3.2" + "@docusaurus/plugin-content-blog" "3.3.2" + "@docusaurus/plugin-content-docs" "3.3.2" + "@docusaurus/plugin-content-pages" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-common" "3.3.2" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1618,19 +1559,19 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.2.0.tgz#05338b37753dd13899fb0296f2c57130e9893dbf" - integrity sha512-PgvF4qHoqJp8+GfqClUbTF/zYNOsz4De251IuzXon7+7FAXwvb2qmYtA2nEwyMbB7faKOz33Pxzv+y+153KS/g== +"@docusaurus/theme-search-algolia@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.3.2.tgz#fe669e756697a2ca79784052e26c43a07ea7e449" + integrity sha512-qLkfCl29VNBnF1MWiL9IyOQaHxUvicZp69hISyq/xMsNvFKHFOaOfk9xezYod2Q9xx3xxUh9t/QPigIei2tX4w== dependencies: "@docsearch/react" "^3.5.2" - "@docusaurus/core" "3.2.0" - "@docusaurus/logger" "3.2.0" - "@docusaurus/plugin-content-docs" "3.2.0" - "@docusaurus/theme-common" "3.2.0" - "@docusaurus/theme-translations" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-validation" "3.2.0" + "@docusaurus/core" "3.3.2" + "@docusaurus/logger" "3.3.2" + "@docusaurus/plugin-content-docs" "3.3.2" + "@docusaurus/theme-common" "3.3.2" + "@docusaurus/theme-translations" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-validation" "3.3.2" algoliasearch "^4.18.0" algoliasearch-helper "^3.13.3" clsx "^2.0.0" @@ -1640,18 +1581,18 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.2.0.tgz#02a0e9bd0ed8cebc21a2f1e5b6d252b0e5ee39a9" - integrity sha512-VXzZJBuyVEmwUYyud+7IgJQEBRM6R2u/s10Rp3DOP19CBQxeKgHYTKkKhFtDeKMHDassb665kjgOi0YlJfUT6w== +"@docusaurus/theme-translations@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.3.2.tgz#39ad011573ce963f1eda98ded925971ca57c5a52" + integrity sha512-bPuiUG7Z8sNpGuTdGnmKl/oIPeTwKr0AXLGu9KaP6+UFfRZiyWbWE87ti97RrevB2ffojEdvchNujparR3jEZQ== dependencies: fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.2.0.tgz#c5bfd000ad4f72e9a7e6beff79905f9ea165fcd3" - integrity sha512-uG3FfTkkkbZIPPNYx6xRfZHKeGyRd/inIT1cqvYt1FobFLd+7WhRXrSBqwJ9JajJjEAjNioRMVFgGofGf/Wdww== +"@docusaurus/types@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.3.2.tgz#0e17689512b22209a98f22ee80ac56899e94d390" + integrity sha512-5p201S7AZhliRxTU7uMKtSsoC8mgPA9bs9b5NQg1IRdRxJfflursXNVsgc3PcMqiUTul/v1s3k3rXXFlRE890w== dependencies: "@mdx-js/mdx" "^3.0.0" "@types/history" "^4.7.11" @@ -1663,33 +1604,33 @@ webpack "^5.88.1" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.2.0.tgz#6163a2c415d150d6df73a8aceec6004f0ba3bb06" - integrity sha512-WEQT5L2lT/tBQgDRgeZQAIi9YJBrwEILb1BuObQn1St3T/4K1gx5fWwOT8qdLOov296XLd1FQg9Ywu27aE9svw== +"@docusaurus/utils-common@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.3.2.tgz#d17868a55a25186bfdb35de317a3878e867f2005" + integrity sha512-QWFTLEkPYsejJsLStgtmetMFIA3pM8EPexcZ4WZ7b++gO5jGVH7zsipREnCHzk6+eDgeaXfkR6UPaTt86bp8Og== dependencies: tslib "^2.6.0" -"@docusaurus/utils-validation@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.2.0.tgz#b53463d9dc6eb335a2ad93ed4b3c397162533e6d" - integrity sha512-rCzMTqwNrBrEOyU8EaD1fYWdig4TDhfj+YLqB8DY68VUAqSIgbY+yshpqFKB0bznFYNBJbn0bGpvVuImQOa/vA== +"@docusaurus/utils-validation@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.3.2.tgz#7109888d9c9b23eec787b41341809438f54c2aec" + integrity sha512-itDgFs5+cbW9REuC7NdXals4V6++KifgVMzoGOOOSIifBQw+8ULhy86u5e1lnptVL0sv8oAjq2alO7I40GR7pA== dependencies: - "@docusaurus/logger" "3.2.0" - "@docusaurus/utils" "3.2.0" - "@docusaurus/utils-common" "3.2.0" + "@docusaurus/logger" "3.3.2" + "@docusaurus/utils" "3.3.2" + "@docusaurus/utils-common" "3.3.2" joi "^17.9.2" js-yaml "^4.1.0" tslib "^2.6.0" -"@docusaurus/utils@3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.2.0.tgz#1312221d224eb2cbaaaf53d24efca3e1e976db3e" - integrity sha512-3rgrE7iL60yV2JQivlcoxUNNTK2APmn+OHLUmTvX2pueIM8DEOCEFHpJO4MiWjFO7V/Wq3iA/W1M03JnjdugVw== +"@docusaurus/utils@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.3.2.tgz#2571baccb5b7ed53d50b670094139a31a53558df" + integrity sha512-f4YMnBVymtkSxONv4Y8js3Gez9IgHX+Lcg6YRMOjVbq8sgCcdYK1lf6SObAuz5qB/mxiSK7tW0M9aaiIaUSUJg== dependencies: - "@docusaurus/logger" "3.2.0" - "@docusaurus/utils-common" "3.2.0" - "@svgr/webpack" "^6.5.1" + "@docusaurus/logger" "3.3.2" + "@docusaurus/utils-common" "3.3.2" + "@svgr/webpack" "^8.1.0" escape-string-regexp "^4.0.0" file-loader "^6.2.0" fs-extra "^11.1.1" @@ -1770,7 +1711,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -1907,111 +1848,111 @@ micromark-util-character "^1.1.0" micromark-util-symbol "^1.0.1" -"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" - integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== -"@svgr/babel-plugin-remove-jsx-attribute@*": +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== -"@svgr/babel-plugin-remove-jsx-empty-expression@*": +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" - integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== - -"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" - integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== - -"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" - integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== - -"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" - integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== - -"@svgr/babel-plugin-transform-svg-component@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" - integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== - -"@svgr/babel-preset@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" - integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" - "@svgr/babel-plugin-remove-jsx-attribute" "*" - "@svgr/babel-plugin-remove-jsx-empty-expression" "*" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" - "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" - "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" - "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" - "@svgr/babel-plugin-transform-svg-component" "^6.5.1" - -"@svgr/core@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" - integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + 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" + +"@svgr/core@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" camelcase "^6.2.0" - cosmiconfig "^7.0.1" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" -"@svgr/hast-util-to-babel-ast@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" - integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== dependencies: - "@babel/types" "^7.20.0" + "@babel/types" "^7.21.3" entities "^4.4.0" -"@svgr/plugin-jsx@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" - integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== +"@svgr/plugin-jsx@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/hast-util-to-babel-ast" "^6.5.1" + "@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" -"@svgr/plugin-svgo@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" - integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== +"@svgr/plugin-svgo@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== dependencies: - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - svgo "^2.8.0" + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" -"@svgr/webpack@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8" - integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA== +"@svgr/webpack@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== dependencies: - "@babel/core" "^7.19.6" - "@babel/plugin-transform-react-constant-elements" "^7.18.12" - "@babel/preset-env" "^7.19.4" + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" "@babel/preset-react" "^7.18.6" - "@babel/preset-typescript" "^7.18.6" - "@svgr/core" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" - "@svgr/plugin-svgo" "^6.5.1" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.1.0" + "@svgr/plugin-jsx" "8.1.0" + "@svgr/plugin-svgo" "8.1.0" "@szmarczak/http-timer@^5.0.1": version "5.0.1" @@ -2083,9 +2024,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.56.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.6.tgz#d5dc16cac025d313ee101108ba5714ea10eb3ed0" - integrity sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A== + version "8.56.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2103,9 +2044,9 @@ integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.43" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz#10d8444be560cb789c4735aea5eac6e5af45df54" - integrity sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg== + version "4.19.0" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa" + integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2193,14 +2134,9 @@ "@types/unist" "*" "@types/mdx@^2.0.0": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.12.tgz#38db34cc8999b982beaec01399620bee6c65ef2e" - integrity sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw== - -"@types/mime@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45" - integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw== + version "2.0.13" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" + integrity sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw== "@types/mime@^1": version "1.3.5" @@ -2220,9 +2156,9 @@ "@types/node" "*" "@types/node@*": - version "20.11.30" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.30.tgz#9c33467fc23167a347e73834f788f4b9f399d66f" - integrity sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw== + version "20.12.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.10.tgz#8f0c3f12b0f075eee1fe20c1afb417e9765bef76" + integrity sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw== dependencies: undici-types "~5.26.4" @@ -2247,9 +2183,9 @@ integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== "@types/qs@*": - version "6.9.14" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.14.tgz#169e142bfe493895287bee382af6039795e9b75b" - integrity sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA== + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== "@types/range-parser@*": version "1.2.7" @@ -2283,9 +2219,9 @@ "@types/react" "*" "@types/react@*": - version "18.2.73" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.73.tgz#0579548ad122660d99e00499d22e33b81e73ed94" - integrity sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA== + version "18.3.1" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.1.tgz#fed43985caa834a2084d002e4771e15dfcbdbe8e" + integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -2318,13 +2254,13 @@ "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.5" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033" - integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ== + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== dependencies: "@types/http-errors" "*" - "@types/mime" "*" "@types/node" "*" + "@types/send" "*" "@types/sockjs@^0.3.33": version "0.3.36" @@ -2574,42 +2510,42 @@ ajv@^6.12.2, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + version "8.13.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" + uri-js "^4.4.1" algoliasearch-helper@^3.13.3: - version "3.16.3" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.16.3.tgz#38c3a18e278306f565823cc7f3dd706825b4bfb9" - integrity sha512-1OuJT6sONAa9PxcOmWo5WCAT3jQSpCR9/m5Azujja7nhUQwAUDvaaAYrcmUySsrvHh74usZHbE3jFfGnWtZj8w== + version "3.19.0" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.19.0.tgz#56f9c61f46ecb0a0f7497f127a5d32a94d87e090" + integrity sha512-AaSb5DZDMZmDQyIy6lf4aL0OZGgyIdqvLIIvSuVQOIOqfhrYSY7TvotIFI2x0Q3cP3xUpTd7lI1astUC4aXBJw== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.12.0, algoliasearch@^4.18.0, algoliasearch@^4.19.1: - version "4.23.2" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.23.2.tgz#3b7bc93d98f3965628c73a06cbf9203531324a9d" - integrity sha512-8aCl055IsokLuPU8BzLjwzXjb7ty9TPcUFFOk0pYOwsE5DMVhE3kwCMFtsCFKcnoPZK7oObm+H5mbnSO/9ioxQ== - dependencies: - "@algolia/cache-browser-local-storage" "4.23.2" - "@algolia/cache-common" "4.23.2" - "@algolia/cache-in-memory" "4.23.2" - "@algolia/client-account" "4.23.2" - "@algolia/client-analytics" "4.23.2" - "@algolia/client-common" "4.23.2" - "@algolia/client-personalization" "4.23.2" - "@algolia/client-search" "4.23.2" - "@algolia/logger-common" "4.23.2" - "@algolia/logger-console" "4.23.2" - "@algolia/recommend" "4.23.2" - "@algolia/requester-browser-xhr" "4.23.2" - "@algolia/requester-common" "4.23.2" - "@algolia/requester-node-http" "4.23.2" - "@algolia/transporter" "4.23.2" +algoliasearch@^4.18.0, algoliasearch@^4.19.1: + version "4.23.3" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.23.3.tgz#e09011d0a3b0651444916a3e6bbcba064ec44b60" + integrity sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg== + dependencies: + "@algolia/cache-browser-local-storage" "4.23.3" + "@algolia/cache-common" "4.23.3" + "@algolia/cache-in-memory" "4.23.3" + "@algolia/client-account" "4.23.3" + "@algolia/client-analytics" "4.23.3" + "@algolia/client-common" "4.23.3" + "@algolia/client-personalization" "4.23.3" + "@algolia/client-search" "4.23.3" + "@algolia/logger-common" "4.23.3" + "@algolia/logger-console" "4.23.3" + "@algolia/recommend" "4.23.3" + "@algolia/requester-browser-xhr" "4.23.3" + "@algolia/requester-common" "4.23.3" + "@algolia/requester-node-http" "4.23.3" + "@algolia/transporter" "4.23.3" ansi-align@^3.0.1: version "3.0.1" @@ -2719,7 +2655,7 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -autoprefixer@^10.4.12, autoprefixer@^10.4.14: +autoprefixer@^10.4.14, autoprefixer@^10.4.19: version "10.4.19" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== @@ -2747,12 +2683,12 @@ babel-plugin-dynamic-import-node@^2.3.3: object.assign "^4.1.0" babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz#276f41710b03a64f6467433cab72cbc2653c38b1" - integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ== + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: @@ -2764,11 +2700,11 @@ babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: core-js-compat "^3.36.1" babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz#4f08ef4c62c7a7f66a35ed4c0d75e30506acc6be" - integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g== + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" bail@^2.0.0: version "2.0.2" @@ -2869,7 +2805,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -2957,9 +2893,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: - version "1.0.30001600" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079" - integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ== + version "1.0.30001616" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz#4342712750d35f71ebba9fcac65e2cf8870013c3" + integrity sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw== ccount@^2.0.0: version "2.0.1" @@ -3036,7 +2972,7 @@ cheerio-select@^2.1.0: domhandler "^5.0.3" domutils "^3.0.1" -cheerio@^1.0.0-rc.12, cheerio@^1.0.0-rc.9: +cheerio@^1.0.0-rc.12: version "1.0.0-rc.12" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== @@ -3109,15 +3045,10 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" -clsx@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - clsx@^2.0.0, clsx@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb" - integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== collapse-white-space@^2.0.0: version "2.1.0" @@ -3148,7 +3079,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colord@^2.9.1: +colord@^2.9.3: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== @@ -3302,21 +3233,21 @@ copy-webpack-plugin@^11.0.0: serialize-javascript "^6.0.0" core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8" - integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA== + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" + integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== dependencies: browserslist "^4.23.0" core-js-pure@^3.30.2: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.36.1.tgz#1461c89e76116528b54eba20a0aff30164087a94" - integrity sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA== + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.0.tgz#ce99fb4a7cec023fdbbe5b5bd1f06bbcba83316e" + integrity sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ== core-js@^3.31.1: - version "3.36.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.1.tgz#c97a7160ebd00b2de19e62f4bbd3406ab720e578" - integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA== + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb" + integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug== core-util-is@~1.0.0: version "1.0.3" @@ -3334,18 +3265,7 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - 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" - -cosmiconfig@^8.3.5: +cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: version "8.3.6" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== @@ -3371,36 +3291,36 @@ crypto-random-string@^4.0.0: dependencies: type-fest "^1.0.1" -css-declaration-sorter@^6.3.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" - integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== +css-declaration-sorter@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" + integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== css-loader@^6.8.1: - version "6.10.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7" - integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw== + version "6.11.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" + integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== dependencies: icss-utils "^5.1.0" postcss "^8.4.33" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.4" - postcss-modules-scope "^3.1.1" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" postcss-modules-values "^4.0.0" postcss-value-parser "^4.2.0" semver "^7.5.4" -css-minimizer-webpack-plugin@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz#79f6199eb5adf1ff7ba57f105e3752d15211eb35" - integrity sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA== - dependencies: - cssnano "^5.1.8" - jest-worker "^29.1.2" - postcss "^8.4.17" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" +css-minimizer-webpack-plugin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + cssnano "^6.0.1" + jest-worker "^29.4.3" + postcss "^8.4.24" + schema-utils "^4.0.1" + serialize-javascript "^6.0.1" css-select@^4.1.3: version "4.3.0" @@ -3424,13 +3344,21 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" + mdn-data "2.0.28" + source-map-js "^1.0.1" css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" @@ -3442,73 +3370,74 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-advanced@^5.3.10: - version "5.3.10" - resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz#25558a1fbf3a871fb6429ce71e41be7f5aca6eef" - integrity sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ== - dependencies: - autoprefixer "^10.4.12" - cssnano-preset-default "^5.2.14" - postcss-discard-unused "^5.1.0" - postcss-merge-idents "^5.1.1" - postcss-reduce-idents "^5.2.0" - postcss-zindex "^5.1.0" - -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== +cssnano-preset-advanced@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz#82b090872b8f98c471f681d541c735acf8b94d3f" + integrity sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ== + dependencies: + autoprefixer "^10.4.19" + browserslist "^4.23.0" + cssnano-preset-default "^6.1.2" + postcss-discard-unused "^6.0.5" + postcss-merge-idents "^6.0.3" + postcss-reduce-idents "^6.0.3" + postcss-zindex "^6.0.2" -cssnano@^5.1.15, cssnano@^5.1.8: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== +cssnano-preset-default@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e" + integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg== dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" + browserslist "^4.23.0" + css-declaration-sorter "^7.2.0" + cssnano-utils "^4.0.2" + postcss-calc "^9.0.1" + postcss-colormin "^6.1.0" + postcss-convert-values "^6.1.0" + postcss-discard-comments "^6.0.2" + postcss-discard-duplicates "^6.0.3" + postcss-discard-empty "^6.0.3" + postcss-discard-overridden "^6.0.2" + postcss-merge-longhand "^6.0.5" + postcss-merge-rules "^6.1.1" + postcss-minify-font-values "^6.1.0" + postcss-minify-gradients "^6.0.3" + postcss-minify-params "^6.1.0" + postcss-minify-selectors "^6.0.4" + postcss-normalize-charset "^6.0.2" + postcss-normalize-display-values "^6.0.2" + postcss-normalize-positions "^6.0.2" + postcss-normalize-repeat-style "^6.0.2" + postcss-normalize-string "^6.0.2" + postcss-normalize-timing-functions "^6.0.2" + postcss-normalize-unicode "^6.1.0" + postcss-normalize-url "^6.0.2" + postcss-normalize-whitespace "^6.0.2" + postcss-ordered-values "^6.0.2" + postcss-reduce-initial "^6.1.0" + postcss-reduce-transforms "^6.0.2" + postcss-svgo "^6.0.3" + postcss-unique-selectors "^6.0.4" + +cssnano-utils@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c" + integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ== -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== +cssnano@^6.0.1, cssnano@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8" + integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA== dependencies: - css-tree "^1.1.2" + cssnano-preset-default "^6.1.2" + lilconfig "^3.1.1" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" csstype@^3.0.2: version "3.1.3" @@ -3558,7 +3487,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deepmerge@^4.2.2: +deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -3775,9 +3704,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.668: - version "1.4.722" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.722.tgz#99ae3484c5fc0f387d39ad98d77e1f259b9f4074" - integrity sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ== + version "1.4.757" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz#45f7c9341b538f8c4b9ca8af9692e0ed1a776a44" + integrity sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw== emoji-regex@^8.0.0: version "8.0.0" @@ -3847,11 +3776,11 @@ es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-module-lexer@^1.2.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz#4878fee3789ad99e065f975fdd3c645529ff0236" - integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw== + version "1.5.2" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497" + integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA== -escalade@^3.1.1: +escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== @@ -3943,9 +3872,9 @@ estree-util-to-js@^2.0.0: source-map "^0.7.0" estree-util-value-to-estree@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz#0b7b5d6b6a4aaad5c60999ffbc265a985df98ac5" - integrity sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.1.1.tgz#a007388eca677510f319603a2f279fed6d104a15" + integrity sha512-5mvUrF2suuv5f5cGDnDphIy4/gW86z82kl5qG6mM9z04SEQI4FB5Apmaw/TGEf3l55nLtMs5s51dmhUzvAHQCA== dependencies: "@types/estree" "^1.0.0" is-plain-obj "^4.0.0" @@ -4261,9 +4190,9 @@ fs-extra@^9.0.0: universalify "^2.0.0" fs-monkey@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" - integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== + version "1.0.6" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" + integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== fs.realpath@^1.0.0: version "1.0.0" @@ -4545,9 +4474,9 @@ hast-util-parse-selector@^4.0.0: "@types/hast" "^3.0.0" hast-util-raw@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.2.tgz#39b4a4886bd9f0a5dd42e86d02c966c2c152884c" - integrity sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA== + version "9.0.3" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.3.tgz#87ad66bdd7b1ceb166452bdab7dfb3e9ba640419" + integrity sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ== dependencies: "@types/hast" "^3.0.0" "@types/unist" "^3.0.0" @@ -4671,11 +4600,6 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" -htm@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/htm/-/htm-3.1.1.tgz#49266582be0dc66ed2235d5ea892307cc0c24b78" - integrity sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ== - html-entities@^2.3.2: version "2.5.2" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" @@ -4851,7 +4775,7 @@ immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== -import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: +import-fresh@^3.1.0, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -4935,9 +4859,9 @@ ipaddr.js@1.9.1: integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== ipaddr.js@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" - integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== is-alphabetical@^2.0.0: version "2.0.1" @@ -5070,11 +4994,6 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-reference@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c" @@ -5155,7 +5074,7 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.1.2: +jest-worker@^29.4.3: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== @@ -5176,9 +5095,9 @@ jju@^1.1.0: integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== joi@^17.9.2: - version "17.12.2" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.2.tgz#283a664dabb80c7e52943c557aab82faea09f521" - integrity sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw== + version "17.13.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.1.tgz#9c7b53dc3b44dd9ae200255cc3b398874918a6ca" + integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg== dependencies: "@hapi/hoek" "^9.3.0" "@hapi/topo" "^5.1.0" @@ -5309,10 +5228,10 @@ leven@^3.1.0: read-installed "~3.1.3" treeify "^1.0.1" -lilconfig@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +lilconfig@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== lines-and-columns@^1.1.6: version "1.2.4" @@ -5423,16 +5342,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lunr-languages@^1.4.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/lunr-languages/-/lunr-languages-1.14.0.tgz#6e97635f434631729dd0e5654daedd291cd6f2d0" - integrity sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA== - -mark.js@^8.11.1: - version "8.11.1" - resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" - integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== - markdown-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" @@ -5660,10 +5569,15 @@ mdast-util-to-string@^4.0.0: dependencies: "@types/mdast" "^4.0.0" -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== media-typer@0.3.0: version "0.3.0" @@ -5698,9 +5612,9 @@ methods@~1.1.2: integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromark-core-commonmark@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3" - integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA== + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz#9a45510557d068605c6e9a80f282b2bb8581e43d" + integrity sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA== dependencies: decode-named-character-reference "^1.0.0" devlop "^1.0.0" @@ -6061,9 +5975,9 @@ micromark-util-sanitize-uri@^2.0.0: micromark-util-symbol "^2.0.0" micromark-util-subtokenize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581" - integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg== + version "2.0.1" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz#76129c49ac65da6e479c09d0ec4b5f29ec6eace5" + integrity sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q== dependencies: devlop "^1.0.0" micromark-util-chunked "^2.0.0" @@ -6166,9 +6080,9 @@ mimic-response@^4.0.0: integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== mini-css-extract-plugin@^2.7.6: - version "2.8.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz#75245f3f30ce3a56dbdd478084df6fe475f02dc7" - integrity sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA== + version "2.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235" + integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== dependencies: schema-utils "^4.0.0" tapable "^2.2.1" @@ -6321,11 +6235,6 @@ normalize-range@^0.1.2: resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - normalize-url@^8.0.0: version "8.0.1" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a" @@ -6674,58 +6583,58 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== +postcss-calc@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== dependencies: - postcss-selector-parser "^6.0.9" + postcss-selector-parser "^6.0.11" postcss-value-parser "^4.2.0" -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== +postcss-colormin@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" + integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" caniuse-api "^3.0.0" - colord "^2.9.1" + colord "^2.9.3" postcss-value-parser "^4.2.0" -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== +postcss-convert-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48" + integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== +postcss-discard-comments@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" + integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw== -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== +postcss-discard-duplicates@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb" + integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw== -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== +postcss-discard-empty@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9" + integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ== -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== +postcss-discard-overridden@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d" + integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ== -postcss-discard-unused@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142" - integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw== +postcss-discard-unused@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz#c1b0e8c032c6054c3fbd22aaddba5b248136f338" + integrity sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA== dependencies: - postcss-selector-parser "^6.0.5" + postcss-selector-parser "^6.0.16" postcss-loader@^7.3.3: version "7.3.4" @@ -6736,82 +6645,82 @@ postcss-loader@^7.3.3: jiti "^1.20.0" semver "^7.5.4" -postcss-merge-idents@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1" - integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw== +postcss-merge-idents@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz#7b9c31c7bc823c94bec50f297f04e3c2b838ea65" + integrity sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g== dependencies: - cssnano-utils "^3.1.0" + cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== +postcss-merge-longhand@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a" + integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w== dependencies: postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" + stylehacks "^6.1.1" -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== +postcss-merge-rules@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d" + integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" + cssnano-utils "^4.0.2" + postcss-selector-parser "^6.0.16" -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== +postcss-minify-font-values@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59" + integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg== dependencies: postcss-value-parser "^4.2.0" -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== +postcss-minify-gradients@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6" + integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q== dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" + colord "^2.9.3" + cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== +postcss-minify-params@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08" + integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA== dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" + browserslist "^4.23.0" + cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== +postcss-minify-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff" + integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ== dependencies: - postcss-selector-parser "^6.0.5" + postcss-selector-parser "^6.0.16" -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== -postcss-modules-local-by-default@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6" - integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q== +postcss-modules-local-by-default@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== dependencies: icss-utils "^5.0.0" postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134" - integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA== +postcss-modules-scope@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== dependencies: postcss-selector-parser "^6.0.4" @@ -6822,100 +6731,99 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== +postcss-normalize-charset@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" + integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ== -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== +postcss-normalize-display-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535" + integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== +postcss-normalize-positions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a" + integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== +postcss-normalize-repeat-style@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3" + integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== +postcss-normalize-string@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363" + integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== +postcss-normalize-timing-functions@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0" + integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== +postcss-normalize-unicode@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e" + integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" postcss-value-parser "^4.2.0" -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== +postcss-normalize-url@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79" + integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ== dependencies: - normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== +postcss-normalize-whitespace@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd" + integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q== dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== +postcss-ordered-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" + integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q== dependencies: - cssnano-utils "^3.1.0" + cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" -postcss-reduce-idents@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95" - integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg== +postcss-reduce-idents@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz#b0d9c84316d2a547714ebab523ec7d13704cd486" + integrity sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA== dependencies: postcss-value-parser "^4.2.0" -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== +postcss-reduce-initial@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba" + integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw== dependencies: - browserslist "^4.21.4" + browserslist "^4.23.0" caniuse-api "^3.0.0" -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== +postcss-reduce-transforms@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d" + integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA== dependencies: postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.0.16" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== @@ -6923,39 +6831,39 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-sort-media-queries@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz#04a5a78db3921eb78f28a1a781a2e68e65258128" - integrity sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw== +postcss-sort-media-queries@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz#4556b3f982ef27d3bac526b99b6c0d3359a6cf97" + integrity sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA== dependencies: - sort-css-media-queries "2.1.0" + sort-css-media-queries "2.2.0" -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== +postcss-svgo@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa" + integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g== dependencies: postcss-value-parser "^4.2.0" - svgo "^2.7.0" + svgo "^3.2.0" -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== +postcss-unique-selectors@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088" + integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg== dependencies: - postcss-selector-parser "^6.0.5" + postcss-selector-parser "^6.0.16" postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss-zindex@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" - integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== +postcss-zindex@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-6.0.2.tgz#e498304b83a8b165755f53db40e2ea65a99b56e1" + integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== -postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.26, postcss@^8.4.33: +postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.38: version "8.4.38" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -6965,17 +6873,17 @@ postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.26, postcss@^8.4.33: source-map-js "^1.2.0" posthog-js@^1.116.6: - version "1.116.6" - resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.116.6.tgz#9a5c9f49230a76642f4c44d93b96710f886c2880" - integrity sha512-rvt8HxzJD4c2B/xsUa4jle8ApdqljeBI2Qqjp4XJMohQf18DXRyM6b96H5/UMs8jxYuZG14Er0h/kEIWeU6Fmw== + version "1.130.2" + resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.130.2.tgz#b0360d77a4dfbb2bc809a7207253a4f7c2b5340d" + integrity sha512-QR/j9Xs/STK3+VJgqiByeXFKT17LGZZvJtrCdgFhwydp8WfisJw7zrSy7rVDjYS0UeKJJ/3cO/qtlXD3dR2+Eg== dependencies: fflate "^0.4.8" preact "^10.19.3" -preact@^10.13.2, preact@^10.19.3: - version "10.20.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.20.1.tgz#1bc598ab630d8612978f7533da45809a8298542b" - integrity sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw== +preact@^10.19.3: + version "10.21.0" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.21.0.tgz#5b0335c873a1724deb66e517830db4fd310c24f6" + integrity sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg== pretty-error@^4.0.0: version "4.0.0" @@ -7026,9 +6934,9 @@ prop-types@15.8.1, prop-types@^15.6.2, prop-types@^15.7.2: react-is "^16.13.1" property-information@^6.0.0: - version "6.4.1" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.1.tgz#de8b79a7415fd2107dfbe65758bb2cc9dfcf60ac" - integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w== + version "6.5.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" + integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== proto-list@~1.2.1: version "1.2.4" @@ -7152,12 +7060,12 @@ react-dev-utils@^12.0.1: text-table "^0.2.0" react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" - scheduler "^0.23.0" + scheduler "^0.23.2" react-error-overlay@^6.0.11: version "6.0.11" @@ -7195,9 +7103,9 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0: integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-json-view-lite@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.3.0.tgz#1f1feee6f1b1d75cc498cd57812f441b88b51e21" - integrity sha512-aN1biKC5v4DQkmQBlZjuMFR09MKZGMPtIg+cut8zEeg2HXd6gl2gRy0n4HMacHf0dznQgo0SVXN7eT8zV3hEuQ== + version "1.4.0" + resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz#0ff493245f4550abe5e1f1836f170fa70bb95914" + integrity sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA== react-loadable-ssr-addon-v5-slorber@^1.0.1: version "1.0.1" @@ -7206,6 +7114,13 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: dependencies: "@babel/runtime" "^7.10.3" +"react-loadable@npm:@docusaurus/react-loadable@6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz#de6c7f73c96542bd70786b8e522d535d69069dc4" + integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ== + dependencies: + "@types/react" "*" + react-router-config@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" @@ -7258,9 +7173,9 @@ react-youtube@^10.1.0: youtube-player "5.5.2" react@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" @@ -7615,10 +7530,10 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== dependencies: loose-envify "^1.1.0" @@ -7640,7 +7555,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: +schema-utils@^4.0.0, schema-utils@^4.0.1: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -7889,6 +7804,14 @@ slide@~1.1.3: resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw== +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" @@ -7898,12 +7821,12 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" -sort-css-media-queries@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz#7c85e06f79826baabb232f5560e9745d7a78c4ce" - integrity sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA== +sort-css-media-queries@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz#aa33cf4a08e0225059448b6c40eddbf9f1c8334c" + integrity sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA== -source-map-js@^1.2.0: +source-map-js@^1.0.1, source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== @@ -7916,7 +7839,7 @@ source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: +source-map@^0.6.0, source-map@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -7964,11 +7887,6 @@ srcset@^4.0.0: resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4" integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw== -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - statuses@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" @@ -8017,9 +7935,9 @@ string_decoder@~1.1.1: safe-buffer "~5.1.0" stringify-entities@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" - integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== + version "4.0.4" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== dependencies: character-entities-html4 "^2.0.0" character-entities-legacy "^3.0.0" @@ -8088,13 +8006,13 @@ style-to-object@^1.0.0: dependencies: inline-style-parser "0.2.3" -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== +stylehacks@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6" + integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg== dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" + browserslist "^4.23.0" + postcss-selector-parser "^6.0.16" supports-color@^0.2.0: version "0.2.0" @@ -8132,18 +8050,18 @@ svg-parser@^2.0.4: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^2.7.0, svgo@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== +svgo@^3.0.2, svgo@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.2.0.tgz#7a5dff2938d8c6096e00295c2390e8e652fa805d" + integrity sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" picocolors "^1.0.0" - stable "^0.1.8" tapable@^1.0.0: version "1.1.3" @@ -8167,9 +8085,9 @@ terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: terser "^5.26.0" terser@^5.10.0, terser@^5.15.1, terser@^5.26.0: - version "5.30.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.0.tgz#64cb2af71e16ea3d32153f84d990f9be0cdc22bf" - integrity sha512-Y/SblUl5kEyEFzhMAQdsxVHh+utAxd4IuRNJzKywY/4uzSogh3G219jqbDDxYu4MXO9CzY3tSEqmZvW6AoEDJw== + version "5.31.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" + integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -8264,9 +8182,9 @@ typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" typescript@^5.4.3: - version "5.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" - integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== undici-types@~5.26.4: version "5.26.5" @@ -8385,11 +8303,11 @@ unpipe@1.0.0, unpipe@~1.0.0: integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + version "1.0.15" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#60ed9f8cba4a728b7ecf7356f641a31e3a691d97" + integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA== dependencies: - escalade "^3.1.1" + escalade "^3.1.2" picocolors "^1.0.0" update-notifier@^6.0.2: @@ -8412,7 +8330,7 @@ update-notifier@^6.0.2: semver-diff "^4.0.0" xdg-basedir "^5.1.0" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -8514,9 +8432,9 @@ web-namespaces@^2.0.0: integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== webpack-bundle-analyzer@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454" - integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ== + version "4.10.2" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" + integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== dependencies: "@discoveryjs/json-ext" "0.5.7" acorn "^8.0.4" @@ -8526,7 +8444,6 @@ webpack-bundle-analyzer@^4.9.0: escape-string-regexp "^4.0.0" gzip-size "^6.0.0" html-escaper "^2.0.2" - is-plain-object "^5.0.0" opener "^1.5.2" picocolors "^1.0.0" sirv "^2.0.3" @@ -8703,9 +8620,9 @@ ws@^7.3.1: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.13.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== xdg-basedir@^5.0.1, xdg-basedir@^5.1.0: version "5.1.0" @@ -8729,7 +8646,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: +yaml@^1.7.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== diff --git a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Bold.ttf.import b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Bold.ttf.import index a3eb4791..de1351f6 100644 --- a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Bold.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Bold.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/AnonymousPro-Bold.ttf-9d8fef4d357af5b52cd60af Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/AnonymousPro-BoldItalic.ttf.import b/mirror-godot-app/addons/gut/fonts/AnonymousPro-BoldItalic.ttf.import index ef28dd80..bdde2072 100644 --- a/mirror-godot-app/addons/gut/fonts/AnonymousPro-BoldItalic.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/AnonymousPro-BoldItalic.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/AnonymousPro-BoldItalic.ttf-4274bf704d3d6b9cd Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Italic.ttf.import b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Italic.ttf.import index 1779af17..ce3e5b91 100644 --- a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Italic.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Italic.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/AnonymousPro-Italic.ttf-9989590b02137b799e13d Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Regular.ttf.import b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Regular.ttf.import index 1e2975b1..a567498c 100644 --- a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Regular.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Regular.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/AnonymousPro-Regular.ttf-856c843fd6f89964d2ca Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/CourierPrime-Bold.ttf.import b/mirror-godot-app/addons/gut/fonts/CourierPrime-Bold.ttf.import index 7d60fb0a..cb05171d 100644 --- a/mirror-godot-app/addons/gut/fonts/CourierPrime-Bold.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/CourierPrime-Bold.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/CourierPrime-Bold.ttf-1f003c66d63ebed70964e77 Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/CourierPrime-BoldItalic.ttf.import b/mirror-godot-app/addons/gut/fonts/CourierPrime-BoldItalic.ttf.import index 4678c9eb..0a9a7b77 100644 --- a/mirror-godot-app/addons/gut/fonts/CourierPrime-BoldItalic.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/CourierPrime-BoldItalic.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/CourierPrime-BoldItalic.ttf-65ebcc61dd5e1dfa8 Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/CourierPrime-Italic.ttf.import b/mirror-godot-app/addons/gut/fonts/CourierPrime-Italic.ttf.import index 522e2950..89412fc9 100644 --- a/mirror-godot-app/addons/gut/fonts/CourierPrime-Italic.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/CourierPrime-Italic.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/CourierPrime-Italic.ttf-baa9156a73770735a0f72 Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/CourierPrime-Regular.ttf.import b/mirror-godot-app/addons/gut/fonts/CourierPrime-Regular.ttf.import index 38174660..9fde40b1 100644 --- a/mirror-godot-app/addons/gut/fonts/CourierPrime-Regular.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/CourierPrime-Regular.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/CourierPrime-Regular.ttf-3babe7e4a7a588dfc9a8 Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Bold.ttf.import b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Bold.ttf.import index 7548ad04..673d1515 100644 --- a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Bold.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Bold.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/LobsterTwo-Bold.ttf-7c7f734103b58a32491a47881 Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/LobsterTwo-BoldItalic.ttf.import b/mirror-godot-app/addons/gut/fonts/LobsterTwo-BoldItalic.ttf.import index 4b609e80..62048b0e 100644 --- a/mirror-godot-app/addons/gut/fonts/LobsterTwo-BoldItalic.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/LobsterTwo-BoldItalic.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/LobsterTwo-BoldItalic.ttf-227406a33e84448e6aa Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Italic.ttf.import b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Italic.ttf.import index 5899b797..d3ca2728 100644 --- a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Italic.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Italic.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/LobsterTwo-Italic.ttf-f93abf6c25390c85ad5fb6c Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Regular.ttf.import b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Regular.ttf.import index 45a12c8a..9cc75421 100644 --- a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Regular.ttf.import +++ b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Regular.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/LobsterTwo-Regular.ttf-f3fcfa01cd671c8da433dd Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/mirror-godot-app/addons/mirror_internal/env_configs/official.cfg b/mirror-godot-app/addons/mirror_internal/env_configs/official.cfg index 2e0285b3..93104726 100644 --- a/mirror-godot-app/addons/mirror_internal/env_configs/official.cfg +++ b/mirror-godot-app/addons/mirror_internal/env_configs/official.cfg @@ -31,8 +31,8 @@ env_name="official" auto_updater_bucket_uri="https://storage.googleapis.com/mirror_native_client_builds_prod/AutoUpdater" integration_test_ids={} base_url="https://in.themirror.space" -connection_server="https://api.themirror.space" -connection_server_ws="wss://api.themirror.space" +connection_server="https://mirror-web-server-mirror-official-pkmrhxu4na-uc.a.run.app" +connection_server_ws="wss://mirror-web-server-mirror-official-pkmrhxu4na-uc.a.run.app" landing_page_url="https://themirror.space" posthog_api_key="phc_wO5tr7Hle88gRKsDoQIybFqekqTctZ8nXmbokNsCv9b" mixpanel_api_key="c5e82051367277731c1b1cf0d46d9d57" diff --git a/mirror-godot-app/addons/mirror_internal/env_configs/temp.cfg b/mirror-godot-app/addons/mirror_internal/env_configs/temp.cfg deleted file mode 100644 index 898f2d59..00000000 --- a/mirror-godot-app/addons/mirror_internal/env_configs/temp.cfg +++ /dev/null @@ -1,47 +0,0 @@ -[feature_flags] -preview=true -hardcoded_servers=false -user_api_requests=false -show_advanced_settings=true -support_pck_uploads=false -map_builder=true -os_shell=false -suicide_keybinding=true -enable_space_listing_pages=true -the-mirror-tutorials=true -always_spin_up_local_server=true -check_version_on_start=false - -[editor] -run/main_run_args="" - -[debug_flags] -show_web_socket_debug=false - -[app_protocol] -enable_app_protocol=true -protocol_name="themirror" -socket_name=".themirror-prod.socket" - -[firebase] -environment_variables/apiKey="AIzaSyAyBah16MgNRJstmFE2BHWkgg-n-xXEWVk" -environment_variables/authDomain="the-mirror-backend-dev.firebaseapp.com" -environment_variables/projectId="the-mirror-backend-dev" -environment_variables/clientId="347945626382-04e3nul0h036h1cbqpdometn98q0kiu4.apps.googleusercontent.com" -environment_variables/cacheLocation="user://mirror.firebase_cache" - -[mirror_secrets] -WSS_SECRET="" - -[mirror] -env_name="dev" -auto_updater_bucket_uri="https://storage.googleapis.com/mirror_native_client_builds_prod/AutoUpdater" -integration_test_ids={} -base_url="https://dev-in.themirror.space" -connection_server="https://dev-api.themirror.space" -connection_server_ws="wss://dev-api.themirror.space" -landing_page_url="https://themirror.space" -posthog_api_key="phc_Gz7EZCoYouVnwEFCX1XKPHU4vHi0FTia5gUVKWQtPy1" -mixpanel_api_key="c5e82051367277731c1b1cf0d46d9d57" -asset_bucket="" -zone_server_port=27015 diff --git a/mirror-godot-app/creator/selection/inspector/categories/inspector_category_toggle_button.gd b/mirror-godot-app/creator/selection/inspector/categories/inspector_category_toggle_button.gd index 4764dd90..b2ebc55c 100644 --- a/mirror-godot-app/creator/selection/inspector/categories/inspector_category_toggle_button.gd +++ b/mirror-godot-app/creator/selection/inspector/categories/inspector_category_toggle_button.gd @@ -6,6 +6,10 @@ signal inspector_category_visibility_changed(new_visibility: bool) @export var expand_speed: float = 10.0 @export var properties: Node +## The text to show as a tooltip when hovering. +## Use this instead of Godot's tooltip_text property. +@export var hover_tooltip_text: String = "" + var _is_category_visible: bool = false var _properties_child: Control var _plus_texture: TextureRect @@ -55,3 +59,17 @@ func set_category_visible(new_is_visible): func _on_toggle_button_pressed(): set_category_visible(not _is_category_visible) + + +func _on_hoverable_button_mouse_entered() -> void: + if hover_tooltip_text == "": + return + GameUI.set_hover_tooltip_text(hover_tooltip_text) + + +func _on_hoverable_button_mouse_exited() -> void: + GameUI.hide_hover_tooltip_text() + + +func _on_hoverable_button_pressed() -> void: + GameUI.hide_hover_tooltip_text() diff --git a/mirror-godot-app/creator/selection/inspector/inspector.gd b/mirror-godot-app/creator/selection/inspector/inspector.gd index 39d73274..0e1b2bcc 100644 --- a/mirror-godot-app/creator/selection/inspector/inspector.gd +++ b/mirror-godot-app/creator/selection/inspector/inspector.gd @@ -15,6 +15,7 @@ const _ENVIRONMENT_CATEGORY = preload("res://creator/selection/inspector/categor const _LIGHT_CATEGORY = preload("res://creator/selection/inspector/categories/inspector_light.tscn") const _PHYSICS_CATEGORY = preload("res://creator/selection/inspector/categories/inspector_physics.tscn") const _VISIBILITY_CATEGORY = preload("res://creator/selection/inspector/categories/inspector_visibility.tscn") +const _SCRIPT_OBJECT_VARS_CATEGORY = preload("res://creator/selection/inspector/script/inspector_script_object_vars.tscn") const _SCRIPT_INSTANCE_CATEGORY = preload("res://creator/selection/inspector/script/inspector_script_instance.tscn") const _MODEL_NODES_CATEGORY = preload("res://creator/selection/inspector/nodes/inspector_model_nodes.tscn") const _EXTRA_NODE_CATEGORY = preload("res://creator/selection/inspector/nodes/inspector_extra_node.tscn") @@ -43,6 +44,7 @@ var _deletion_target_category: InspectorCategoryBase @onready var _categories: VBoxContainer = _tab_cont.get_node(^"Properties/MarginContainer/Categories") @onready var _script_main_vbox: VBoxContainer = _tab_cont.get_node(^"Scripting/MarginContainer/VBoxContainer") +@onready var _script_obj_vars: Control = _script_main_vbox.get_node(^"ScriptObjectVars") @onready var _script_instances: VBoxContainer = _script_main_vbox.get_node(^"ScriptInstances") @onready var _script_add_button: Button = _script_main_vbox.get_node(^"AddScriptButton") @onready var _model_nodes_main_vbox: VBoxContainer = _tab_cont.get_node(^"Nodes/MarginContainer/VBoxContainer") @@ -189,6 +191,7 @@ func inspect_nodes(new_nodes: Array[Node], force_rebuild: bool = false) -> void: # The first step is to delete old categories if they exist. _remove_old_category_children(_categories) _remove_old_category_children(_script_instances) + _remove_old_category_children(_script_obj_vars) _remove_old_category_children(_model_nodes) # Update a few misc things. _button_sound.refresh() @@ -278,6 +281,7 @@ func _setup_new_categories(target_nodes: Array[Node]) -> void: prim_model_cat.request_convert_to_local.connect(_on_request_convert_prim_model_to_local.bind(target_node)) target_node.scripts_changed.connect(_on_scripts_changed) _setup_script_instances(target_node) + _setup_script_obj_vars(target_node) _script_main_vbox.show() _tab_cont.tabs_visible = true _setup_extra_model_nodes(target_node) @@ -287,6 +291,7 @@ func _setup_new_categories(target_nodes: Array[Node]) -> void: _tab_cont.current_tab = 1 target_node.scripts_changed.connect(_on_scripts_changed) _setup_script_instances(target_node) + _setup_script_obj_vars(target_node) _script_main_vbox.show() else: _tab_cont.current_tab = 0 @@ -390,6 +395,28 @@ func _setup_script_instances(space_object_or_global_scripts: Node) -> void: _setup_script_instance(script_instance) +func _setup_script_obj_vars(space_object_or_global_scripts: Node) -> void: + # Set up script object variables inspector, if it has any. + var object_variables: Dictionary + if space_object_or_global_scripts.has_meta(&"MirrorScriptObjectVariables"): + object_variables = space_object_or_global_scripts.get_meta(&"MirrorScriptObjectVariables") + if object_variables.is_empty(): + if not _is_any_script_instance_gdscript(space_object_or_global_scripts): + return + var obj_var_cat = _SCRIPT_OBJECT_VARS_CATEGORY.instantiate() + obj_var_cat.setup(space_object_or_global_scripts, Util.can_local_user_edit_scripts()) + _script_obj_vars.add_child(obj_var_cat) + obj_var_cat.setup_object_vars(object_variables) + + +func _is_any_script_instance_gdscript(space_object_or_global_scripts: Node) -> bool: + var script_instances: Array[ScriptInstance] = space_object_or_global_scripts.get_script_instances() + for script_inst in script_instances: + if script_inst is GDScriptInstance: + return true + return false + + func _setup_script_instance(script_instance: ScriptInstance) -> void: var cat: InspectorCategoryBase = _setup_category(script_instance.target_node, _SCRIPT_INSTANCE_CATEGORY, "", _script_instances) cat.setup(script_instance) diff --git a/mirror-godot-app/creator/selection/inspector/inspector.tscn b/mirror-godot-app/creator/selection/inspector/inspector.tscn index 4088a5ca..f111fc80 100644 --- a/mirror-godot-app/creator/selection/inspector/inspector.tscn +++ b/mirror-godot-app/creator/selection/inspector/inspector.tscn @@ -92,6 +92,11 @@ metadata/_edit_layout_mode = 1 [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/TabContainer/Scripting/MarginContainer"] layout_mode = 2 +[node name="ScriptObjectVars" type="MarginContainer" parent="VBoxContainer/TabContainer/Scripting/MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_bottom = 8 + [node name="ScriptInstances" type="VBoxContainer" parent="VBoxContainer/TabContainer/Scripting/MarginContainer/VBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 diff --git a/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.gd b/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.gd index 84eade0f..8c244112 100644 --- a/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.gd +++ b/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.gd @@ -56,11 +56,8 @@ func _setup_parameter(parameter_name: String, parameter_data: Array) -> void: func _on_parameter_changed(value, which: Control) -> void: - var parameters_for_entry: Dictionary = _target_script_instance.entry_parameters[_entry_id] - var param_name = which.label_text - var param_data = parameters_for_entry[param_name] - param_data[1] = value - _target_script_instance.apply_inspector_parameter_values() + var param_name: String = which.label_text + _target_script_instance.set_inspector_parameter_input_value(_entry_id, param_name, value) _target_script_instance.script_instance_changed() @@ -69,12 +66,7 @@ func _on_toggle_button_inspector_category_visibility_changed(new_visibility: boo func _on_create_parameter(parameter_port_array: Array) -> void: - for entry_block in _target_script_instance.script_builder.entry_blocks: - if entry_block.entry_id == _entry_id: - entry_block.parameters.create_inspector_parameter(parameter_port_array) - entry_block.reset_entry_output_ports() - break - _target_script_instance.sync_script_inst_params_with_script_data() + _target_script_instance.create_inspector_parameter_input(_entry_id, parameter_port_array) _target_script_instance.script_data_contents_changed() refresh_inspected_nodes.emit() diff --git a/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.tscn b/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.tscn index c4c38d3e..b7743cad 100644 --- a/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.tscn +++ b/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.tscn @@ -7,6 +7,9 @@ [node name="InspectorScriptEntryInputs" instance=ExtResource("1_amxtn")] script = ExtResource("2_adill") +[node name="ToggleButton" parent="CategoryTitle" index="0" node_paths=PackedStringArray("properties")] +properties = NodePath("../../Properties") + [node name="Text" parent="CategoryTitle/ToggleButton/Name" index="3"] text = "" diff --git a/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.gd b/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.gd new file mode 100644 index 00000000..f69376fe --- /dev/null +++ b/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.gd @@ -0,0 +1,72 @@ +extends InspectorCategoryBase + + +const _TRASH_BUTTON = preload("res://creator/selection/inspector/script/entry_input_trash_button.tscn") + +var target_node: Node # SpaceObject or SpaceGlobalScripts +var _is_editable: bool = false +var _object_vars: Dictionary +var _property_list: Control + + +## Must run before _ready() +func setup(target_object: Node, is_editable: bool) -> void: + target_node = target_object + _property_list = $Properties/MarginContainer/PropertyList + _is_editable = is_editable + + +func setup_object_vars(object_vars: Dictionary) -> void: + _object_vars = object_vars + for obj_var_name in _object_vars: + _setup_object_var(obj_var_name, _object_vars[obj_var_name]) + if _property_list.get_child_count() < 5: + if _property_list.get_child_count() != 0: + $CategoryTitle/ToggleButton.hover_tooltip_text = "" + set_visible_to_maximum_size() + + +func _setup_object_var(obj_var_name: String, obj_var_value: Variant) -> void: + var obj_var_type: int = typeof(obj_var_value) + if obj_var_type == TYPE_NIL or not obj_var_type in ScriptParameterCreationMenu.INSPECTOR_PRIMITIVE_SCENES: + return + var obj_var_scene = ScriptParameterCreationMenu.INSPECTOR_PRIMITIVE_SCENES[obj_var_type].instantiate() + obj_var_scene.label_text = obj_var_name + obj_var_scene.reset_value = Serialization.type_convert_any(_get_default_value_of_obj_var(obj_var_name), obj_var_type) + # Be careful, the order matters here! Value editors with setters + # that use onready vars can only be used after adding as a child, + # and then we need to refresh if a refresh method exists. + _property_list.add_child(obj_var_scene) + obj_var_scene.current_value = obj_var_value + if obj_var_scene.has_method(&"refresh"): + obj_var_scene.refresh() + obj_var_scene.value_changed.connect(_on_object_var_changed.bind(obj_var_scene)) + if _is_editable and GameplaySettings.script_show_add_inspector_input: + var trash_button: Node = _TRASH_BUTTON.instantiate() + obj_var_scene.add_child(trash_button) + trash_button.pressed.connect(_on_delete_object_var.bind(obj_var_name)) + + +func _on_object_var_changed(value, which: Control) -> void: + var obj_var_name: String = which.label_text + Zone.script_network_sync.set_variable_on_node(target_node, obj_var_name, value) + + +func _on_delete_object_var(obj_var_name: String) -> void: + Zone.script_network_sync.set_variable_on_node(target_node, obj_var_name, null) + for child in _property_list.get_children(): + child.cleanup_and_delete() + _property_list.remove_child(child) + var vars = target_node.get_meta(&"MirrorScriptObjectVariables") + vars.erase(obj_var_name) + setup_object_vars(vars) + + +func _get_default_value_of_obj_var(obj_var_name: String) -> Variant: + var script_instances: Array[ScriptInstance] = target_node.get_script_instances() + for script_inst in script_instances: + if script_inst.has_method(&"get_default_value_of_exposed_variable"): + var def = script_inst.get_default_value_of_exposed_variable(obj_var_name) + if def != null: + return def + return null diff --git a/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.tscn b/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.tscn new file mode 100644 index 00000000..fcad62ff --- /dev/null +++ b/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=3 format=3 uid="uid://bhbojmr3nuwrc"] + +[ext_resource type="PackedScene" uid="uid://dkxqj3l0xm8uw" path="res://creator/selection/inspector/categories/inspector_category_base.tscn" id="1_ov2tq"] +[ext_resource type="Script" path="res://creator/selection/inspector/script/inspector_script_object_vars.gd" id="2_abj1i"] + +[node name="InspectorScriptObjectVars" instance=ExtResource("1_ov2tq")] +script = ExtResource("2_abj1i") + +[node name="ToggleButton" parent="CategoryTitle" index="0" node_paths=PackedStringArray("properties")] +properties = NodePath("../../Properties") +hover_tooltip_text = "Use @export in GDScript" + +[node name="Text" parent="CategoryTitle/ToggleButton/Name" index="3"] +text = "OBJECT VARIABLES" + +[connection signal="mouse_entered" from="CategoryTitle/ToggleButton" to="CategoryTitle/ToggleButton" method="_on_hoverable_button_mouse_entered"] +[connection signal="mouse_exited" from="CategoryTitle/ToggleButton" to="CategoryTitle/ToggleButton" method="_on_hoverable_button_mouse_exited"] +[connection signal="pressed" from="CategoryTitle/ToggleButton" to="CategoryTitle/ToggleButton" method="_on_hoverable_button_pressed"] diff --git a/mirror-godot-app/dummy.md b/mirror-godot-app/dummy.md index 0f785285..3d6ab607 100644 --- a/mirror-godot-app/dummy.md +++ b/mirror-godot-app/dummy.md @@ -1,2 +1 @@ -this file is used to force a rebuild in github actions -. +this file is used to force a rebuild in github actions.. diff --git a/mirror-godot-app/gameplay/space_object/placeholder/error/error_recreation.gltf.import b/mirror-godot-app/gameplay/space_object/placeholder/error/error_recreation.gltf.import index 57f2aca9..38fe88bb 100644 --- a/mirror-godot-app/gameplay/space_object/placeholder/error/error_recreation.gltf.import +++ b/mirror-godot-app/gameplay/space_object/placeholder/error/error_recreation.gltf.import @@ -29,6 +29,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "materials": { diff --git a/mirror-godot-app/player/animations/humanoid/humanoid_animations.glb.import b/mirror-godot-app/player/animations/humanoid/humanoid_animations.glb.import index 3eff7127..0077ffea 100644 --- a/mirror-godot-app/player/animations/humanoid/humanoid_animations.glb.import +++ b/mirror-godot-app/player/animations/humanoid/humanoid_animations.glb.import @@ -29,6 +29,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "animations": { diff --git a/mirror-godot-app/player/animations/humanoid/rifle_hip_running_forward.tres b/mirror-godot-app/player/animations/humanoid/rifle_hip_running_forward.tres index 9852a789..054d710e 100644 --- a/mirror-godot-app/player/animations/humanoid/rifle_hip_running_forward.tres +++ b/mirror-godot-app/player/animations/humanoid/rifle_hip_running_forward.tres @@ -346,7 +346,7 @@ tracks/48/enabled = true tracks/48/path = NodePath("Armature/Skeleton3D:LeftToeBase") tracks/48/interp = 1 tracks/48/loop_wrap = true -tracks/48/keys = PackedFloat32Array(0, 1, 0.377063, -0.0928583, -0.00260248, 0.921517, 0.0333333, 1, 0.377063, -0.0928583, -0.00260248, 0.921517, 0.0666667, 1, 0.326463, -0.0769484, 0.00502321, 0.942059, 0.1, 1, 0.248203, -0.0788253, 0.00231859, 0.965493, 0.133333, 1, 0.232453, -0.0972994, -0.00598173, 0.96771, 0.166667, 1, 0.222252, -0.16507, -0.0268306, 0.96054, 0.2, 1, 0.287049, -0.168713, -0.024834, 0.942614, 0.233333, 1, 0.296801, -0.114995, -0.00493449, 0.947977, 0.266667, 1, 0.282065, -0.0713982, 0.00544318, 0.95672, 0.366667, 1, 0.282097, -0.0713935, 0.00544969, 0.95671, 0.4, 1, 0.581845, 0.00720247, 0.0756187, 0.809745, 0.433333, 1, 0.449409, -0.034424, 0.0561659, 0.890894, 0.466667, 1, 0.282023, -0.0975051, -0.00318849, 0.954435, 0.5, 1, 0.274092, -0.0981293, -0.00288162, 0.95668, 0.533333, 1, 0.377064, -0.0928584, -0.00260233, 0.921517) +tracks/48/keys = PackedFloat32Array(0, 1, 0.377063, -0.0928583, -0.00260248, 0.921517, 0.0333333, 1, 0.377063, -0.0928583, -0.00260248, 0.921517, 0.0666667, 1, 0.326463, -0.0769484, 0.00502321, 0.942059, 0.1, 1, 0.248203, -0.0788253, 0.00231859, 0.965493, 0.133333, 1, 0.232453, -0.0972994, -0.00598173, 0.96771, 0.166667, 1, 0.222252, -0.16507, -0.0268306, 0.96054, 0.2, 1, 0.287049, -0.168713, -0.024834, 0.942614, 0.233333, 1, 0.296801, -0.114995, -0.00493449, 0.947977, 0.266667, 1, 0.282065, -0.0713982, 0.00544318, 0.95672, 0.366667, 1, 0.282097, -0.0713935, 0.00544969, 0.95671, 0.4, 1, 0.581845, 0.00720247, 0.0756187, 0.809745, 0.433333, 1, 0.44941, -0.034424, 0.0561659, 0.890894, 0.466667, 1, 0.282023, -0.0975051, -0.00318849, 0.954435, 0.5, 1, 0.274092, -0.0981293, -0.00288162, 0.95668, 0.533333, 1, 0.377064, -0.0928584, -0.00260233, 0.921517) tracks/49/type = "rotation_3d" tracks/49/imported = true tracks/49/enabled = true diff --git a/mirror-godot-app/player/animations/humanoid/running_forward.tres b/mirror-godot-app/player/animations/humanoid/running_forward.tres index 89e6f707..e03d8457 100644 --- a/mirror-godot-app/player/animations/humanoid/running_forward.tres +++ b/mirror-godot-app/player/animations/humanoid/running_forward.tres @@ -98,283 +98,283 @@ tracks/12/keys = PackedFloat32Array(0, 1, 0.0201837, -0.0870503, -0.153598, 0.98 tracks/13/type = "rotation_3d" tracks/13/imported = true tracks/13/enabled = true -tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandIndex1") +tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandThumb3") tracks/13/interp = 1 tracks/13/loop_wrap = true -tracks/13/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213445, 0.0975406, 0.728636, 0.0333333, 1, 0.677916, -0.00213445, 0.0975406, 0.728636, 0.0666667, 1, 0.668375, -0.00325838, 0.0968561, 0.737484, 0.1, 1, 0.645165, -0.00593606, 0.0951567, 0.758072, 0.133333, 1, 0.616642, -0.00912461, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.0117859, 0.0911071, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.011831, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106599, 0.091923, 0.792691, 0.333333, 1, 0.615871, -0.00920907, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758916, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.00591056, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428558, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282618, 0.097121, 0.734095, 0.5, 1, 0.682034, -0.00164536, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854097, 0.0982995, 0.718411, 0.566667, 1, 0.691031, -0.000566358, 0.0984679, 0.716086, 0.6, 1, 0.689678, -0.0007297, 0.0983731, 0.717403, 0.633333, 1, 0.686441, -0.00111848, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158245, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197134, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212436, 0.0975591, 0.728636) +tracks/13/keys = PackedFloat32Array(0, 1, 0.00975411, -0.0248017, -0.0847951, 0.996042) tracks/14/type = "rotation_3d" tracks/14/imported = true tracks/14/enabled = true -tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex2") +tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex1") tracks/14/interp = 1 tracks/14/loop_wrap = true -tracks/14/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141415, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134934, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.012701, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120243, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607543, -0.0120133, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123132, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126804, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.0145269, 0.0478793, 0.715218, 0.533333, 1, 0.70364, -0.0147135, 0.0482917, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484411, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483572, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476247, 0.719188) +tracks/14/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213445, 0.0975406, 0.728636, 0.0333333, 1, 0.677916, -0.00213445, 0.0975406, 0.728636, 0.0666667, 1, 0.668375, -0.00325838, 0.0968561, 0.737484, 0.1, 1, 0.645165, -0.00593606, 0.0951567, 0.758072, 0.133333, 1, 0.616642, -0.00912461, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.0117859, 0.0911071, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.011831, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106599, 0.091923, 0.792691, 0.333333, 1, 0.615871, -0.00920907, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758916, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.00591056, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428558, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282618, 0.097121, 0.734095, 0.5, 1, 0.682034, -0.00164536, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854097, 0.0982995, 0.718411, 0.566667, 1, 0.691031, -0.000566358, 0.0984679, 0.716086, 0.6, 1, 0.689678, -0.0007297, 0.0983731, 0.717403, 0.633333, 1, 0.686441, -0.00111848, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158245, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197134, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212436, 0.0975591, 0.728636) tracks/15/type = "rotation_3d" tracks/15/imported = true tracks/15/enabled = true -tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex3") +tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex2") tracks/15/interp = 1 tracks/15/loop_wrap = true -tracks/15/keys = PackedFloat32Array(0, 1, 0.0389577, -0.0293203, -0.0349865, 0.998198) +tracks/15/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141415, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134934, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.012701, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120243, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607543, -0.0120133, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123132, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126804, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.0145269, 0.0478793, 0.715218, 0.533333, 1, 0.70364, -0.0147135, 0.0482917, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484411, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483572, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476247, 0.719188) tracks/16/type = "rotation_3d" tracks/16/imported = true tracks/16/enabled = true -tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1") +tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandIndex3") tracks/16/interp = 1 tracks/16/loop_wrap = true -tracks/16/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0333333, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0666667, 1, 0.680739, -0.0199365, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.022005, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605308, -0.026465, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.0865641, 0.798629, 0.233333, 1, 0.597608, -0.0270893, 0.0867705, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873315, 0.791062, 0.3, 1, 0.615675, -0.0256129, 0.0881563, 0.782635, 0.333333, 1, 0.628846, -0.0245103, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232735, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219854, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207322, 0.09233, 0.734455, 0.466667, 1, 0.684377, -0.0196011, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939048, 0.713364, 0.533333, 1, 0.700741, -0.018076, 0.0943368, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179754, 0.0943985, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936787, 0.717322) +tracks/16/keys = PackedFloat32Array(0, 1, 0.0389577, -0.0293203, -0.0349865, 0.998198) tracks/17/type = "rotation_3d" tracks/17/imported = true tracks/17/enabled = true -tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2") +tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1") tracks/17/interp = 1 tracks/17/loop_wrap = true -tracks/17/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302838, 0.0589128, 0.752497, 0.0333333, 1, 0.655949, 0.00302838, 0.0589128, 0.752497, 0.0666667, 1, 0.646075, 0.00345845, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448306, 0.056673, 0.780881, 0.133333, 1, 0.592669, 0.00570131, 0.0547033, 0.803566, 0.166667, 1, 0.567386, 0.00671554, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713889, 0.0522624, 0.829092, 0.233333, 1, 0.559389, 0.00702995, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.00673206, 0.052965, 0.822018, 0.3, 1, 0.578165, 0.00628572, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573274, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.00511419, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447227, 0.0566867, 0.780691, 0.433333, 1, 0.636957, 0.00385015, 0.0576579, 0.768731, 0.466667, 1, 0.64989, 0.00329124, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283821, 0.0591901, 0.748736, 0.533333, 1, 0.667055, 0.00253435, 0.0596372, 0.742613, 0.566667, 1, 0.669536, 0.00241661, 0.059788, 0.740365, 0.6, 1, 0.668133, 0.002483, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594902, 0.744663, 0.666667, 1, 0.660757, 0.00281639, 0.0592285, 0.748255, 0.7, 1, 0.657371, 0.00297577, 0.059023, 0.751246, 0.733333, 1, 0.655947, 0.00303646, 0.0589525, 0.752496) +tracks/17/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0333333, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0666667, 1, 0.680739, -0.0199365, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.022005, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605308, -0.026465, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.0865641, 0.798629, 0.233333, 1, 0.597608, -0.0270893, 0.0867705, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873315, 0.791062, 0.3, 1, 0.615675, -0.0256129, 0.0881563, 0.782635, 0.333333, 1, 0.628846, -0.0245103, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232735, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219854, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207322, 0.09233, 0.734455, 0.466667, 1, 0.684377, -0.0196011, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939048, 0.713364, 0.533333, 1, 0.700741, -0.018076, 0.0943368, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179754, 0.0943985, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936787, 0.717322) tracks/18/type = "rotation_3d" tracks/18/imported = true tracks/18/enabled = true -tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3") +tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2") tracks/18/interp = 1 tracks/18/loop_wrap = true -tracks/18/keys = PackedFloat32Array(0, 1, 0.0297256, 0.00421691, -0.00652392, 0.999528) +tracks/18/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302838, 0.0589128, 0.752497, 0.0333333, 1, 0.655949, 0.00302838, 0.0589128, 0.752497, 0.0666667, 1, 0.646075, 0.00345845, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448306, 0.056673, 0.780881, 0.133333, 1, 0.592669, 0.00570131, 0.0547033, 0.803566, 0.166667, 1, 0.567386, 0.00671554, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713889, 0.0522624, 0.829092, 0.233333, 1, 0.559389, 0.00702995, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.00673206, 0.052965, 0.822018, 0.3, 1, 0.578165, 0.00628572, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573274, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.00511419, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447227, 0.0566867, 0.780691, 0.433333, 1, 0.636957, 0.00385015, 0.0576579, 0.768731, 0.466667, 1, 0.64989, 0.00329124, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283821, 0.0591901, 0.748736, 0.533333, 1, 0.667055, 0.00253435, 0.0596372, 0.742613, 0.566667, 1, 0.669536, 0.00241661, 0.059788, 0.740365, 0.6, 1, 0.668133, 0.002483, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594902, 0.744663, 0.666667, 1, 0.660757, 0.00281639, 0.0592285, 0.748255, 0.7, 1, 0.657371, 0.00297577, 0.059023, 0.751246, 0.733333, 1, 0.655947, 0.00303646, 0.0589525, 0.752496) tracks/19/type = "rotation_3d" tracks/19/imported = true tracks/19/enabled = true -tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandRing1") +tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3") tracks/19/interp = 1 tracks/19/loop_wrap = true -tracks/19/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796063, 0.0652599, 0.687701, 0.0333333, 1, 0.718659, -0.0796063, 0.0652599, 0.687701, 0.0666667, 1, 0.709595, -0.0794686, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635253, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619846, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776573, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601923, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.0606041, 0.765113, 0.3, 1, 0.64674, -0.0781691, 0.0612097, 0.756221, 0.333333, 1, 0.659494, -0.0784708, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649394, 0.693506, 0.5, 1, 0.722568, -0.0796734, 0.0654539, 0.683567, 0.533333, 1, 0.728831, -0.0797539, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659433, 0.674375, 0.6, 1, 0.729817, -0.0797677, 0.065865, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656797, 0.679091, 0.666667, 1, 0.723068, -0.079692, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796548, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.0651749, 0.687702) +tracks/19/keys = PackedFloat32Array(0, 1, 0.0297256, 0.00421691, -0.00652392, 0.999528) tracks/20/type = "rotation_3d" tracks/20/imported = true tracks/20/enabled = true -tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing2") +tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing1") tracks/20/interp = 1 tracks/20/loop_wrap = true -tracks/20/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546983, -0.000231745, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231745, 0.751472, 0.0666667, 1, 0.647621, -0.0541725, -0.000275225, 0.760034, 0.1, 1, 0.623635, -0.052881, -0.000379407, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503362, 0.80267, 0.166667, 1, 0.56893, -0.0498674, -0.000606372, 0.820872, 0.2, 1, 0.558161, -0.0492646, -0.000649479, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.000638456, 0.826386, 0.266667, 1, 0.568497, -0.049844, -0.000608313, 0.821174, 0.3, 1, 0.579711, -0.0504687, -0.000563078, 0.813258, 0.333333, 1, 0.593422, -0.0512281, -0.000507881, 0.80326, 0.366667, 1, 0.608502, -0.0520573, -0.000445204, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380412, 0.779735, 0.433333, 1, 0.638503, -0.053686, -0.00031773, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.00026133, 0.756753, 0.5, 1, 0.661759, -0.0549277, -0.00021563, 0.747702, 0.533333, 1, 0.668599, -0.05529, -0.000185364, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158812, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173667, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193939, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212513, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.000241535, 0.750218, 0.733333, 1, 0.657494, -0.0547048, -0.000268102, 0.751471) +tracks/20/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796063, 0.0652599, 0.687701, 0.0333333, 1, 0.718659, -0.0796063, 0.0652599, 0.687701, 0.0666667, 1, 0.709595, -0.0794686, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635253, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619846, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776573, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601923, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.0606041, 0.765113, 0.3, 1, 0.64674, -0.0781691, 0.0612097, 0.756221, 0.333333, 1, 0.659494, -0.0784708, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649394, 0.693506, 0.5, 1, 0.722568, -0.0796734, 0.0654539, 0.683567, 0.533333, 1, 0.728831, -0.0797539, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659433, 0.674375, 0.6, 1, 0.729817, -0.0797677, 0.065865, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656797, 0.679091, 0.666667, 1, 0.723068, -0.079692, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796548, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.0651749, 0.687702) tracks/21/type = "rotation_3d" tracks/21/imported = true tracks/21/enabled = true -tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandPinky1") +tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandRing2") tracks/21/interp = 1 tracks/21/loop_wrap = true -tracks/21/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.0080568, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.0080568, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764208, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.0066467, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545057, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444291, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401893, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.0041275, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.00442539, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487034, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.0054186, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602794, 0.72551, 0.4, 1, 0.689633, -0.132154, 0.00665622, 0.711968, 0.433333, 1, 0.703025, -0.13282, 0.00726134, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.00780151, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.0082368, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852743, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864417, 0.667161, 0.6, 1, 0.73141, -0.134106, 0.00857979, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.00843094, 0.671908, 0.666667, 1, 0.724714, -0.133821, 0.00825947, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.00809934, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802203, 0.680574) +tracks/21/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546983, -0.000231745, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231745, 0.751472, 0.0666667, 1, 0.647621, -0.0541725, -0.000275225, 0.760034, 0.1, 1, 0.623635, -0.052881, -0.000379407, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503362, 0.80267, 0.166667, 1, 0.56893, -0.0498674, -0.000606372, 0.820872, 0.2, 1, 0.558161, -0.0492646, -0.000649479, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.000638456, 0.826386, 0.266667, 1, 0.568497, -0.049844, -0.000608313, 0.821174, 0.3, 1, 0.579711, -0.0504687, -0.000563078, 0.813258, 0.333333, 1, 0.593422, -0.0512281, -0.000507881, 0.80326, 0.366667, 1, 0.608502, -0.0520573, -0.000445204, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380412, 0.779735, 0.433333, 1, 0.638503, -0.053686, -0.00031773, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.00026133, 0.756753, 0.5, 1, 0.661759, -0.0549277, -0.00021563, 0.747702, 0.533333, 1, 0.668599, -0.05529, -0.000185364, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158812, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173667, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193939, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212513, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.000241535, 0.750218, 0.733333, 1, 0.657494, -0.0547048, -0.000268102, 0.751471) tracks/22/type = "rotation_3d" tracks/22/imported = true tracks/22/enabled = true -tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandPinky2") +tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandRing3") tracks/22/interp = 1 tracks/22/loop_wrap = true -tracks/22/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421751, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.0083839, 0.718324, 0.133333, 1, 0.667381, -0.0392577, -0.0055858, 0.74366, 0.166667, 1, 0.643982, -0.0378659, -0.00323499, 0.764096, 0.2, 1, 0.633982, -0.0372713, -0.00224833, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250133, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319558, 0.764436, 0.3, 1, 0.653972, -0.0384611, -0.00423233, 0.755528, 0.333333, 1, 0.666648, -0.0392155, -0.00551256, 0.74432, 0.366667, 1, 0.680551, -0.0400428, -0.00693741, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840883, 0.718113, 0.433333, 1, 0.708075, -0.041682, -0.00982833, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121246, 0.682757, 0.533333, 1, 0.735496, -0.0433153, -0.0128098, 0.676022, 0.566667, 1, 0.737746, -0.0434489, -0.013059, 0.673552, 0.6, 1, 0.736474, -0.0433726, -0.0129176, 0.67495, 0.633333, 1, 0.733429, -0.0431906, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.0429719, -0.0121767, 0.682227, 0.7, 1, 0.726697, -0.0427878, -0.0118384, 0.685522, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901) +tracks/22/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578866, 0.00189617, 0.999218) tracks/23/type = "rotation_3d" tracks/23/imported = true tracks/23/enabled = true -tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky3") +tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky1") tracks/23/interp = 1 tracks/23/loop_wrap = true -tracks/23/keys = PackedFloat32Array(0, 1, 0.0255861, 0.0174793, -0.0251264, 0.999204) +tracks/23/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.0080568, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.0080568, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764208, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.0066467, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545057, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444291, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401893, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.0041275, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.00442539, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487034, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.0054186, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602794, 0.72551, 0.4, 1, 0.689633, -0.132154, 0.00665622, 0.711968, 0.433333, 1, 0.703025, -0.13282, 0.00726134, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.00780151, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.0082368, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852743, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864417, 0.667161, 0.6, 1, 0.73141, -0.134106, 0.00857979, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.00843094, 0.671908, 0.666667, 1, 0.724714, -0.133821, 0.00825947, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.00809934, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802203, 0.680574) tracks/24/type = "rotation_3d" tracks/24/imported = true tracks/24/enabled = true -tracks/24/path = NodePath("Armature/Skeleton3D:RightShoulder") +tracks/24/path = NodePath("Armature/Skeleton3D:LeftHandPinky2") tracks/24/interp = 1 tracks/24/loop_wrap = true -tracks/24/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.3, 1, 0.573839, -0.42871, 0.515092, 0.470741, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529407, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.510679, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.46325) +tracks/24/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421751, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.0083839, 0.718324, 0.133333, 1, 0.667381, -0.0392577, -0.0055858, 0.74366, 0.166667, 1, 0.643982, -0.0378659, -0.00323499, 0.764096, 0.2, 1, 0.633982, -0.0372713, -0.00224833, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250133, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319558, 0.764436, 0.3, 1, 0.653972, -0.0384611, -0.00423233, 0.755528, 0.333333, 1, 0.666648, -0.0392155, -0.00551256, 0.74432, 0.366667, 1, 0.680551, -0.0400428, -0.00693741, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840883, 0.718113, 0.433333, 1, 0.708075, -0.041682, -0.00982833, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121246, 0.682757, 0.533333, 1, 0.735496, -0.0433153, -0.0128098, 0.676022, 0.566667, 1, 0.737746, -0.0434489, -0.013059, 0.673552, 0.6, 1, 0.736474, -0.0433726, -0.0129176, 0.67495, 0.633333, 1, 0.733429, -0.0431906, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.0429719, -0.0121767, 0.682227, 0.7, 1, 0.726697, -0.0427878, -0.0118384, 0.685522, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901) tracks/25/type = "rotation_3d" tracks/25/imported = true tracks/25/enabled = true -tracks/25/path = NodePath("Armature/Skeleton3D:RightArm") +tracks/25/path = NodePath("Armature/Skeleton3D:LeftHandPinky3") tracks/25/interp = 1 tracks/25/loop_wrap = true -tracks/25/keys = PackedFloat32Array(0, 1, 0.422188, -0.031471, 0.163243, 0.891133, 0.0333333, 1, 0.422188, -0.031471, 0.163243, 0.891133, 0.0666667, 1, 0.427513, -0.00279769, 0.108356, 0.897487, 0.1, 1, 0.429059, 0.00546337, 0.101401, 0.89755, 0.133333, 1, 0.426473, 0.008892, 0.0903984, 0.899928, 0.166667, 1, 0.418822, 0.00709637, 0.083521, 0.904191, 0.2, 1, 0.417157, -0.00320663, 0.0763514, 0.905616, 0.233333, 1, 0.41866, -0.0169338, 0.090743, 0.903439, 0.266667, 1, 0.427545, -0.036799, 0.142719, 0.891898, 0.3, 1, 0.438923, -0.05515, 0.183185, 0.877923, 0.333333, 1, 0.451789, -0.0681821, 0.201016, 0.866505, 0.366667, 1, 0.4415, -0.0781936, 0.229303, 0.863935, 0.4, 1, 0.40906, -0.0924556, 0.27506, 0.865138, 0.433333, 1, 0.357862, -0.108799, 0.341268, 0.862342, 0.466667, 1, 0.314828, -0.119529, 0.389537, 0.857238, 0.5, 1, 0.300559, -0.12412, 0.409703, 0.852292, 0.533333, 1, 0.316447, -0.129081, 0.424531, 0.838435, 0.566667, 1, 0.332561, -0.132523, 0.425279, 0.831251, 0.6, 1, 0.342502, -0.128735, 0.396226, 0.842095, 0.633333, 1, 0.355165, -0.11594, 0.34546, 0.860856, 0.666667, 1, 0.382218, -0.0904308, 0.275432, 0.877422, 0.7, 1, 0.408778, -0.055095, 0.196791, 0.88946, 0.733333, 1, 0.422189, -0.031471, 0.163243, 0.891133) +tracks/25/keys = PackedFloat32Array(0, 1, 0.0255861, 0.0174793, -0.0251264, 0.999204) tracks/26/type = "rotation_3d" tracks/26/imported = true tracks/26/enabled = true -tracks/26/path = NodePath("Armature/Skeleton3D:RightForeArm") +tracks/26/path = NodePath("Armature/Skeleton3D:RightShoulder") tracks/26/interp = 1 tracks/26/loop_wrap = true -tracks/26/keys = PackedFloat32Array(0, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0666667, 1, 0.0246688, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429585, -0.0179811, -0.775661, 0.629429, 0.133333, 1, 0.0578759, -0.00440463, -0.800882, 0.596003, 0.166667, 1, 0.0534108, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615824, -0.0253127, -0.822496, 0.56486, 0.233333, 1, 0.0676034, -0.0287049, -0.819344, 0.568579, 0.266667, 1, 0.0616387, -0.03676, -0.81292, 0.577937, 0.3, 1, 0.0559945, -0.042949, -0.783491, 0.617384, 0.333333, 1, 0.0471892, -0.0634443, -0.714013, 0.695653, 0.366667, 1, 0.0510632, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617364, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788548, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740618, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.707619, 0.69443, 0.633333, 1, 0.0458404, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371625, -0.0765627, -0.704687, 0.704396, 0.733333, 1, 0.0274294, -0.0572102, -0.730987, 0.679435) +tracks/26/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.3, 1, 0.573839, -0.42871, 0.515092, 0.470741, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529407, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.510679, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.46325) tracks/27/type = "rotation_3d" tracks/27/imported = true tracks/27/enabled = true -tracks/27/path = NodePath("Armature/Skeleton3D:RightHand") +tracks/27/path = NodePath("Armature/Skeleton3D:RightArm") tracks/27/interp = 1 tracks/27/loop_wrap = true -tracks/27/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.00376824, 0.998946, 0.1, 1, -0.0237054, 0.00266074, -0.0418228, 0.99884, 0.133333, 1, 0.00585683, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384397, 0.00889191, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344873, -0.174226, 0.983562, 0.233333, 1, 0.0482547, 0.00426751, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119574, -0.198099, 0.979611, 0.3, 1, 0.038613, -0.00596982, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.00338524, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453924, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221374, -0.145362, 0.989027, 0.433333, 1, -0.00832669, -0.00954411, -0.124422, 0.992149, 0.466667, 1, 0.00392398, 0.0021902, -0.0994934, 0.995028, 0.5, 1, 0.0116836, -0.00580875, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699735, 0.997103, 0.566667, 1, -0.00257411, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424878, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.0011541, -0.0633663, -0.0170997, 0.997843, 0.666667, 1, 0.0253717, -0.0308429, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361606, 0.0147042, 0.998802) +tracks/27/keys = PackedFloat32Array(0, 1, 0.422188, -0.031471, 0.163243, 0.891133, 0.0333333, 1, 0.422188, -0.031471, 0.163243, 0.891133, 0.0666667, 1, 0.427513, -0.00279769, 0.108356, 0.897487, 0.1, 1, 0.429059, 0.00546337, 0.101401, 0.89755, 0.133333, 1, 0.426473, 0.008892, 0.0903984, 0.899928, 0.166667, 1, 0.418822, 0.00709637, 0.083521, 0.904191, 0.2, 1, 0.417157, -0.00320663, 0.0763514, 0.905616, 0.233333, 1, 0.41866, -0.0169338, 0.090743, 0.903439, 0.266667, 1, 0.427545, -0.036799, 0.142719, 0.891898, 0.3, 1, 0.438923, -0.05515, 0.183185, 0.877923, 0.333333, 1, 0.451789, -0.0681821, 0.201016, 0.866505, 0.366667, 1, 0.4415, -0.0781936, 0.229303, 0.863935, 0.4, 1, 0.40906, -0.0924556, 0.27506, 0.865138, 0.433333, 1, 0.357862, -0.108799, 0.341268, 0.862342, 0.466667, 1, 0.314828, -0.119529, 0.389537, 0.857238, 0.5, 1, 0.300559, -0.12412, 0.409703, 0.852292, 0.533333, 1, 0.316447, -0.129081, 0.424531, 0.838435, 0.566667, 1, 0.332561, -0.132523, 0.425279, 0.831251, 0.6, 1, 0.342502, -0.128735, 0.396226, 0.842095, 0.633333, 1, 0.355165, -0.11594, 0.34546, 0.860856, 0.666667, 1, 0.382218, -0.0904308, 0.275432, 0.877422, 0.7, 1, 0.408778, -0.055095, 0.196791, 0.88946, 0.733333, 1, 0.422189, -0.031471, 0.163243, 0.891133) tracks/28/type = "rotation_3d" tracks/28/imported = true tracks/28/enabled = true -tracks/28/path = NodePath("Armature/Skeleton3D:RightHandThumb1") +tracks/28/path = NodePath("Armature/Skeleton3D:RightForeArm") tracks/28/interp = 1 tracks/28/loop_wrap = true -tracks/28/keys = PackedFloat32Array(0, 1, 0.307772, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307772, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904034, 0.6, 1, 0.308597, -0.0420998, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416886, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411956, -0.301251, 0.901457, 0.7, 1, 0.307871, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406095, -0.30591, 0.900026) +tracks/28/keys = PackedFloat32Array(0, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0666667, 1, 0.0246688, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429585, -0.0179811, -0.775661, 0.629429, 0.133333, 1, 0.0578759, -0.00440463, -0.800882, 0.596003, 0.166667, 1, 0.0534108, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615824, -0.0253127, -0.822496, 0.56486, 0.233333, 1, 0.0676034, -0.0287049, -0.819344, 0.568579, 0.266667, 1, 0.0616387, -0.03676, -0.81292, 0.577937, 0.3, 1, 0.0559945, -0.042949, -0.783491, 0.617384, 0.333333, 1, 0.0471892, -0.0634443, -0.714013, 0.695653, 0.366667, 1, 0.0510632, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617364, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788548, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740618, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.707619, 0.69443, 0.633333, 1, 0.0458404, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371625, -0.0765627, -0.704687, 0.704396, 0.733333, 1, 0.0274294, -0.0572102, -0.730987, 0.679435) tracks/29/type = "rotation_3d" tracks/29/imported = true tracks/29/enabled = true -tracks/29/path = NodePath("Armature/Skeleton3D:RightHandThumb2") +tracks/29/path = NodePath("Armature/Skeleton3D:RightHand") tracks/29/interp = 1 tracks/29/loop_wrap = true -tracks/29/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0333333, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0666667, 1, 0.020139, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876265, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876489, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.020216, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201768, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866742, 0.136175, 0.986681, 0.733333, 1, 0.0201264, 0.0865728, 0.129256, 0.98762) +tracks/29/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.00376824, 0.998946, 0.1, 1, -0.0237054, 0.00266074, -0.0418228, 0.99884, 0.133333, 1, 0.00585683, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384397, 0.00889191, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344873, -0.174226, 0.983562, 0.233333, 1, 0.0482547, 0.00426751, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119574, -0.198099, 0.979611, 0.3, 1, 0.038613, -0.00596982, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.00338524, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453924, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221374, -0.145362, 0.989027, 0.433333, 1, -0.00832669, -0.00954411, -0.124422, 0.992149, 0.466667, 1, 0.00392398, 0.0021902, -0.0994934, 0.995028, 0.5, 1, 0.0116836, -0.00580875, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699735, 0.997103, 0.566667, 1, -0.00257411, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424878, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.0011541, -0.0633663, -0.0170997, 0.997843, 0.666667, 1, 0.0253717, -0.0308429, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361606, 0.0147042, 0.998802) tracks/30/type = "rotation_3d" tracks/30/imported = true tracks/30/enabled = true -tracks/30/path = NodePath("Armature/Skeleton3D:RightHandIndex1") +tracks/30/path = NodePath("Armature/Skeleton3D:RightHandThumb1") tracks/30/interp = 1 tracks/30/loop_wrap = true -tracks/30/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0333333, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386175, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710745, 0.233333, 1, 0.700811, -0.0461123, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450532, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.043144, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406009, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.0344959, -0.0407419, 0.766613, 0.433333, 1, 0.623047, -0.0313889, -0.0385695, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313776, -0.038563, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413034, 0.762927) +tracks/30/keys = PackedFloat32Array(0, 1, 0.307772, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307772, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904034, 0.6, 1, 0.308597, -0.0420998, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416886, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411956, -0.301251, 0.901457, 0.7, 1, 0.307871, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406095, -0.30591, 0.900026) tracks/31/type = "rotation_3d" tracks/31/imported = true tracks/31/enabled = true -tracks/31/path = NodePath("Armature/Skeleton3D:RightHandIndex2") +tracks/31/path = NodePath("Armature/Skeleton3D:RightHandThumb2") tracks/31/interp = 1 tracks/31/loop_wrap = true -tracks/31/keys = PackedFloat32Array(0, 1, 0.730233, 0.016586, -0.0346923, 0.682115, 0.0333333, 1, 0.730233, 0.016586, -0.0346923, 0.682115, 0.0666667, 1, 0.73494, 0.0167267, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.0364541, 0.633157, 0.2, 1, 0.780907, 0.0181382, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366007, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357458, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164645, -0.0345269, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155707, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324553, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325856, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.016413, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346931, 0.682116) +tracks/31/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0333333, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0666667, 1, 0.020139, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876265, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876489, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.020216, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201768, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866742, 0.136175, 0.986681, 0.733333, 1, 0.0201264, 0.0865728, 0.129256, 0.98762) tracks/32/type = "rotation_3d" tracks/32/imported = true tracks/32/enabled = true -tracks/32/path = NodePath("Armature/Skeleton3D:RightHandIndex3") +tracks/32/path = NodePath("Armature/Skeleton3D:RightHandThumb3") tracks/32/interp = 1 tracks/32/loop_wrap = true -tracks/32/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293117, 0.0349869, 0.998198) +tracks/32/keys = PackedFloat32Array(0, 1, 0.00976307, 0.0248163, 0.0847954, 0.996041) tracks/33/type = "rotation_3d" tracks/33/imported = true tracks/33/enabled = true -tracks/33/path = NodePath("Armature/Skeleton3D:RightHandMiddle1") +tracks/33/path = NodePath("Armature/Skeleton3D:RightHandIndex1") tracks/33/interp = 1 tracks/33/loop_wrap = true -tracks/33/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877365, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694774, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576308, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568744, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.00641638, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.0077124, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.00940197, -0.0710963, 0.713582, 0.366667, 1, 0.681566, 0.0113148, -0.0698226, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684407, 0.743568, 0.433333, 1, 0.648435, 0.0153313, -0.067063, 0.758156, 0.466667, 1, 0.633117, 0.01714, -0.0657852, 0.771065, 0.5, 1, 0.620432, 0.0186102, -0.0647228, 0.781363, 0.533333, 1, 0.611791, 0.0195977, -0.0639973, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637295, 0.790657, 0.6, 1, 0.615102, 0.0192207, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153386, -0.0670594, 0.758208, 0.7, 1, 0.663141, 0.0135586, -0.0682872, 0.74525, 0.733333, 1, 0.669257, 0.0128193, -0.0687974, 0.739728) +tracks/33/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0333333, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386175, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710745, 0.233333, 1, 0.700811, -0.0461123, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450532, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.043144, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406009, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.0344959, -0.0407419, 0.766613, 0.433333, 1, 0.623047, -0.0313889, -0.0385695, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313776, -0.038563, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413034, 0.762927) tracks/34/type = "rotation_3d" tracks/34/imported = true tracks/34/enabled = true -tracks/34/path = NodePath("Armature/Skeleton3D:RightHandMiddle2") +tracks/34/path = NodePath("Armature/Skeleton3D:RightHandIndex2") tracks/34/interp = 1 tracks/34/loop_wrap = true -tracks/34/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393996, -0.0481364, 0.717164, 0.0333333, 1, 0.69524, -0.000393996, -0.0481364, 0.717164, 0.0666667, 1, 0.700191, -0.000152041, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424653, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115035, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.0018257, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226937, -0.050446, 0.660947, 0.233333, 1, 0.749262, 0.00229838, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203037, -0.0502508, 0.666157, 0.3, 1, 0.734752, 0.00154514, -0.0498611, 0.676499, 0.333333, 1, 0.722127, 0.000915061, -0.0493113, 0.69, 0.366667, 1, 0.707223, 0.000186706, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583958, -0.0479368, 0.721163, 0.433333, 1, 0.674935, -0.00134015, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202534, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258363, -0.0459559, 0.760605, 0.533333, 1, 0.639129, -0.0029594, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309703, -0.04542, 0.770334, 0.6, 1, 0.642367, -0.00281586, -0.045715, 0.765027, 0.633333, 1, 0.657342, -0.00214426, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134192, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668928, -0.0478572, 0.722912, 0.733333, 1, 0.695241, -0.000377183, -0.0481113, 0.717165) +tracks/34/keys = PackedFloat32Array(0, 1, 0.730233, 0.016586, -0.0346923, 0.682115, 0.0333333, 1, 0.730233, 0.016586, -0.0346923, 0.682115, 0.0666667, 1, 0.73494, 0.0167267, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.0364541, 0.633157, 0.2, 1, 0.780907, 0.0181382, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366007, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357458, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164645, -0.0345269, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155707, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324553, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325856, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.016413, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346931, 0.682116) tracks/35/type = "rotation_3d" tracks/35/imported = true tracks/35/enabled = true -tracks/35/path = NodePath("Armature/Skeleton3D:RightHandMiddle3") +tracks/35/path = NodePath("Armature/Skeleton3D:RightHandIndex3") tracks/35/interp = 1 tracks/35/loop_wrap = true -tracks/35/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421397, 0.00652642, 0.999528) +tracks/35/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293117, 0.0349869, 0.998198) tracks/36/type = "rotation_3d" tracks/36/imported = true tracks/36/enabled = true -tracks/36/path = NodePath("Armature/Skeleton3D:RightHandRing1") +tracks/36/path = NodePath("Armature/Skeleton3D:RightHandMiddle1") tracks/36/interp = 1 tracks/36/loop_wrap = true -tracks/36/keys = PackedFloat32Array(0, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723868, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743453, 0.0717597, -0.0757841, 0.660594, 0.366667, 1, 0.729163, 0.0713791, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709408, -0.0738056, 0.692948, 0.433333, 1, 0.698129, 0.0704752, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717663, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709402, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703727, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.666731, 0.0694647, -0.0705909, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.071592, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.0727501, 0.708829, 0.7, 1, 0.711927, 0.0708897, -0.0736892, 0.69477, 0.733333, 1, 0.717654, 0.0710514, -0.0740854, 0.688793) +tracks/36/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877365, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694774, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576308, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568744, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.00641638, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.0077124, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.00940197, -0.0710963, 0.713582, 0.366667, 1, 0.681566, 0.0113148, -0.0698226, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684407, 0.743568, 0.433333, 1, 0.648435, 0.0153313, -0.067063, 0.758156, 0.466667, 1, 0.633117, 0.01714, -0.0657852, 0.771065, 0.5, 1, 0.620432, 0.0186102, -0.0647228, 0.781363, 0.533333, 1, 0.611791, 0.0195977, -0.0639973, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637295, 0.790657, 0.6, 1, 0.615102, 0.0192207, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153386, -0.0670594, 0.758208, 0.7, 1, 0.663141, 0.0135586, -0.0682872, 0.74525, 0.733333, 1, 0.669257, 0.0128193, -0.0687974, 0.739728) tracks/37/type = "rotation_3d" tracks/37/imported = true tracks/37/enabled = true -tracks/37/path = NodePath("Armature/Skeleton3D:RightHandRing2") +tracks/37/path = NodePath("Armature/Skeleton3D:RightHandMiddle2") tracks/37/interp = 1 tracks/37/loop_wrap = true -tracks/37/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0666667, 1, 0.700474, 0.0571447, -0.0168005, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591748, -0.0180232, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182936, 0.659715, 0.233333, 1, 0.749456, 0.0596088, -0.0183106, 0.659111, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582694, -0.0174587, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170085, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165237, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.015593, 0.748794, 0.5, 1, 0.647951, 0.0543764, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540964, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558266, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.0565809, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046) +tracks/37/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393996, -0.0481364, 0.717164, 0.0333333, 1, 0.69524, -0.000393996, -0.0481364, 0.717164, 0.0666667, 1, 0.700191, -0.000152041, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424653, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115035, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.0018257, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226937, -0.050446, 0.660947, 0.233333, 1, 0.749262, 0.00229838, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203037, -0.0502508, 0.666157, 0.3, 1, 0.734752, 0.00154514, -0.0498611, 0.676499, 0.333333, 1, 0.722127, 0.000915061, -0.0493113, 0.69, 0.366667, 1, 0.707223, 0.000186706, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583958, -0.0479368, 0.721163, 0.433333, 1, 0.674935, -0.00134015, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202534, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258363, -0.0459559, 0.760605, 0.533333, 1, 0.639129, -0.0029594, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309703, -0.04542, 0.770334, 0.6, 1, 0.642367, -0.00281586, -0.045715, 0.765027, 0.633333, 1, 0.657342, -0.00214426, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134192, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668928, -0.0478572, 0.722912, 0.733333, 1, 0.695241, -0.000377183, -0.0481113, 0.717165) tracks/38/type = "rotation_3d" tracks/38/imported = true tracks/38/enabled = true -tracks/38/path = NodePath("Armature/Skeleton3D:RightHandPinky1") +tracks/38/path = NodePath("Armature/Skeleton3D:RightHandMiddle3") tracks/38/interp = 1 tracks/38/loop_wrap = true -tracks/38/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.0341149, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350073, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355874, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591028, 0.333333, 1, 0.784977, 0.125062, -0.0338061, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328246, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289442, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.0284019, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714118, 0.119623, -0.0286096, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295733, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307075, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316448, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320575, 0.635775) +tracks/38/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421397, 0.00652642, 0.999528) tracks/39/type = "rotation_3d" tracks/39/imported = true tracks/39/enabled = true -tracks/39/path = NodePath("Armature/Skeleton3D:RightHandPinky2") +tracks/39/path = NodePath("Armature/Skeleton3D:RightHandRing1") tracks/39/interp = 1 tracks/39/loop_wrap = true -tracks/39/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774826, 0.0532492, -0.0244805, 0.629452, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586186, 0.266667, 1, 0.803387, 0.0552458, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231857, 0.603629, 0.333333, 1, 0.783766, 0.0538747, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247525, 0.634896, 0.4, 1, 0.755845, 0.0519258, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272203, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486274, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484282, -0.028378, 0.706306, 0.6, 1, 0.7115, 0.0488337, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273512, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518112, -0.0257222, 0.654098, 0.733333, 1, 0.759582, 0.0521871, -0.0254054, 0.647817) +tracks/39/keys = PackedFloat32Array(0, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723868, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743453, 0.0717597, -0.0757841, 0.660594, 0.366667, 1, 0.729163, 0.0713791, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709408, -0.0738056, 0.692948, 0.433333, 1, 0.698129, 0.0704752, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717663, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709402, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703727, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.666731, 0.0694647, -0.0705909, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.071592, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.0727501, 0.708829, 0.7, 1, 0.711927, 0.0708897, -0.0736892, 0.69477, 0.733333, 1, 0.717654, 0.0710514, -0.0740854, 0.688793) tracks/40/type = "rotation_3d" tracks/40/imported = true tracks/40/enabled = true -tracks/40/path = NodePath("Armature/Skeleton3D:RightHandPinky3") +tracks/40/path = NodePath("Armature/Skeleton3D:RightHandRing2") tracks/40/interp = 1 tracks/40/loop_wrap = true -tracks/40/keys = PackedFloat32Array(0, 1, 0.0255872, -0.01748, 0.0251249, 0.999204) +tracks/40/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0666667, 1, 0.700474, 0.0571447, -0.0168005, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591748, -0.0180232, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182936, 0.659715, 0.233333, 1, 0.749456, 0.0596088, -0.0183106, 0.659111, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582694, -0.0174587, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170085, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165237, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.015593, 0.748794, 0.5, 1, 0.647951, 0.0543764, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540964, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558266, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.0565809, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046) tracks/41/type = "rotation_3d" tracks/41/imported = true tracks/41/enabled = true -tracks/41/path = NodePath("Armature/Skeleton3D:LeftUpLeg") +tracks/41/path = NodePath("Armature/Skeleton3D:RightHandRing3") tracks/41/interp = 1 tracks/41/loop_wrap = true -tracks/41/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145149, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317615, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.0313259, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547008, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707003, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239614, 0.968075, 0.0293481, 0.3, 1, -0.0552125, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496813, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147106, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482537, 0.106907, -0.992634, 0.0303423, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849536, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676991, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734647, 0.136843, -0.987833, 0.00798016, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.0678569, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.0166121, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584) +tracks/41/keys = PackedFloat32Array(0, 1, 0.0390606, 0.00579561, -0.00189737, 0.999218) tracks/42/type = "rotation_3d" tracks/42/imported = true tracks/42/enabled = true -tracks/42/path = NodePath("Armature/Skeleton3D:LeftLeg") +tracks/42/path = NodePath("Armature/Skeleton3D:RightHandPinky1") tracks/42/interp = 1 tracks/42/loop_wrap = true -tracks/42/keys = PackedFloat32Array(0, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718039, -0.0680975, 0.062085, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406655, 0.947712, 0.166667, 1, -0.210248, -0.0664877, 0.000532302, 0.975384, 0.2, 1, -0.20373, -0.0217435, -0.00964683, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614308, 0.984063, 0.266667, 1, -0.153767, -0.0204952, -0.00170945, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524162, 0.943736, 0.333333, 1, -0.456528, -0.00687826, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712824, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346261, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.00729188, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.0329099, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485733, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.073467, 0.101798, 0.605647) +tracks/42/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.0341149, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350073, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355874, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591028, 0.333333, 1, 0.784977, 0.125062, -0.0338061, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328246, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289442, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.0284019, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714118, 0.119623, -0.0286096, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295733, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307075, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316448, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320575, 0.635775) tracks/43/type = "rotation_3d" tracks/43/imported = true tracks/43/enabled = true -tracks/43/path = NodePath("Armature/Skeleton3D:LeftFoot") +tracks/43/path = NodePath("Armature/Skeleton3D:RightHandPinky2") tracks/43/interp = 1 tracks/43/loop_wrap = true -tracks/43/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0666667, 1, 0.625486, -0.000207841, -0.0268605, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.025914, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.087205, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978841, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969846, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847226, 0.688084, 0.433333, 1, 0.542045, 0.0392549, 0.0575827, 0.837454, 0.466667, 1, 0.417045, 0.027933, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158868, 0.00648578, 0.881786, 0.566667, 1, 0.470291, 0.00700169, -0.00994352, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.00213991, 0.865528, 0.633333, 1, 0.537694, 0.00718267, -0.0071123, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.0343281, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484) +tracks/43/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774826, 0.0532492, -0.0244805, 0.629452, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586186, 0.266667, 1, 0.803387, 0.0552458, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231857, 0.603629, 0.333333, 1, 0.783766, 0.0538747, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247525, 0.634896, 0.4, 1, 0.755845, 0.0519258, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272203, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486274, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484282, -0.028378, 0.706306, 0.6, 1, 0.7115, 0.0488337, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273512, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518112, -0.0257222, 0.654098, 0.733333, 1, 0.759582, 0.0521871, -0.0254054, 0.647817) tracks/44/type = "rotation_3d" tracks/44/imported = true tracks/44/enabled = true -tracks/44/path = NodePath("Armature/Skeleton3D:LeftToeBase") +tracks/44/path = NodePath("Armature/Skeleton3D:RightHandPinky3") tracks/44/interp = 1 tracks/44/loop_wrap = true -tracks/44/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292442, 0.0519541, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426408, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166896, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.0077208, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543805, -0.0208246, 0.953029, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366422, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949874, 0.4, 1, 0.314272, -0.0306012, -0.013005, 0.948751, 0.433333, 1, 0.500093, -0.00884654, -0.000505923, 0.865927, 0.466667, 1, 0.418454, 0.0248023, 0.01218, 0.907817, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270409, -0.0696822, -0.0285568, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242129, 0.95474, 0.6, 1, 0.296428, -0.0711176, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611757, -0.00930081, 0.95766, 0.666667, 1, 0.290514, -0.0883114, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274547, -0.0898634, -0.024166, 0.95706) +tracks/44/keys = PackedFloat32Array(0, 1, 0.0255872, -0.01748, 0.0251249, 0.999204) tracks/45/type = "rotation_3d" tracks/45/imported = true tracks/45/enabled = true -tracks/45/path = NodePath("Armature/Skeleton3D:RightUpLeg") +tracks/45/path = NodePath("Armature/Skeleton3D:LeftUpLeg") tracks/45/interp = 1 tracks/45/loop_wrap = true -tracks/45/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0333333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0666667, 1, 0.0644894, -0.0232475, -0.997619, 0.00759191, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187737, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591498, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.0450799, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288645, 0.399343, 0.912958, 0.0787419, 0.433333, 1, -0.0246848, 0.446511, 0.892934, 0.0518425, 0.466667, 1, -0.00956217, 0.457757, 0.888846, 0.0178976, 0.5, 1, -0.0084846, 0.423861, 0.905675, 0.00468156, 0.533333, 1, -0.0113515, 0.406725, 0.913469, 0.00454908, 0.566667, 1, -0.0124911, 0.394025, 0.919015, 2.039e-05, 0.6, 1, 0.0182089, -0.354559, -0.934855, 0.00130756, 0.633333, 1, 0.0227267, -0.356627, -0.933965, 0.00330203, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.00513372, 0.7, 1, 0.0382455, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969) +tracks/45/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145149, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317615, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.0313259, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547008, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707003, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239614, 0.968075, 0.0293481, 0.3, 1, -0.0552125, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496813, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147106, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482537, 0.106907, -0.992634, 0.0303423, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849536, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676991, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734647, 0.136843, -0.987833, 0.00798016, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.0678569, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.0166121, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584) tracks/46/type = "rotation_3d" tracks/46/imported = true tracks/46/enabled = true -tracks/46/path = NodePath("Armature/Skeleton3D:RightLeg") +tracks/46/path = NodePath("Armature/Skeleton3D:LeftLeg") tracks/46/interp = 1 tracks/46/loop_wrap = true -tracks/46/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313712, -0.00686421, 0.888331, 0.0333333, 1, -0.459142, 0.00313712, -0.00686421, 0.888331, 0.0666667, 1, -0.321819, -0.0375846, -0.006515, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.000253454, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119299, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876556, -0.0137613, 0.847546, 0.266667, 1, -0.649473, 0.0506432, -0.00867341, 0.758647, 0.3, 1, -0.756318, 0.0421017, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407357, 0.0247847, 0.617739, 0.433333, 1, -0.678618, 0.0504598, 0.0151349, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933844, 0.860797, 0.5, 1, -0.269672, 0.0836651, -0.00249726, 0.959308, 0.533333, 1, -0.179705, 0.0268816, 0.00313687, 0.983348, 0.566667, 1, -0.177113, -0.0245932, 0.00329864, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183952, 0.986591, 0.633333, 1, -0.281819, 0.00455341, 0.000516671, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.0319411, 0.0106456, 0.87131, 0.733333, 1, -0.459142, 0.00313712, -0.00686421, 0.888331) +tracks/46/keys = PackedFloat32Array(0, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718039, -0.0680975, 0.062085, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406655, 0.947712, 0.166667, 1, -0.210248, -0.0664877, 0.000532302, 0.975384, 0.2, 1, -0.20373, -0.0217435, -0.00964683, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614308, 0.984063, 0.266667, 1, -0.153767, -0.0204952, -0.00170945, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524162, 0.943736, 0.333333, 1, -0.456528, -0.00687826, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712824, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346261, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.00729188, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.0329099, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485733, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.073467, 0.101798, 0.605647) tracks/47/type = "rotation_3d" tracks/47/imported = true tracks/47/enabled = true -tracks/47/path = NodePath("Armature/Skeleton3D:RightFoot") +tracks/47/path = NodePath("Armature/Skeleton3D:LeftFoot") tracks/47/interp = 1 tracks/47/loop_wrap = true -tracks/47/keys = PackedFloat32Array(0, 1, 0.670436, -0.0306986, -0.0445175, 0.739995, 0.0333333, 1, 0.670436, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.033259, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780927, 0.0420878, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.082636, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386514, 0.0516442, 0.934384, 0.266667, 1, 0.387986, -0.00141701, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399391, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219004, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380237, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368345, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.0309349, -0.0280917, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.00988061, 0.847581, 0.566667, 1, 0.566946, -0.00315884, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.00450675, 0.0183884, 0.830173, 0.633333, 1, 0.501942, -0.0412582, -0.0515051, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306987, -0.0445175, 0.739995) +tracks/47/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0666667, 1, 0.625486, -0.000207841, -0.0268605, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.025914, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.087205, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978841, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969846, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847226, 0.688084, 0.433333, 1, 0.542045, 0.0392549, 0.0575827, 0.837454, 0.466667, 1, 0.417045, 0.027933, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158868, 0.00648578, 0.881786, 0.566667, 1, 0.470291, 0.00700169, -0.00994352, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.00213991, 0.865528, 0.633333, 1, 0.537694, 0.00718267, -0.0071123, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.0343281, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484) tracks/48/type = "rotation_3d" tracks/48/imported = true tracks/48/enabled = true -tracks/48/path = NodePath("Armature/Skeleton3D:RightToeBase") +tracks/48/path = NodePath("Armature/Skeleton3D:LeftToeBase") tracks/48/interp = 1 tracks/48/loop_wrap = true -tracks/48/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760794, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.00664333, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298992, 0.917118, 0.166667, 1, 0.319659, 0.00436587, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730296, 0.00561743, 0.930859, 0.233333, 1, 0.428249, -0.0430999, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.0561309, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301156, 0.908035, 0.333333, 1, 0.399181, -0.0295483, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298552, 0.0283044, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437218, 0.934186, 0.5, 1, 0.344986, -0.0457678, 0.0658479, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638603, 0.938774, 0.566667, 1, 0.332132, -0.0567952, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.063626, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678353, 0.949788, 0.7, 1, 0.31548, -0.0127808, 0.0709526, 0.94619, 0.733333, 1, 0.35791, -0.0148359, 0.0751641, 0.930608) +tracks/48/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292442, 0.0519541, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426408, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166896, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.0077208, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543805, -0.0208246, 0.953029, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366422, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949874, 0.4, 1, 0.314272, -0.0306012, -0.013005, 0.948751, 0.433333, 1, 0.500093, -0.00884654, -0.000505923, 0.865927, 0.466667, 1, 0.418454, 0.0248023, 0.01218, 0.907817, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270409, -0.0696822, -0.0285568, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242129, 0.95474, 0.6, 1, 0.296428, -0.0711176, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611757, -0.00930081, 0.95766, 0.666667, 1, 0.290514, -0.0883114, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274547, -0.0898634, -0.024166, 0.95706) tracks/49/type = "rotation_3d" tracks/49/imported = true tracks/49/enabled = true -tracks/49/path = NodePath("Armature/Skeleton3D:LeftHandThumb3") +tracks/49/path = NodePath("Armature/Skeleton3D:RightUpLeg") tracks/49/interp = 1 tracks/49/loop_wrap = true -tracks/49/keys = PackedFloat32Array(0, 1, 0.00975412, -0.0248018, -0.084795, 0.996042) +tracks/49/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0333333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0666667, 1, 0.0644894, -0.0232475, -0.997619, 0.00759191, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187737, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591498, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.0450799, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288645, 0.399343, 0.912958, 0.0787419, 0.433333, 1, -0.0246848, 0.446511, 0.892934, 0.0518425, 0.466667, 1, -0.00956217, 0.457757, 0.888846, 0.0178976, 0.5, 1, -0.0084846, 0.423861, 0.905675, 0.00468156, 0.533333, 1, -0.0113515, 0.406725, 0.913469, 0.00454908, 0.566667, 1, -0.0124911, 0.394025, 0.919015, 2.039e-05, 0.6, 1, 0.0182089, -0.354559, -0.934855, 0.00130756, 0.633333, 1, 0.0227267, -0.356627, -0.933965, 0.00330203, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.00513372, 0.7, 1, 0.0382455, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969) tracks/50/type = "rotation_3d" tracks/50/imported = true tracks/50/enabled = true -tracks/50/path = NodePath("Armature/Skeleton3D:LeftHandRing3") +tracks/50/path = NodePath("Armature/Skeleton3D:RightLeg") tracks/50/interp = 1 tracks/50/loop_wrap = true -tracks/50/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578869, 0.0018961, 0.999218) +tracks/50/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313712, -0.00686421, 0.888331, 0.0333333, 1, -0.459142, 0.00313712, -0.00686421, 0.888331, 0.0666667, 1, -0.321819, -0.0375846, -0.006515, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.000253454, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119299, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876556, -0.0137613, 0.847546, 0.266667, 1, -0.649473, 0.0506432, -0.00867341, 0.758647, 0.3, 1, -0.756318, 0.0421017, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407357, 0.0247847, 0.617739, 0.433333, 1, -0.678618, 0.0504598, 0.0151349, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933844, 0.860797, 0.5, 1, -0.269672, 0.0836651, -0.00249726, 0.959308, 0.533333, 1, -0.179705, 0.0268816, 0.00313687, 0.983348, 0.566667, 1, -0.177113, -0.0245932, 0.00329864, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183952, 0.986591, 0.633333, 1, -0.281819, 0.00455341, 0.000516671, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.0319411, 0.0106456, 0.87131, 0.733333, 1, -0.459142, 0.00313712, -0.00686421, 0.888331) tracks/51/type = "rotation_3d" tracks/51/imported = true tracks/51/enabled = true -tracks/51/path = NodePath("Armature/Skeleton3D:RightHandThumb3") +tracks/51/path = NodePath("Armature/Skeleton3D:RightFoot") tracks/51/interp = 1 tracks/51/loop_wrap = true -tracks/51/keys = PackedFloat32Array(0, 1, 0.00976312, 0.0248163, 0.0847953, 0.996041) +tracks/51/keys = PackedFloat32Array(0, 1, 0.670436, -0.0306986, -0.0445175, 0.739995, 0.0333333, 1, 0.670436, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.033259, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780927, 0.0420878, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.082636, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386514, 0.0516442, 0.934384, 0.266667, 1, 0.387986, -0.00141701, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399391, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219004, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380237, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368345, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.0309349, -0.0280917, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.00988061, 0.847581, 0.566667, 1, 0.566946, -0.00315884, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.00450675, 0.0183884, 0.830173, 0.633333, 1, 0.501942, -0.0412582, -0.0515051, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306987, -0.0445175, 0.739995) tracks/52/type = "rotation_3d" tracks/52/imported = true tracks/52/enabled = true -tracks/52/path = NodePath("Armature/Skeleton3D:RightHandRing3") +tracks/52/path = NodePath("Armature/Skeleton3D:RightToeBase") tracks/52/interp = 1 tracks/52/loop_wrap = true -tracks/52/keys = PackedFloat32Array(0, 1, 0.0390606, 0.0057956, -0.00189736, 0.999218) +tracks/52/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760794, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.00664333, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298992, 0.917118, 0.166667, 1, 0.319659, 0.00436587, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730296, 0.00561743, 0.930859, 0.233333, 1, 0.428249, -0.0430999, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.0561309, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301156, 0.908035, 0.333333, 1, 0.399181, -0.0295483, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298552, 0.0283044, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437218, 0.934186, 0.5, 1, 0.344986, -0.0457678, 0.0658479, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638603, 0.938774, 0.566667, 1, 0.332132, -0.0567952, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.063626, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678353, 0.949788, 0.7, 1, 0.31548, -0.0127808, 0.0709526, 0.94619, 0.733333, 1, 0.35791, -0.0148359, 0.0751641, 0.930608) tracks/53/type = "method" tracks/53/imported = false tracks/53/enabled = true diff --git a/mirror-godot-app/player/animations/humanoid/running_forward_left.tres b/mirror-godot-app/player/animations/humanoid/running_forward_left.tres index 662803f1..2211641a 100644 --- a/mirror-godot-app/player/animations/humanoid/running_forward_left.tres +++ b/mirror-godot-app/player/animations/humanoid/running_forward_left.tres @@ -98,283 +98,283 @@ tracks/12/keys = PackedFloat32Array(0, 1, 0.0201836, -0.0870503, -0.153598, 0.98 tracks/13/type = "rotation_3d" tracks/13/imported = true tracks/13/enabled = true -tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandIndex1") +tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandThumb3") tracks/13/interp = 1 tracks/13/loop_wrap = true -tracks/13/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213448, 0.0975406, 0.728636, 0.0333333, 1, 0.677916, -0.00213447, 0.0975407, 0.728637, 0.0666667, 1, 0.668375, -0.00325845, 0.0968562, 0.737484, 0.1, 1, 0.645165, -0.00593605, 0.0951567, 0.758072, 0.133333, 1, 0.616642, -0.00912457, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.011786, 0.0911072, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.0118309, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106598, 0.0919229, 0.792691, 0.333333, 1, 0.615871, -0.00920904, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758915, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.0059106, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428561, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282619, 0.097121, 0.734095, 0.5, 1, 0.682034, -0.00164532, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854123, 0.0982994, 0.718411, 0.566667, 1, 0.691031, -0.000566389, 0.0984679, 0.716086, 0.6, 1, 0.689678, -0.00072968, 0.098373, 0.717403, 0.633333, 1, 0.686441, -0.00111854, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158243, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197136, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212439, 0.0975591, 0.728636) +tracks/13/keys = PackedFloat32Array(0, 1, 0.00975416, -0.0248017, -0.0847951, 0.996042) tracks/14/type = "rotation_3d" tracks/14/imported = true tracks/14/enabled = true -tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex2") +tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex1") tracks/14/interp = 1 tracks/14/loop_wrap = true -tracks/14/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141414, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134934, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.012701, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120244, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607544, -0.0120134, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123131, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126804, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.014527, 0.0478793, 0.715218, 0.533333, 1, 0.70364, -0.0147135, 0.0482916, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484411, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483573, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476248, 0.719188) +tracks/14/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213448, 0.0975406, 0.728636, 0.0333333, 1, 0.677916, -0.00213447, 0.0975407, 0.728637, 0.0666667, 1, 0.668375, -0.00325845, 0.0968562, 0.737484, 0.1, 1, 0.645165, -0.00593605, 0.0951567, 0.758072, 0.133333, 1, 0.616642, -0.00912457, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.011786, 0.0911072, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.0118309, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106598, 0.0919229, 0.792691, 0.333333, 1, 0.615871, -0.00920904, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758915, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.0059106, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428561, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282619, 0.097121, 0.734095, 0.5, 1, 0.682034, -0.00164532, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854123, 0.0982994, 0.718411, 0.566667, 1, 0.691031, -0.000566389, 0.0984679, 0.716086, 0.6, 1, 0.689678, -0.00072968, 0.098373, 0.717403, 0.633333, 1, 0.686441, -0.00111854, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158243, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197136, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212439, 0.0975591, 0.728636) tracks/15/type = "rotation_3d" tracks/15/imported = true tracks/15/enabled = true -tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex3") +tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex2") tracks/15/interp = 1 tracks/15/loop_wrap = true -tracks/15/keys = PackedFloat32Array(0, 1, 0.0389578, -0.0293203, -0.0349865, 0.998198) +tracks/15/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141414, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134934, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.012701, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120244, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607544, -0.0120134, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123131, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126804, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.014527, 0.0478793, 0.715218, 0.533333, 1, 0.70364, -0.0147135, 0.0482916, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484411, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483573, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476248, 0.719188) tracks/16/type = "rotation_3d" tracks/16/imported = true tracks/16/enabled = true -tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1") +tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandIndex3") tracks/16/interp = 1 tracks/16/loop_wrap = true -tracks/16/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190722, 0.0936015, 0.717324, 0.0333333, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0666667, 1, 0.680739, -0.0199366, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.0220051, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605308, -0.026465, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.086564, 0.798629, 0.233333, 1, 0.597608, -0.0270894, 0.0867706, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873315, 0.791062, 0.3, 1, 0.615675, -0.0256128, 0.0881562, 0.782635, 0.333333, 1, 0.628846, -0.0245103, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232734, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219854, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207321, 0.09233, 0.734455, 0.466667, 1, 0.684377, -0.0196012, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939048, 0.713364, 0.533333, 1, 0.700741, -0.0180761, 0.0943369, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179754, 0.0943985, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936788, 0.717322) +tracks/16/keys = PackedFloat32Array(0, 1, 0.0389578, -0.0293203, -0.0349865, 0.998198) tracks/17/type = "rotation_3d" tracks/17/imported = true tracks/17/enabled = true -tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2") +tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1") tracks/17/interp = 1 tracks/17/loop_wrap = true -tracks/17/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302834, 0.0589127, 0.752497, 0.0333333, 1, 0.655949, 0.00302836, 0.0589127, 0.752497, 0.0666667, 1, 0.646075, 0.00345853, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448303, 0.0566731, 0.780881, 0.133333, 1, 0.592669, 0.00570126, 0.0547034, 0.803566, 0.166667, 1, 0.567386, 0.0067155, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713888, 0.0522623, 0.829092, 0.233333, 1, 0.559389, 0.00702992, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.00673202, 0.052965, 0.822018, 0.3, 1, 0.578166, 0.00628577, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573273, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.00511421, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447228, 0.0566867, 0.780691, 0.433333, 1, 0.636957, 0.00385016, 0.0576578, 0.768731, 0.466667, 1, 0.64989, 0.00329119, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283811, 0.05919, 0.748736, 0.533333, 1, 0.667055, 0.00253435, 0.0596373, 0.742613, 0.566667, 1, 0.669536, 0.00241661, 0.059788, 0.740365, 0.6, 1, 0.668133, 0.00248303, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594901, 0.744663, 0.666667, 1, 0.660757, 0.00281638, 0.0592284, 0.748254, 0.7, 1, 0.657371, 0.00297578, 0.059023, 0.751246, 0.733333, 1, 0.655946, 0.00303654, 0.0589525, 0.752496) +tracks/17/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190722, 0.0936015, 0.717324, 0.0333333, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0666667, 1, 0.680739, -0.0199366, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.0220051, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605308, -0.026465, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.086564, 0.798629, 0.233333, 1, 0.597608, -0.0270894, 0.0867706, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873315, 0.791062, 0.3, 1, 0.615675, -0.0256128, 0.0881562, 0.782635, 0.333333, 1, 0.628846, -0.0245103, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232734, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219854, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207321, 0.09233, 0.734455, 0.466667, 1, 0.684377, -0.0196012, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939048, 0.713364, 0.533333, 1, 0.700741, -0.0180761, 0.0943369, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179754, 0.0943985, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936788, 0.717322) tracks/18/type = "rotation_3d" tracks/18/imported = true tracks/18/enabled = true -tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3") +tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2") tracks/18/interp = 1 tracks/18/loop_wrap = true -tracks/18/keys = PackedFloat32Array(0, 1, 0.0297257, 0.00421688, -0.00652399, 0.999528) +tracks/18/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302834, 0.0589127, 0.752497, 0.0333333, 1, 0.655949, 0.00302836, 0.0589127, 0.752497, 0.0666667, 1, 0.646075, 0.00345853, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448303, 0.0566731, 0.780881, 0.133333, 1, 0.592669, 0.00570126, 0.0547034, 0.803566, 0.166667, 1, 0.567386, 0.0067155, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713888, 0.0522623, 0.829092, 0.233333, 1, 0.559389, 0.00702992, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.00673202, 0.052965, 0.822018, 0.3, 1, 0.578166, 0.00628577, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573273, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.00511421, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447228, 0.0566867, 0.780691, 0.433333, 1, 0.636957, 0.00385016, 0.0576578, 0.768731, 0.466667, 1, 0.64989, 0.00329119, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283811, 0.05919, 0.748736, 0.533333, 1, 0.667055, 0.00253435, 0.0596373, 0.742613, 0.566667, 1, 0.669536, 0.00241661, 0.059788, 0.740365, 0.6, 1, 0.668133, 0.00248303, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594901, 0.744663, 0.666667, 1, 0.660757, 0.00281638, 0.0592284, 0.748254, 0.7, 1, 0.657371, 0.00297578, 0.059023, 0.751246, 0.733333, 1, 0.655946, 0.00303654, 0.0589525, 0.752496) tracks/19/type = "rotation_3d" tracks/19/imported = true tracks/19/enabled = true -tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandRing1") +tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3") tracks/19/interp = 1 tracks/19/loop_wrap = true -tracks/19/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796063, 0.0652598, 0.687701, 0.0333333, 1, 0.718659, -0.0796064, 0.0652598, 0.687701, 0.0666667, 1, 0.709595, -0.0794686, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635254, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619846, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776572, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601924, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.060604, 0.765113, 0.3, 1, 0.64674, -0.078169, 0.0612096, 0.756222, 0.333333, 1, 0.659494, -0.0784709, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649394, 0.693506, 0.5, 1, 0.722568, -0.0796733, 0.0654539, 0.683567, 0.533333, 1, 0.728831, -0.079754, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659434, 0.674375, 0.6, 1, 0.729817, -0.0797676, 0.0658651, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656797, 0.679091, 0.666667, 1, 0.723068, -0.079692, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796549, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.065175, 0.687702) +tracks/19/keys = PackedFloat32Array(0, 1, 0.0297257, 0.00421688, -0.00652399, 0.999528) tracks/20/type = "rotation_3d" tracks/20/imported = true tracks/20/enabled = true -tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing2") +tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing1") tracks/20/interp = 1 tracks/20/loop_wrap = true -tracks/20/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546984, -0.00023174, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231767, 0.751472, 0.0666667, 1, 0.647621, -0.0541725, -0.000275238, 0.760034, 0.1, 1, 0.623635, -0.0528811, -0.000379369, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503383, 0.80267, 0.166667, 1, 0.56893, -0.0498674, -0.000606368, 0.820872, 0.2, 1, 0.558161, -0.0492645, -0.000649504, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.000638407, 0.826386, 0.266667, 1, 0.568497, -0.0498439, -0.000608263, 0.821174, 0.3, 1, 0.57971, -0.0504688, -0.000563056, 0.813258, 0.333333, 1, 0.593422, -0.0512282, -0.000507881, 0.80326, 0.366667, 1, 0.608503, -0.0520573, -0.000445214, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380446, 0.779735, 0.433333, 1, 0.638503, -0.0536861, -0.000317728, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.000261345, 0.756753, 0.5, 1, 0.661758, -0.0549278, -0.00021561, 0.747702, 0.533333, 1, 0.668599, -0.05529, -0.000185347, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158885, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173637, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193912, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212541, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.000241535, 0.750219, 0.733333, 1, 0.657494, -0.0547048, -0.000268063, 0.751471) +tracks/20/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796063, 0.0652598, 0.687701, 0.0333333, 1, 0.718659, -0.0796064, 0.0652598, 0.687701, 0.0666667, 1, 0.709595, -0.0794686, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635254, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619846, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776572, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601924, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.060604, 0.765113, 0.3, 1, 0.64674, -0.078169, 0.0612096, 0.756222, 0.333333, 1, 0.659494, -0.0784709, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649394, 0.693506, 0.5, 1, 0.722568, -0.0796733, 0.0654539, 0.683567, 0.533333, 1, 0.728831, -0.079754, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659434, 0.674375, 0.6, 1, 0.729817, -0.0797676, 0.0658651, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656797, 0.679091, 0.666667, 1, 0.723068, -0.079692, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796549, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.065175, 0.687702) tracks/21/type = "rotation_3d" tracks/21/imported = true tracks/21/enabled = true -tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandPinky1") +tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandRing2") tracks/21/interp = 1 tracks/21/loop_wrap = true -tracks/21/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.00805682, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.00805683, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764208, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.00664675, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545055, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444291, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401888, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.00412749, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.0044254, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487033, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.00541874, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602798, 0.72551, 0.4, 1, 0.689632, -0.132154, 0.00665619, 0.711968, 0.433333, 1, 0.703025, -0.13282, 0.0072613, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.0078015, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.00823683, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852744, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864419, 0.667161, 0.6, 1, 0.731411, -0.134106, 0.0085798, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.00843089, 0.671908, 0.666667, 1, 0.724714, -0.133821, 0.00825947, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.00809938, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802201, 0.680574) +tracks/21/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546984, -0.00023174, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231767, 0.751472, 0.0666667, 1, 0.647621, -0.0541725, -0.000275238, 0.760034, 0.1, 1, 0.623635, -0.0528811, -0.000379369, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503383, 0.80267, 0.166667, 1, 0.56893, -0.0498674, -0.000606368, 0.820872, 0.2, 1, 0.558161, -0.0492645, -0.000649504, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.000638407, 0.826386, 0.266667, 1, 0.568497, -0.0498439, -0.000608263, 0.821174, 0.3, 1, 0.57971, -0.0504688, -0.000563056, 0.813258, 0.333333, 1, 0.593422, -0.0512282, -0.000507881, 0.80326, 0.366667, 1, 0.608503, -0.0520573, -0.000445214, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380446, 0.779735, 0.433333, 1, 0.638503, -0.0536861, -0.000317728, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.000261345, 0.756753, 0.5, 1, 0.661758, -0.0549278, -0.00021561, 0.747702, 0.533333, 1, 0.668599, -0.05529, -0.000185347, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158885, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173637, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193912, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212541, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.000241535, 0.750219, 0.733333, 1, 0.657494, -0.0547048, -0.000268063, 0.751471) tracks/22/type = "rotation_3d" tracks/22/imported = true tracks/22/enabled = true -tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandPinky2") +tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandRing3") tracks/22/interp = 1 tracks/22/loop_wrap = true -tracks/22/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421751, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.00838391, 0.718324, 0.133333, 1, 0.667381, -0.0392576, -0.00558577, 0.74366, 0.166667, 1, 0.643982, -0.0378659, -0.00323497, 0.764096, 0.2, 1, 0.633982, -0.0372713, -0.0022483, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250146, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319552, 0.764436, 0.3, 1, 0.653972, -0.0384611, -0.00423229, 0.755528, 0.333333, 1, 0.666648, -0.0392154, -0.00551261, 0.74432, 0.366667, 1, 0.680551, -0.0400428, -0.00693743, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840893, 0.718112, 0.433333, 1, 0.708075, -0.041682, -0.00982833, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121245, 0.682757, 0.533333, 1, 0.735496, -0.0433154, -0.0128098, 0.676022, 0.566667, 1, 0.737746, -0.043449, -0.013059, 0.673552, 0.6, 1, 0.736474, -0.0433725, -0.0129175, 0.67495, 0.633333, 1, 0.733429, -0.0431905, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.042972, -0.0121767, 0.682227, 0.7, 1, 0.726697, -0.0427877, -0.0118384, 0.685522, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901) +tracks/22/keys = PackedFloat32Array(0, 1, 0.0390567, -0.0057887, 0.00189611, 0.999218) tracks/23/type = "rotation_3d" tracks/23/imported = true tracks/23/enabled = true -tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky3") +tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky1") tracks/23/interp = 1 tracks/23/loop_wrap = true -tracks/23/keys = PackedFloat32Array(0, 1, 0.025586, 0.0174793, -0.0251263, 0.999204) +tracks/23/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.00805682, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.00805683, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764208, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.00664675, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545055, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444291, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401888, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.00412749, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.0044254, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487033, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.00541874, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602798, 0.72551, 0.4, 1, 0.689632, -0.132154, 0.00665619, 0.711968, 0.433333, 1, 0.703025, -0.13282, 0.0072613, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.0078015, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.00823683, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852744, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864419, 0.667161, 0.6, 1, 0.731411, -0.134106, 0.0085798, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.00843089, 0.671908, 0.666667, 1, 0.724714, -0.133821, 0.00825947, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.00809938, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802201, 0.680574) tracks/24/type = "rotation_3d" tracks/24/imported = true tracks/24/enabled = true -tracks/24/path = NodePath("Armature/Skeleton3D:RightShoulder") +tracks/24/path = NodePath("Armature/Skeleton3D:LeftHandPinky2") tracks/24/interp = 1 tracks/24/loop_wrap = true -tracks/24/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.463251, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529407, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.51068, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.463251) +tracks/24/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421751, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.00838391, 0.718324, 0.133333, 1, 0.667381, -0.0392576, -0.00558577, 0.74366, 0.166667, 1, 0.643982, -0.0378659, -0.00323497, 0.764096, 0.2, 1, 0.633982, -0.0372713, -0.0022483, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250146, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319552, 0.764436, 0.3, 1, 0.653972, -0.0384611, -0.00423229, 0.755528, 0.333333, 1, 0.666648, -0.0392154, -0.00551261, 0.74432, 0.366667, 1, 0.680551, -0.0400428, -0.00693743, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840893, 0.718112, 0.433333, 1, 0.708075, -0.041682, -0.00982833, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121245, 0.682757, 0.533333, 1, 0.735496, -0.0433154, -0.0128098, 0.676022, 0.566667, 1, 0.737746, -0.043449, -0.013059, 0.673552, 0.6, 1, 0.736474, -0.0433725, -0.0129175, 0.67495, 0.633333, 1, 0.733429, -0.0431905, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.042972, -0.0121767, 0.682227, 0.7, 1, 0.726697, -0.0427877, -0.0118384, 0.685522, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901) tracks/25/type = "rotation_3d" tracks/25/imported = true tracks/25/enabled = true -tracks/25/path = NodePath("Armature/Skeleton3D:RightArm") +tracks/25/path = NodePath("Armature/Skeleton3D:LeftHandPinky3") tracks/25/interp = 1 tracks/25/loop_wrap = true -tracks/25/keys = PackedFloat32Array(0, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0333333, 1, 0.488072, -0.0335138, 0.162464, 0.856895, 0.0666667, 1, 0.4932, -0.00577496, 0.10936, 0.862995, 0.1, 1, 0.494668, 0.00221617, 0.102625, 0.862999, 0.133333, 1, 0.492282, 0.00553498, 0.092007, 0.865542, 0.166667, 1, 0.485147, 0.00380214, 0.0854059, 0.870244, 0.2, 1, 0.483591, -0.00617368, 0.0784748, 0.871747, 0.233333, 1, 0.48495, -0.0194622, 0.0923897, 0.86943, 0.266667, 1, 0.49311, -0.0386559, 0.142561, 0.857336, 0.3, 1, 0.503595, -0.0563376, 0.181478, 0.842784, 0.333333, 1, 0.515495, -0.0688457, 0.198466, 0.830744, 0.366667, 1, 0.505846, -0.0785529, 0.225899, 0.828806, 0.4, 1, 0.475457, -0.0925303, 0.270694, 0.831928, 0.433333, 1, 0.427208, -0.108737, 0.33599, 0.832334, 0.466667, 1, 0.386379, -0.119526, 0.384066, 0.830011, 0.5, 1, 0.372772, -0.12412, 0.404117, 0.826029, 0.533333, 1, 0.387829, -0.128779, 0.417989, 0.811351, 0.566667, 1, 0.403089, -0.13196, 0.418163, 0.803272, 0.6, 1, 0.412559, -0.128201, 0.389678, 0.813333, 0.633333, 1, 0.424646, -0.115692, 0.340117, 0.83103, 0.666667, 1, 0.450303, -0.0907648, 0.271644, 0.845694, 0.7, 1, 0.475429, -0.0564125, 0.195077, 0.855996, 0.733333, 1, 0.488072, -0.0335139, 0.162464, 0.856895) +tracks/25/keys = PackedFloat32Array(0, 1, 0.025586, 0.0174793, -0.0251263, 0.999204) tracks/26/type = "rotation_3d" tracks/26/imported = true tracks/26/enabled = true -tracks/26/path = NodePath("Armature/Skeleton3D:RightForeArm") +tracks/26/path = NodePath("Armature/Skeleton3D:RightShoulder") tracks/26/interp = 1 tracks/26/loop_wrap = true -tracks/26/keys = PackedFloat32Array(0, 1, 0.0274299, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.05721, -0.730987, 0.679435, 0.0666667, 1, 0.0246688, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429584, -0.0179812, -0.775661, 0.629429, 0.133333, 1, 0.0578759, -0.00440454, -0.800882, 0.596003, 0.166667, 1, 0.0534109, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615823, -0.0253127, -0.822497, 0.56486, 0.233333, 1, 0.0676034, -0.0287049, -0.819344, 0.568579, 0.266667, 1, 0.0616388, -0.0367601, -0.81292, 0.577937, 0.3, 1, 0.0559946, -0.0429489, -0.783491, 0.617384, 0.333333, 1, 0.0471892, -0.0634444, -0.714013, 0.695653, 0.366667, 1, 0.0510633, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617365, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788547, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740618, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.707619, 0.69443, 0.633333, 1, 0.0458404, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371626, -0.0765627, -0.704687, 0.704395, 0.733333, 1, 0.0274295, -0.0572102, -0.730987, 0.679435) +tracks/26/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.463251, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529407, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.51068, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.463251) tracks/27/type = "rotation_3d" tracks/27/imported = true tracks/27/enabled = true -tracks/27/path = NodePath("Armature/Skeleton3D:RightHand") +tracks/27/path = NodePath("Armature/Skeleton3D:RightArm") tracks/27/interp = 1 tracks/27/loop_wrap = true -tracks/27/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.00376824, 0.998946, 0.1, 1, -0.0237054, 0.0026607, -0.0418228, 0.99884, 0.133333, 1, 0.00585673, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384396, 0.00889187, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344873, -0.174226, 0.983562, 0.233333, 1, 0.0482546, 0.00426751, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119575, -0.198099, 0.979611, 0.3, 1, 0.0386131, -0.00596975, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.0033852, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453926, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221376, -0.145362, 0.989027, 0.433333, 1, -0.00832673, -0.00954411, -0.124422, 0.992149, 0.466667, 1, 0.00392398, 0.0021902, -0.0994934, 0.995028, 0.5, 1, 0.0116836, -0.00580875, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699735, 0.997103, 0.566667, 1, -0.00257418, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424865, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.0011541, -0.0633663, -0.0170996, 0.997843, 0.666667, 1, 0.0253717, -0.0308428, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361606, 0.0147042, 0.998802) +tracks/27/keys = PackedFloat32Array(0, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0333333, 1, 0.488072, -0.0335138, 0.162464, 0.856895, 0.0666667, 1, 0.4932, -0.00577496, 0.10936, 0.862995, 0.1, 1, 0.494668, 0.00221617, 0.102625, 0.862999, 0.133333, 1, 0.492282, 0.00553498, 0.092007, 0.865542, 0.166667, 1, 0.485147, 0.00380214, 0.0854059, 0.870244, 0.2, 1, 0.483591, -0.00617368, 0.0784748, 0.871747, 0.233333, 1, 0.48495, -0.0194622, 0.0923897, 0.86943, 0.266667, 1, 0.49311, -0.0386559, 0.142561, 0.857336, 0.3, 1, 0.503595, -0.0563376, 0.181478, 0.842784, 0.333333, 1, 0.515495, -0.0688457, 0.198466, 0.830744, 0.366667, 1, 0.505846, -0.0785529, 0.225899, 0.828806, 0.4, 1, 0.475457, -0.0925303, 0.270694, 0.831928, 0.433333, 1, 0.427208, -0.108737, 0.33599, 0.832334, 0.466667, 1, 0.386379, -0.119526, 0.384066, 0.830011, 0.5, 1, 0.372772, -0.12412, 0.404117, 0.826029, 0.533333, 1, 0.387829, -0.128779, 0.417989, 0.811351, 0.566667, 1, 0.403089, -0.13196, 0.418163, 0.803272, 0.6, 1, 0.412559, -0.128201, 0.389678, 0.813333, 0.633333, 1, 0.424646, -0.115692, 0.340117, 0.83103, 0.666667, 1, 0.450303, -0.0907648, 0.271644, 0.845694, 0.7, 1, 0.475429, -0.0564125, 0.195077, 0.855996, 0.733333, 1, 0.488072, -0.0335139, 0.162464, 0.856895) tracks/28/type = "rotation_3d" tracks/28/imported = true tracks/28/enabled = true -tracks/28/path = NodePath("Armature/Skeleton3D:RightHandThumb1") +tracks/28/path = NodePath("Armature/Skeleton3D:RightForeArm") tracks/28/interp = 1 tracks/28/loop_wrap = true -tracks/28/keys = PackedFloat32Array(0, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904033, 0.6, 1, 0.308597, -0.0420998, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416885, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411955, -0.301251, 0.901457, 0.7, 1, 0.30787, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406095, -0.30591, 0.900026) +tracks/28/keys = PackedFloat32Array(0, 1, 0.0274299, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.05721, -0.730987, 0.679435, 0.0666667, 1, 0.0246688, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429584, -0.0179812, -0.775661, 0.629429, 0.133333, 1, 0.0578759, -0.00440454, -0.800882, 0.596003, 0.166667, 1, 0.0534109, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615823, -0.0253127, -0.822497, 0.56486, 0.233333, 1, 0.0676034, -0.0287049, -0.819344, 0.568579, 0.266667, 1, 0.0616388, -0.0367601, -0.81292, 0.577937, 0.3, 1, 0.0559946, -0.0429489, -0.783491, 0.617384, 0.333333, 1, 0.0471892, -0.0634444, -0.714013, 0.695653, 0.366667, 1, 0.0510633, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617365, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788547, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740618, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.707619, 0.69443, 0.633333, 1, 0.0458404, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371626, -0.0765627, -0.704687, 0.704395, 0.733333, 1, 0.0274295, -0.0572102, -0.730987, 0.679435) tracks/29/type = "rotation_3d" tracks/29/imported = true tracks/29/enabled = true -tracks/29/path = NodePath("Armature/Skeleton3D:RightHandThumb2") +tracks/29/path = NodePath("Armature/Skeleton3D:RightHand") tracks/29/interp = 1 tracks/29/loop_wrap = true -tracks/29/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0333333, 1, 0.0201262, 0.0865756, 0.129257, 0.98762, 0.0666667, 1, 0.020139, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876264, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876489, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.0202159, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201768, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866743, 0.136175, 0.98668, 0.733333, 1, 0.0201263, 0.0865728, 0.129256, 0.98762) +tracks/29/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.00376824, 0.998946, 0.1, 1, -0.0237054, 0.0026607, -0.0418228, 0.99884, 0.133333, 1, 0.00585673, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384396, 0.00889187, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344873, -0.174226, 0.983562, 0.233333, 1, 0.0482546, 0.00426751, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119575, -0.198099, 0.979611, 0.3, 1, 0.0386131, -0.00596975, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.0033852, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453926, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221376, -0.145362, 0.989027, 0.433333, 1, -0.00832673, -0.00954411, -0.124422, 0.992149, 0.466667, 1, 0.00392398, 0.0021902, -0.0994934, 0.995028, 0.5, 1, 0.0116836, -0.00580875, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699735, 0.997103, 0.566667, 1, -0.00257418, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424865, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.0011541, -0.0633663, -0.0170996, 0.997843, 0.666667, 1, 0.0253717, -0.0308428, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361606, 0.0147042, 0.998802) tracks/30/type = "rotation_3d" tracks/30/imported = true tracks/30/enabled = true -tracks/30/path = NodePath("Armature/Skeleton3D:RightHandIndex1") +tracks/30/path = NodePath("Armature/Skeleton3D:RightHandThumb1") tracks/30/interp = 1 tracks/30/loop_wrap = true -tracks/30/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413035, 0.762927, 0.0333333, 1, 0.644197, -0.0352977, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386176, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710745, 0.233333, 1, 0.700811, -0.0461124, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450533, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.0431439, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406008, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.034496, -0.040742, 0.766613, 0.433333, 1, 0.623047, -0.0313889, -0.0385695, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313776, -0.0385631, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413034, 0.762927) +tracks/30/keys = PackedFloat32Array(0, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904033, 0.6, 1, 0.308597, -0.0420998, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416885, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411955, -0.301251, 0.901457, 0.7, 1, 0.30787, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406095, -0.30591, 0.900026) tracks/31/type = "rotation_3d" tracks/31/imported = true tracks/31/enabled = true -tracks/31/path = NodePath("Armature/Skeleton3D:RightHandIndex2") +tracks/31/path = NodePath("Armature/Skeleton3D:RightHandThumb2") tracks/31/interp = 1 tracks/31/loop_wrap = true -tracks/31/keys = PackedFloat32Array(0, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0333333, 1, 0.730233, 0.016586, -0.0346924, 0.682115, 0.0666667, 1, 0.73494, 0.0167267, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.0364541, 0.633157, 0.2, 1, 0.780907, 0.0181381, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366008, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357459, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164646, -0.034527, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155707, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324553, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325855, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.0164129, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346932, 0.682116) +tracks/31/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0333333, 1, 0.0201262, 0.0865756, 0.129257, 0.98762, 0.0666667, 1, 0.020139, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876264, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876489, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.0202159, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201768, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866743, 0.136175, 0.98668, 0.733333, 1, 0.0201263, 0.0865728, 0.129256, 0.98762) tracks/32/type = "rotation_3d" tracks/32/imported = true tracks/32/enabled = true -tracks/32/path = NodePath("Armature/Skeleton3D:RightHandIndex3") +tracks/32/path = NodePath("Armature/Skeleton3D:RightHandThumb3") tracks/32/interp = 1 tracks/32/loop_wrap = true -tracks/32/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293116, 0.0349869, 0.998198) +tracks/32/keys = PackedFloat32Array(0, 1, 0.00976302, 0.0248162, 0.0847954, 0.996041) tracks/33/type = "rotation_3d" tracks/33/imported = true tracks/33/enabled = true -tracks/33/path = NodePath("Armature/Skeleton3D:RightHandMiddle1") +tracks/33/path = NodePath("Armature/Skeleton3D:RightHandIndex1") tracks/33/interp = 1 tracks/33/loop_wrap = true -tracks/33/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127912, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127912, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877367, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694776, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576307, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568746, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.0064164, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.00771241, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.00940201, -0.0710963, 0.713582, 0.366667, 1, 0.681566, 0.0113149, -0.0698226, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684407, 0.743568, 0.433333, 1, 0.648435, 0.0153312, -0.0670631, 0.758156, 0.466667, 1, 0.633118, 0.0171399, -0.0657853, 0.771065, 0.5, 1, 0.620432, 0.0186102, -0.0647228, 0.781363, 0.533333, 1, 0.611791, 0.0195977, -0.0639972, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637294, 0.790657, 0.6, 1, 0.615101, 0.0192208, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153387, -0.0670595, 0.758208, 0.7, 1, 0.663141, 0.0135587, -0.0682872, 0.745249, 0.733333, 1, 0.669257, 0.0128193, -0.0687975, 0.739728) +tracks/33/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413035, 0.762927, 0.0333333, 1, 0.644197, -0.0352977, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386176, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710745, 0.233333, 1, 0.700811, -0.0461124, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450533, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.0431439, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406008, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.034496, -0.040742, 0.766613, 0.433333, 1, 0.623047, -0.0313889, -0.0385695, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313776, -0.0385631, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413034, 0.762927) tracks/34/type = "rotation_3d" tracks/34/imported = true tracks/34/enabled = true -tracks/34/path = NodePath("Armature/Skeleton3D:RightHandMiddle2") +tracks/34/path = NodePath("Armature/Skeleton3D:RightHandIndex2") tracks/34/interp = 1 tracks/34/loop_wrap = true -tracks/34/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393926, -0.0481365, 0.717164, 0.0333333, 1, 0.69524, -0.000393928, -0.0481365, 0.717164, 0.0666667, 1, 0.700191, -0.00015201, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424646, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115037, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.0018257, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226935, -0.0504461, 0.660947, 0.233333, 1, 0.749262, 0.00229839, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203039, -0.0502507, 0.666157, 0.3, 1, 0.734752, 0.00154512, -0.049861, 0.676499, 0.333333, 1, 0.722127, 0.000915058, -0.0493113, 0.69, 0.366667, 1, 0.707223, 0.000186701, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583917, -0.0479369, 0.721163, 0.433333, 1, 0.674935, -0.00134013, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202527, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258364, -0.0459559, 0.760605, 0.533333, 1, 0.639129, -0.00295938, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309705, -0.04542, 0.770334, 0.6, 1, 0.642368, -0.00281582, -0.0457149, 0.765027, 0.633333, 1, 0.657343, -0.00214425, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134191, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668969, -0.0478572, 0.722912, 0.733333, 1, 0.695241, -0.000377186, -0.0481114, 0.717165) +tracks/34/keys = PackedFloat32Array(0, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0333333, 1, 0.730233, 0.016586, -0.0346924, 0.682115, 0.0666667, 1, 0.73494, 0.0167267, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.0364541, 0.633157, 0.2, 1, 0.780907, 0.0181381, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366008, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357459, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164646, -0.034527, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155707, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324553, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325855, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.0164129, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346932, 0.682116) tracks/35/type = "rotation_3d" tracks/35/imported = true tracks/35/enabled = true -tracks/35/path = NodePath("Armature/Skeleton3D:RightHandMiddle3") +tracks/35/path = NodePath("Armature/Skeleton3D:RightHandIndex3") tracks/35/interp = 1 tracks/35/loop_wrap = true -tracks/35/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421394, 0.00652644, 0.999528) +tracks/35/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293116, 0.0349869, 0.998198) tracks/36/type = "rotation_3d" tracks/36/imported = true tracks/36/enabled = true -tracks/36/path = NodePath("Armature/Skeleton3D:RightHandRing1") +tracks/36/path = NodePath("Armature/Skeleton3D:RightHandMiddle1") tracks/36/interp = 1 tracks/36/loop_wrap = true -tracks/36/keys = PackedFloat32Array(0, 1, 0.717657, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717657, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723869, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743453, 0.0717598, -0.0757841, 0.660594, 0.366667, 1, 0.729163, 0.071379, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709409, -0.0738055, 0.692949, 0.433333, 1, 0.698129, 0.0704752, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717662, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709403, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703726, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.66673, 0.0694647, -0.0705909, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.0715919, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.07275, 0.708829, 0.7, 1, 0.711927, 0.0708897, -0.0736893, 0.69477, 0.733333, 1, 0.717654, 0.0710514, -0.0740854, 0.688793) +tracks/36/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127912, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127912, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877367, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694776, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576307, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568746, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.0064164, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.00771241, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.00940201, -0.0710963, 0.713582, 0.366667, 1, 0.681566, 0.0113149, -0.0698226, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684407, 0.743568, 0.433333, 1, 0.648435, 0.0153312, -0.0670631, 0.758156, 0.466667, 1, 0.633118, 0.0171399, -0.0657853, 0.771065, 0.5, 1, 0.620432, 0.0186102, -0.0647228, 0.781363, 0.533333, 1, 0.611791, 0.0195977, -0.0639972, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637294, 0.790657, 0.6, 1, 0.615101, 0.0192208, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153387, -0.0670595, 0.758208, 0.7, 1, 0.663141, 0.0135587, -0.0682872, 0.745249, 0.733333, 1, 0.669257, 0.0128193, -0.0687975, 0.739728) tracks/37/type = "rotation_3d" tracks/37/imported = true tracks/37/enabled = true -tracks/37/path = NodePath("Armature/Skeleton3D:RightHandRing2") +tracks/37/path = NodePath("Armature/Skeleton3D:RightHandMiddle2") tracks/37/interp = 1 tracks/37/loop_wrap = true -tracks/37/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166189, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166189, 0.716045, 0.0666667, 1, 0.700474, 0.0571447, -0.0168004, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591749, -0.0180232, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182937, 0.659715, 0.233333, 1, 0.749456, 0.0596087, -0.0183106, 0.65911, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582694, -0.0174588, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170085, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165236, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.015593, 0.748794, 0.5, 1, 0.647952, 0.0543763, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540965, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558266, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.056581, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046) +tracks/37/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393926, -0.0481365, 0.717164, 0.0333333, 1, 0.69524, -0.000393928, -0.0481365, 0.717164, 0.0666667, 1, 0.700191, -0.00015201, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424646, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115037, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.0018257, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226935, -0.0504461, 0.660947, 0.233333, 1, 0.749262, 0.00229839, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203039, -0.0502507, 0.666157, 0.3, 1, 0.734752, 0.00154512, -0.049861, 0.676499, 0.333333, 1, 0.722127, 0.000915058, -0.0493113, 0.69, 0.366667, 1, 0.707223, 0.000186701, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583917, -0.0479369, 0.721163, 0.433333, 1, 0.674935, -0.00134013, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202527, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258364, -0.0459559, 0.760605, 0.533333, 1, 0.639129, -0.00295938, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309705, -0.04542, 0.770334, 0.6, 1, 0.642368, -0.00281582, -0.0457149, 0.765027, 0.633333, 1, 0.657343, -0.00214425, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134191, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668969, -0.0478572, 0.722912, 0.733333, 1, 0.695241, -0.000377186, -0.0481114, 0.717165) tracks/38/type = "rotation_3d" tracks/38/imported = true tracks/38/enabled = true -tracks/38/path = NodePath("Armature/Skeleton3D:RightHandPinky1") +tracks/38/path = NodePath("Armature/Skeleton3D:RightHandMiddle3") tracks/38/interp = 1 tracks/38/loop_wrap = true -tracks/38/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.034115, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350074, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355874, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591027, 0.333333, 1, 0.784977, 0.125062, -0.033806, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328246, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289443, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.0284019, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714118, 0.119623, -0.0286097, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295732, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307074, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316449, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320575, 0.635775) +tracks/38/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421394, 0.00652644, 0.999528) tracks/39/type = "rotation_3d" tracks/39/imported = true tracks/39/enabled = true -tracks/39/path = NodePath("Armature/Skeleton3D:RightHandPinky2") +tracks/39/path = NodePath("Armature/Skeleton3D:RightHandRing1") tracks/39/interp = 1 tracks/39/loop_wrap = true -tracks/39/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521871, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521871, -0.0254054, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774827, 0.0532493, -0.0244805, 0.629451, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586187, 0.266667, 1, 0.803387, 0.0552458, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231856, 0.603629, 0.333333, 1, 0.783766, 0.0538746, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247524, 0.634896, 0.4, 1, 0.755845, 0.0519257, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272203, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486273, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484281, -0.028378, 0.706306, 0.6, 1, 0.7115, 0.0488337, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273511, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518112, -0.0257223, 0.654098, 0.733333, 1, 0.759581, 0.0521872, -0.0254054, 0.647817) +tracks/39/keys = PackedFloat32Array(0, 1, 0.717657, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717657, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723869, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743453, 0.0717598, -0.0757841, 0.660594, 0.366667, 1, 0.729163, 0.071379, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709409, -0.0738055, 0.692949, 0.433333, 1, 0.698129, 0.0704752, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717662, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709403, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703726, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.66673, 0.0694647, -0.0705909, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.0715919, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.07275, 0.708829, 0.7, 1, 0.711927, 0.0708897, -0.0736893, 0.69477, 0.733333, 1, 0.717654, 0.0710514, -0.0740854, 0.688793) tracks/40/type = "rotation_3d" tracks/40/imported = true tracks/40/enabled = true -tracks/40/path = NodePath("Armature/Skeleton3D:RightHandPinky3") +tracks/40/path = NodePath("Armature/Skeleton3D:RightHandRing2") tracks/40/interp = 1 tracks/40/loop_wrap = true -tracks/40/keys = PackedFloat32Array(0, 1, 0.0255872, -0.01748, 0.0251249, 0.999204) +tracks/40/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166189, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166189, 0.716045, 0.0666667, 1, 0.700474, 0.0571447, -0.0168004, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591749, -0.0180232, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182937, 0.659715, 0.233333, 1, 0.749456, 0.0596087, -0.0183106, 0.65911, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582694, -0.0174588, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170085, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165236, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.015593, 0.748794, 0.5, 1, 0.647952, 0.0543763, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540965, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558266, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.056581, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046) tracks/41/type = "rotation_3d" tracks/41/imported = true tracks/41/enabled = true -tracks/41/path = NodePath("Armature/Skeleton3D:LeftUpLeg") +tracks/41/path = NodePath("Armature/Skeleton3D:RightHandRing3") tracks/41/interp = 1 tracks/41/loop_wrap = true -tracks/41/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145149, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317615, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.031326, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547007, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707004, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239613, 0.968075, 0.0293481, 0.3, 1, -0.0552124, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496817, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147107, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482536, 0.106907, -0.992634, 0.0303423, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849535, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676991, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734646, 0.136843, -0.987833, 0.00798017, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.067857, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.016612, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584) +tracks/41/keys = PackedFloat32Array(0, 1, 0.0390606, 0.00579559, -0.00189733, 0.999218) tracks/42/type = "rotation_3d" tracks/42/imported = true tracks/42/enabled = true -tracks/42/path = NodePath("Armature/Skeleton3D:LeftLeg") +tracks/42/path = NodePath("Armature/Skeleton3D:RightHandPinky1") tracks/42/interp = 1 tracks/42/loop_wrap = true -tracks/42/keys = PackedFloat32Array(0, 1, -0.785768, -0.0734671, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718039, -0.0680974, 0.062085, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406656, 0.947712, 0.166667, 1, -0.210248, -0.0664878, 0.000532311, 0.975384, 0.2, 1, -0.20373, -0.0217434, -0.00964683, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614308, 0.984063, 0.266667, 1, -0.153767, -0.0204953, -0.00170942, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524163, 0.943736, 0.333333, 1, -0.456528, -0.00687827, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712827, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346262, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.0072919, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.0329099, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485732, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.0734671, 0.101798, 0.605647) +tracks/42/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.034115, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350074, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355874, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591027, 0.333333, 1, 0.784977, 0.125062, -0.033806, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328246, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289443, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.0284019, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714118, 0.119623, -0.0286097, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295732, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307074, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316449, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320575, 0.635775) tracks/43/type = "rotation_3d" tracks/43/imported = true tracks/43/enabled = true -tracks/43/path = NodePath("Armature/Skeleton3D:LeftFoot") +tracks/43/path = NodePath("Armature/Skeleton3D:RightHandPinky2") tracks/43/interp = 1 tracks/43/loop_wrap = true -tracks/43/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516565, 0.0795857, 0.787484, 0.0666667, 1, 0.625486, -0.000207846, -0.0268606, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.025914, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.0872051, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978842, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969846, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847227, 0.688084, 0.433333, 1, 0.542045, 0.039255, 0.0575828, 0.837454, 0.466667, 1, 0.417045, 0.027933, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158867, 0.00648576, 0.881786, 0.566667, 1, 0.470291, 0.00700166, -0.00994354, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.00213988, 0.865528, 0.633333, 1, 0.537694, 0.00718266, -0.00711224, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.034328, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484) +tracks/43/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521871, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521871, -0.0254054, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774827, 0.0532493, -0.0244805, 0.629451, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586187, 0.266667, 1, 0.803387, 0.0552458, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231856, 0.603629, 0.333333, 1, 0.783766, 0.0538746, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247524, 0.634896, 0.4, 1, 0.755845, 0.0519257, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272203, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486273, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484281, -0.028378, 0.706306, 0.6, 1, 0.7115, 0.0488337, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273511, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518112, -0.0257223, 0.654098, 0.733333, 1, 0.759581, 0.0521872, -0.0254054, 0.647817) tracks/44/type = "rotation_3d" tracks/44/imported = true tracks/44/enabled = true -tracks/44/path = NodePath("Armature/Skeleton3D:LeftToeBase") +tracks/44/path = NodePath("Armature/Skeleton3D:RightHandPinky3") tracks/44/interp = 1 tracks/44/loop_wrap = true -tracks/44/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.024166, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292442, 0.0519542, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426436, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166895, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.00772081, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543806, -0.0208247, 0.95303, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366421, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949874, 0.4, 1, 0.314272, -0.0306012, -0.0130049, 0.948751, 0.433333, 1, 0.500093, -0.00884653, -0.000505965, 0.865927, 0.466667, 1, 0.418454, 0.0248023, 0.01218, 0.907817, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270409, -0.0696821, -0.0285568, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242129, 0.95474, 0.6, 1, 0.296428, -0.0711175, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611756, -0.00930077, 0.95766, 0.666667, 1, 0.290514, -0.0883114, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274547, -0.0898635, -0.024166, 0.95706) +tracks/44/keys = PackedFloat32Array(0, 1, 0.0255872, -0.01748, 0.0251249, 0.999204) tracks/45/type = "rotation_3d" tracks/45/imported = true tracks/45/enabled = true -tracks/45/path = NodePath("Armature/Skeleton3D:RightUpLeg") +tracks/45/path = NodePath("Armature/Skeleton3D:LeftUpLeg") tracks/45/interp = 1 tracks/45/loop_wrap = true -tracks/45/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0333333, 1, 0.039538, -0.192852, -0.980195, 0.0214968, 0.0666667, 1, 0.0644895, -0.0232475, -0.997619, 0.00759192, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187737, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591498, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.04508, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288645, 0.399343, 0.912958, 0.078742, 0.433333, 1, -0.0246849, 0.446511, 0.892934, 0.0518426, 0.466667, 1, -0.00956222, 0.457756, 0.888846, 0.0178976, 0.5, 1, -0.00848458, 0.423861, 0.905675, 0.00468155, 0.533333, 1, -0.0113515, 0.406726, 0.913469, 0.00454905, 0.566667, 1, -0.012491, 0.394025, 0.919015, 2.03925e-05, 0.6, 1, 0.0182089, -0.354559, -0.934856, 0.00130756, 0.633333, 1, 0.0227266, -0.356627, -0.933965, 0.00330207, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.0051337, 0.7, 1, 0.0382455, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969) +tracks/45/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145149, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317615, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.031326, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547007, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707004, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239613, 0.968075, 0.0293481, 0.3, 1, -0.0552124, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496817, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147107, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482536, 0.106907, -0.992634, 0.0303423, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849535, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676991, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734646, 0.136843, -0.987833, 0.00798017, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.067857, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.016612, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584) tracks/46/type = "rotation_3d" tracks/46/imported = true tracks/46/enabled = true -tracks/46/path = NodePath("Armature/Skeleton3D:RightLeg") +tracks/46/path = NodePath("Armature/Skeleton3D:LeftLeg") tracks/46/interp = 1 tracks/46/loop_wrap = true -tracks/46/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313716, -0.00686419, 0.888331, 0.0333333, 1, -0.459142, 0.00313715, -0.00686419, 0.888331, 0.0666667, 1, -0.321819, -0.0375846, -0.00651503, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.00025345, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119298, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876559, -0.0137613, 0.847546, 0.266667, 1, -0.649473, 0.0506432, -0.00867341, 0.758647, 0.3, 1, -0.756318, 0.0421017, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407358, 0.0247846, 0.617739, 0.433333, 1, -0.678619, 0.0504597, 0.0151349, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933843, 0.860797, 0.5, 1, -0.269672, 0.083665, -0.00249725, 0.959308, 0.533333, 1, -0.179705, 0.0268817, 0.00313687, 0.983348, 0.566667, 1, -0.177113, -0.0245931, 0.00329862, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183951, 0.986591, 0.633333, 1, -0.281819, 0.00455347, 0.000516675, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.0319411, 0.0106455, 0.87131, 0.733333, 1, -0.459142, 0.00313716, -0.00686419, 0.888331) +tracks/46/keys = PackedFloat32Array(0, 1, -0.785768, -0.0734671, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718039, -0.0680974, 0.062085, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406656, 0.947712, 0.166667, 1, -0.210248, -0.0664878, 0.000532311, 0.975384, 0.2, 1, -0.20373, -0.0217434, -0.00964683, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614308, 0.984063, 0.266667, 1, -0.153767, -0.0204953, -0.00170942, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524163, 0.943736, 0.333333, 1, -0.456528, -0.00687827, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712827, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346262, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.0072919, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.0329099, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485732, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.0734671, 0.101798, 0.605647) tracks/47/type = "rotation_3d" tracks/47/imported = true tracks/47/enabled = true -tracks/47/path = NodePath("Armature/Skeleton3D:RightFoot") +tracks/47/path = NodePath("Armature/Skeleton3D:LeftFoot") tracks/47/interp = 1 tracks/47/loop_wrap = true -tracks/47/keys = PackedFloat32Array(0, 1, 0.670436, -0.0306987, -0.0445175, 0.739995, 0.0333333, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.0332589, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780932, 0.0420878, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.082636, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386514, 0.0516442, 0.934384, 0.266667, 1, 0.387986, -0.00141703, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399391, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219003, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380238, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368344, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.030935, -0.0280916, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.00988061, 0.847581, 0.566667, 1, 0.566946, -0.00315885, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.0045067, 0.0183883, 0.830173, 0.633333, 1, 0.501942, -0.0412583, -0.051505, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306987, -0.0445175, 0.739995) +tracks/47/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516565, 0.0795857, 0.787484, 0.0666667, 1, 0.625486, -0.000207846, -0.0268606, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.025914, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.0872051, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978842, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969846, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847227, 0.688084, 0.433333, 1, 0.542045, 0.039255, 0.0575828, 0.837454, 0.466667, 1, 0.417045, 0.027933, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158867, 0.00648576, 0.881786, 0.566667, 1, 0.470291, 0.00700166, -0.00994354, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.00213988, 0.865528, 0.633333, 1, 0.537694, 0.00718266, -0.00711224, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.034328, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484) tracks/48/type = "rotation_3d" tracks/48/imported = true tracks/48/enabled = true -tracks/48/path = NodePath("Armature/Skeleton3D:RightToeBase") +tracks/48/path = NodePath("Armature/Skeleton3D:LeftToeBase") tracks/48/interp = 1 tracks/48/loop_wrap = true -tracks/48/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760794, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.0066433, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298993, 0.917118, 0.166667, 1, 0.319659, 0.00436588, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730303, 0.00561744, 0.930859, 0.233333, 1, 0.428249, -0.0431, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.0561309, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301156, 0.908035, 0.333333, 1, 0.399181, -0.0295483, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298553, 0.0283043, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437218, 0.934186, 0.5, 1, 0.344986, -0.0457679, 0.0658479, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638602, 0.938774, 0.566667, 1, 0.332132, -0.0567951, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.0636259, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678352, 0.949788, 0.7, 1, 0.31548, -0.0127809, 0.0709526, 0.946189, 0.733333, 1, 0.35791, -0.014836, 0.0751641, 0.930608) +tracks/48/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.024166, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292442, 0.0519542, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426436, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166895, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.00772081, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543806, -0.0208247, 0.95303, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366421, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949874, 0.4, 1, 0.314272, -0.0306012, -0.0130049, 0.948751, 0.433333, 1, 0.500093, -0.00884653, -0.000505965, 0.865927, 0.466667, 1, 0.418454, 0.0248023, 0.01218, 0.907817, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270409, -0.0696821, -0.0285568, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242129, 0.95474, 0.6, 1, 0.296428, -0.0711175, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611756, -0.00930077, 0.95766, 0.666667, 1, 0.290514, -0.0883114, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274547, -0.0898635, -0.024166, 0.95706) tracks/49/type = "rotation_3d" tracks/49/imported = true tracks/49/enabled = true -tracks/49/path = NodePath("Armature/Skeleton3D:LeftHandThumb3") +tracks/49/path = NodePath("Armature/Skeleton3D:RightUpLeg") tracks/49/interp = 1 tracks/49/loop_wrap = true -tracks/49/keys = PackedFloat32Array(0, 1, 0.00975412, -0.0248018, -0.084795, 0.996042) +tracks/49/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0333333, 1, 0.039538, -0.192852, -0.980195, 0.0214968, 0.0666667, 1, 0.0644895, -0.0232475, -0.997619, 0.00759192, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187737, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591498, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.04508, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288645, 0.399343, 0.912958, 0.078742, 0.433333, 1, -0.0246849, 0.446511, 0.892934, 0.0518426, 0.466667, 1, -0.00956222, 0.457756, 0.888846, 0.0178976, 0.5, 1, -0.00848458, 0.423861, 0.905675, 0.00468155, 0.533333, 1, -0.0113515, 0.406726, 0.913469, 0.00454905, 0.566667, 1, -0.012491, 0.394025, 0.919015, 2.03925e-05, 0.6, 1, 0.0182089, -0.354559, -0.934856, 0.00130756, 0.633333, 1, 0.0227266, -0.356627, -0.933965, 0.00330207, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.0051337, 0.7, 1, 0.0382455, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969) tracks/50/type = "rotation_3d" tracks/50/imported = true tracks/50/enabled = true -tracks/50/path = NodePath("Armature/Skeleton3D:LeftHandRing3") +tracks/50/path = NodePath("Armature/Skeleton3D:RightLeg") tracks/50/interp = 1 tracks/50/loop_wrap = true -tracks/50/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578869, 0.0018961, 0.999218) +tracks/50/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313716, -0.00686419, 0.888331, 0.0333333, 1, -0.459142, 0.00313715, -0.00686419, 0.888331, 0.0666667, 1, -0.321819, -0.0375846, -0.00651503, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.00025345, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119298, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876559, -0.0137613, 0.847546, 0.266667, 1, -0.649473, 0.0506432, -0.00867341, 0.758647, 0.3, 1, -0.756318, 0.0421017, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407358, 0.0247846, 0.617739, 0.433333, 1, -0.678619, 0.0504597, 0.0151349, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933843, 0.860797, 0.5, 1, -0.269672, 0.083665, -0.00249725, 0.959308, 0.533333, 1, -0.179705, 0.0268817, 0.00313687, 0.983348, 0.566667, 1, -0.177113, -0.0245931, 0.00329862, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183951, 0.986591, 0.633333, 1, -0.281819, 0.00455347, 0.000516675, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.0319411, 0.0106455, 0.87131, 0.733333, 1, -0.459142, 0.00313716, -0.00686419, 0.888331) tracks/51/type = "rotation_3d" tracks/51/imported = true tracks/51/enabled = true -tracks/51/path = NodePath("Armature/Skeleton3D:RightHandThumb3") +tracks/51/path = NodePath("Armature/Skeleton3D:RightFoot") tracks/51/interp = 1 tracks/51/loop_wrap = true -tracks/51/keys = PackedFloat32Array(0, 1, 0.00976312, 0.0248163, 0.0847953, 0.996041) +tracks/51/keys = PackedFloat32Array(0, 1, 0.670436, -0.0306987, -0.0445175, 0.739995, 0.0333333, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.0332589, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780932, 0.0420878, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.082636, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386514, 0.0516442, 0.934384, 0.266667, 1, 0.387986, -0.00141703, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399391, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219003, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380238, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368344, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.030935, -0.0280916, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.00988061, 0.847581, 0.566667, 1, 0.566946, -0.00315885, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.0045067, 0.0183883, 0.830173, 0.633333, 1, 0.501942, -0.0412583, -0.051505, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306987, -0.0445175, 0.739995) tracks/52/type = "rotation_3d" tracks/52/imported = true tracks/52/enabled = true -tracks/52/path = NodePath("Armature/Skeleton3D:RightHandRing3") +tracks/52/path = NodePath("Armature/Skeleton3D:RightToeBase") tracks/52/interp = 1 tracks/52/loop_wrap = true -tracks/52/keys = PackedFloat32Array(0, 1, 0.0390606, 0.0057956, -0.00189736, 0.999218) +tracks/52/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760794, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.0066433, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298993, 0.917118, 0.166667, 1, 0.319659, 0.00436588, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730303, 0.00561744, 0.930859, 0.233333, 1, 0.428249, -0.0431, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.0561309, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301156, 0.908035, 0.333333, 1, 0.399181, -0.0295483, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298553, 0.0283043, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437218, 0.934186, 0.5, 1, 0.344986, -0.0457679, 0.0658479, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638602, 0.938774, 0.566667, 1, 0.332132, -0.0567951, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.0636259, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678352, 0.949788, 0.7, 1, 0.31548, -0.0127809, 0.0709526, 0.946189, 0.733333, 1, 0.35791, -0.014836, 0.0751641, 0.930608) tracks/53/type = "method" tracks/53/imported = false tracks/53/enabled = true diff --git a/mirror-godot-app/player/animations/humanoid/running_forward_right.tres b/mirror-godot-app/player/animations/humanoid/running_forward_right.tres index d67fb885..53ae833f 100644 --- a/mirror-godot-app/player/animations/humanoid/running_forward_right.tres +++ b/mirror-godot-app/player/animations/humanoid/running_forward_right.tres @@ -98,283 +98,283 @@ tracks/12/keys = PackedFloat32Array(0, 1, 0.0201837, -0.0870503, -0.153598, 0.98 tracks/13/type = "rotation_3d" tracks/13/imported = true tracks/13/enabled = true -tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandIndex1") +tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandThumb3") tracks/13/interp = 1 tracks/13/loop_wrap = true -tracks/13/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213445, 0.0975407, 0.728636, 0.0333333, 1, 0.677916, -0.00213445, 0.0975407, 0.728636, 0.0666667, 1, 0.668375, -0.0032584, 0.0968562, 0.737484, 0.1, 1, 0.645165, -0.00593607, 0.0951568, 0.758072, 0.133333, 1, 0.616642, -0.00912462, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.011786, 0.0911071, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.011831, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106598, 0.0919229, 0.792691, 0.333333, 1, 0.615871, -0.00920902, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758913, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.00591056, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428562, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282618, 0.0971211, 0.734095, 0.5, 1, 0.682034, -0.00164531, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854123, 0.0982994, 0.718411, 0.566667, 1, 0.691031, -0.000566363, 0.098468, 0.716086, 0.6, 1, 0.689678, -0.000729711, 0.0983731, 0.717403, 0.633333, 1, 0.686441, -0.00111849, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158243, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197136, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212436, 0.0975592, 0.728636) +tracks/13/keys = PackedFloat32Array(0, 1, 0.00975413, -0.0248017, -0.0847951, 0.996042) tracks/14/type = "rotation_3d" tracks/14/imported = true tracks/14/enabled = true -tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex2") +tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex1") tracks/14/interp = 1 tracks/14/loop_wrap = true -tracks/14/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141414, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134935, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.0127009, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120243, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607543, -0.0120133, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123132, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126805, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.0145269, 0.0478793, 0.715219, 0.533333, 1, 0.70364, -0.0147135, 0.0482916, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484412, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483573, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476248, 0.719188) +tracks/14/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213445, 0.0975407, 0.728636, 0.0333333, 1, 0.677916, -0.00213445, 0.0975407, 0.728636, 0.0666667, 1, 0.668375, -0.0032584, 0.0968562, 0.737484, 0.1, 1, 0.645165, -0.00593607, 0.0951568, 0.758072, 0.133333, 1, 0.616642, -0.00912462, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.011786, 0.0911071, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.011831, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106598, 0.0919229, 0.792691, 0.333333, 1, 0.615871, -0.00920902, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758913, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.00591056, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428562, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282618, 0.0971211, 0.734095, 0.5, 1, 0.682034, -0.00164531, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854123, 0.0982994, 0.718411, 0.566667, 1, 0.691031, -0.000566363, 0.098468, 0.716086, 0.6, 1, 0.689678, -0.000729711, 0.0983731, 0.717403, 0.633333, 1, 0.686441, -0.00111849, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158243, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197136, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212436, 0.0975592, 0.728636) tracks/15/type = "rotation_3d" tracks/15/imported = true tracks/15/enabled = true -tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex3") +tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex2") tracks/15/interp = 1 tracks/15/loop_wrap = true -tracks/15/keys = PackedFloat32Array(0, 1, 0.0389577, -0.0293203, -0.0349865, 0.998198) +tracks/15/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141414, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134935, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.0127009, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120243, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607543, -0.0120133, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123132, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126805, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.0145269, 0.0478793, 0.715219, 0.533333, 1, 0.70364, -0.0147135, 0.0482916, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484412, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483573, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476248, 0.719188) tracks/16/type = "rotation_3d" tracks/16/imported = true tracks/16/enabled = true -tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1") +tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandIndex3") tracks/16/interp = 1 tracks/16/loop_wrap = true -tracks/16/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190721, 0.0936015, 0.717324, 0.0333333, 1, 0.69016, -0.0190721, 0.0936015, 0.717324, 0.0666667, 1, 0.680739, -0.0199366, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.0220051, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605307, -0.0264649, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.0865641, 0.798629, 0.233333, 1, 0.597608, -0.0270893, 0.0867706, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873314, 0.791062, 0.3, 1, 0.615675, -0.0256129, 0.0881562, 0.782635, 0.333333, 1, 0.628846, -0.0245104, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232734, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219855, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207322, 0.0923301, 0.734455, 0.466667, 1, 0.684377, -0.0196012, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939047, 0.713364, 0.533333, 1, 0.700741, -0.0180761, 0.0943368, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179753, 0.0943986, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936788, 0.717322) +tracks/16/keys = PackedFloat32Array(0, 1, 0.0389577, -0.0293203, -0.0349865, 0.998198) tracks/17/type = "rotation_3d" tracks/17/imported = true tracks/17/enabled = true -tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2") +tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1") tracks/17/interp = 1 tracks/17/loop_wrap = true -tracks/17/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302835, 0.0589127, 0.752497, 0.0333333, 1, 0.655949, 0.00302835, 0.0589127, 0.752497, 0.0666667, 1, 0.646075, 0.00345845, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448305, 0.056673, 0.780881, 0.133333, 1, 0.592669, 0.00570134, 0.0547034, 0.803566, 0.166667, 1, 0.567386, 0.0067155, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713885, 0.0522624, 0.829092, 0.233333, 1, 0.559389, 0.00702992, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.006732, 0.052965, 0.822018, 0.3, 1, 0.578166, 0.00628578, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573273, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.0051142, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447226, 0.0566867, 0.780692, 0.433333, 1, 0.636957, 0.00385016, 0.0576578, 0.768731, 0.466667, 1, 0.64989, 0.00329118, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283812, 0.05919, 0.748736, 0.533333, 1, 0.667055, 0.00253428, 0.0596373, 0.742613, 0.566667, 1, 0.669536, 0.00241667, 0.0597881, 0.740365, 0.6, 1, 0.668133, 0.00248306, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594901, 0.744663, 0.666667, 1, 0.660757, 0.00281641, 0.0592284, 0.748254, 0.7, 1, 0.657371, 0.00297577, 0.059023, 0.751246, 0.733333, 1, 0.655946, 0.00303648, 0.0589525, 0.752496) +tracks/17/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190721, 0.0936015, 0.717324, 0.0333333, 1, 0.69016, -0.0190721, 0.0936015, 0.717324, 0.0666667, 1, 0.680739, -0.0199366, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.0220051, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605307, -0.0264649, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.0865641, 0.798629, 0.233333, 1, 0.597608, -0.0270893, 0.0867706, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873314, 0.791062, 0.3, 1, 0.615675, -0.0256129, 0.0881562, 0.782635, 0.333333, 1, 0.628846, -0.0245104, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232734, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219855, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207322, 0.0923301, 0.734455, 0.466667, 1, 0.684377, -0.0196012, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939047, 0.713364, 0.533333, 1, 0.700741, -0.0180761, 0.0943368, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179753, 0.0943986, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936788, 0.717322) tracks/18/type = "rotation_3d" tracks/18/imported = true tracks/18/enabled = true -tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3") +tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2") tracks/18/interp = 1 tracks/18/loop_wrap = true -tracks/18/keys = PackedFloat32Array(0, 1, 0.0297256, 0.00421692, -0.00652393, 0.999528) +tracks/18/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302835, 0.0589127, 0.752497, 0.0333333, 1, 0.655949, 0.00302835, 0.0589127, 0.752497, 0.0666667, 1, 0.646075, 0.00345845, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448305, 0.056673, 0.780881, 0.133333, 1, 0.592669, 0.00570134, 0.0547034, 0.803566, 0.166667, 1, 0.567386, 0.0067155, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713885, 0.0522624, 0.829092, 0.233333, 1, 0.559389, 0.00702992, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.006732, 0.052965, 0.822018, 0.3, 1, 0.578166, 0.00628578, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573273, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.0051142, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447226, 0.0566867, 0.780692, 0.433333, 1, 0.636957, 0.00385016, 0.0576578, 0.768731, 0.466667, 1, 0.64989, 0.00329118, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283812, 0.05919, 0.748736, 0.533333, 1, 0.667055, 0.00253428, 0.0596373, 0.742613, 0.566667, 1, 0.669536, 0.00241667, 0.0597881, 0.740365, 0.6, 1, 0.668133, 0.00248306, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594901, 0.744663, 0.666667, 1, 0.660757, 0.00281641, 0.0592284, 0.748254, 0.7, 1, 0.657371, 0.00297577, 0.059023, 0.751246, 0.733333, 1, 0.655946, 0.00303648, 0.0589525, 0.752496) tracks/19/type = "rotation_3d" tracks/19/imported = true tracks/19/enabled = true -tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandRing1") +tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3") tracks/19/interp = 1 tracks/19/loop_wrap = true -tracks/19/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796064, 0.0652599, 0.687701, 0.0333333, 1, 0.718659, -0.0796064, 0.0652599, 0.687701, 0.0666667, 1, 0.709595, -0.0794685, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635253, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619847, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776572, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601924, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.060604, 0.765113, 0.3, 1, 0.64674, -0.0781691, 0.0612096, 0.756221, 0.333333, 1, 0.659494, -0.0784709, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649393, 0.693506, 0.5, 1, 0.722568, -0.0796734, 0.0654538, 0.683567, 0.533333, 1, 0.728831, -0.079754, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659433, 0.674375, 0.6, 1, 0.729817, -0.0797676, 0.0658651, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656798, 0.679091, 0.666667, 1, 0.723068, -0.0796919, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796549, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.065175, 0.687702) +tracks/19/keys = PackedFloat32Array(0, 1, 0.0297256, 0.00421692, -0.00652393, 0.999528) tracks/20/type = "rotation_3d" tracks/20/imported = true tracks/20/enabled = true -tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing2") +tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing1") tracks/20/interp = 1 tracks/20/loop_wrap = true -tracks/20/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546983, -0.000231819, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231819, 0.751472, 0.0666667, 1, 0.647621, -0.0541726, -0.000275294, 0.760034, 0.1, 1, 0.623635, -0.0528811, -0.000379362, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503344, 0.80267, 0.166667, 1, 0.56893, -0.0498675, -0.000606366, 0.820872, 0.2, 1, 0.558161, -0.0492645, -0.000649487, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.00063841, 0.826386, 0.266667, 1, 0.568497, -0.0498439, -0.000608324, 0.821174, 0.3, 1, 0.57971, -0.0504687, -0.000563096, 0.813258, 0.333333, 1, 0.593422, -0.0512282, -0.000507916, 0.80326, 0.366667, 1, 0.608503, -0.0520573, -0.000445178, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380441, 0.779735, 0.433333, 1, 0.638503, -0.053686, -0.000317738, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.00026139, 0.756753, 0.5, 1, 0.661759, -0.0549277, -0.000215595, 0.747702, 0.533333, 1, 0.668599, -0.0552899, -0.000185364, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158802, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173617, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193947, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212528, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.00024152, 0.750218, 0.733333, 1, 0.657494, -0.0547048, -0.00026803, 0.751471) +tracks/20/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796064, 0.0652599, 0.687701, 0.0333333, 1, 0.718659, -0.0796064, 0.0652599, 0.687701, 0.0666667, 1, 0.709595, -0.0794685, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635253, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619847, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776572, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601924, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.060604, 0.765113, 0.3, 1, 0.64674, -0.0781691, 0.0612096, 0.756221, 0.333333, 1, 0.659494, -0.0784709, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649393, 0.693506, 0.5, 1, 0.722568, -0.0796734, 0.0654538, 0.683567, 0.533333, 1, 0.728831, -0.079754, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659433, 0.674375, 0.6, 1, 0.729817, -0.0797676, 0.0658651, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656798, 0.679091, 0.666667, 1, 0.723068, -0.0796919, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796549, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.065175, 0.687702) tracks/21/type = "rotation_3d" tracks/21/imported = true tracks/21/enabled = true -tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandPinky1") +tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandRing2") tracks/21/interp = 1 tracks/21/loop_wrap = true -tracks/21/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.00805691, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.00805691, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764199, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.00664673, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545061, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444281, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401892, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.0041275, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.00442544, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487034, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.00541865, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602801, 0.72551, 0.4, 1, 0.689633, -0.132154, 0.0066563, 0.711967, 0.433333, 1, 0.703025, -0.13282, 0.00726129, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.00780149, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.00823677, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852745, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864419, 0.667161, 0.6, 1, 0.731411, -0.134106, 0.00857981, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.0084309, 0.671908, 0.666667, 1, 0.724715, -0.133821, 0.00825945, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.0080994, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802212, 0.680574) +tracks/21/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546983, -0.000231819, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231819, 0.751472, 0.0666667, 1, 0.647621, -0.0541726, -0.000275294, 0.760034, 0.1, 1, 0.623635, -0.0528811, -0.000379362, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503344, 0.80267, 0.166667, 1, 0.56893, -0.0498675, -0.000606366, 0.820872, 0.2, 1, 0.558161, -0.0492645, -0.000649487, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.00063841, 0.826386, 0.266667, 1, 0.568497, -0.0498439, -0.000608324, 0.821174, 0.3, 1, 0.57971, -0.0504687, -0.000563096, 0.813258, 0.333333, 1, 0.593422, -0.0512282, -0.000507916, 0.80326, 0.366667, 1, 0.608503, -0.0520573, -0.000445178, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380441, 0.779735, 0.433333, 1, 0.638503, -0.053686, -0.000317738, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.00026139, 0.756753, 0.5, 1, 0.661759, -0.0549277, -0.000215595, 0.747702, 0.533333, 1, 0.668599, -0.0552899, -0.000185364, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158802, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173617, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193947, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212528, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.00024152, 0.750218, 0.733333, 1, 0.657494, -0.0547048, -0.00026803, 0.751471) tracks/22/type = "rotation_3d" tracks/22/imported = true tracks/22/enabled = true -tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandPinky2") +tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandRing3") tracks/22/interp = 1 tracks/22/loop_wrap = true -tracks/22/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427103, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427103, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421752, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.0083839, 0.718324, 0.133333, 1, 0.667381, -0.0392576, -0.00558584, 0.74366, 0.166667, 1, 0.643982, -0.0378658, -0.00323502, 0.764096, 0.2, 1, 0.633982, -0.0372712, -0.00224833, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250139, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319554, 0.764436, 0.3, 1, 0.653972, -0.038461, -0.00423234, 0.755528, 0.333333, 1, 0.666648, -0.0392154, -0.00551261, 0.74432, 0.366667, 1, 0.680551, -0.0400427, -0.0069375, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840884, 0.718112, 0.433333, 1, 0.708075, -0.041682, -0.00982831, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121246, 0.682757, 0.533333, 1, 0.735496, -0.0433154, -0.0128098, 0.676021, 0.566667, 1, 0.737747, -0.043449, -0.0130591, 0.673552, 0.6, 1, 0.736474, -0.0433725, -0.0129175, 0.67495, 0.633333, 1, 0.733429, -0.0431905, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.042972, -0.0121766, 0.682227, 0.7, 1, 0.726697, -0.0427877, -0.0118384, 0.685523, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901) +tracks/22/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578867, 0.00189616, 0.999218) tracks/23/type = "rotation_3d" tracks/23/imported = true tracks/23/enabled = true -tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky3") +tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky1") tracks/23/interp = 1 tracks/23/loop_wrap = true -tracks/23/keys = PackedFloat32Array(0, 1, 0.0255861, 0.0174793, -0.0251263, 0.999204) +tracks/23/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.00805691, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.00805691, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764199, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.00664673, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545061, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444281, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401892, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.0041275, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.00442544, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487034, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.00541865, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602801, 0.72551, 0.4, 1, 0.689633, -0.132154, 0.0066563, 0.711967, 0.433333, 1, 0.703025, -0.13282, 0.00726129, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.00780149, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.00823677, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852745, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864419, 0.667161, 0.6, 1, 0.731411, -0.134106, 0.00857981, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.0084309, 0.671908, 0.666667, 1, 0.724715, -0.133821, 0.00825945, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.0080994, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802212, 0.680574) tracks/24/type = "rotation_3d" tracks/24/imported = true tracks/24/enabled = true -tracks/24/path = NodePath("Armature/Skeleton3D:RightShoulder") +tracks/24/path = NodePath("Armature/Skeleton3D:LeftHandPinky2") tracks/24/interp = 1 tracks/24/loop_wrap = true -tracks/24/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.3, 1, 0.573839, -0.42871, 0.515092, 0.470741, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529408, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.51068, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.46325) +tracks/24/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427103, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427103, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421752, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.0083839, 0.718324, 0.133333, 1, 0.667381, -0.0392576, -0.00558584, 0.74366, 0.166667, 1, 0.643982, -0.0378658, -0.00323502, 0.764096, 0.2, 1, 0.633982, -0.0372712, -0.00224833, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250139, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319554, 0.764436, 0.3, 1, 0.653972, -0.038461, -0.00423234, 0.755528, 0.333333, 1, 0.666648, -0.0392154, -0.00551261, 0.74432, 0.366667, 1, 0.680551, -0.0400427, -0.0069375, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840884, 0.718112, 0.433333, 1, 0.708075, -0.041682, -0.00982831, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121246, 0.682757, 0.533333, 1, 0.735496, -0.0433154, -0.0128098, 0.676021, 0.566667, 1, 0.737747, -0.043449, -0.0130591, 0.673552, 0.6, 1, 0.736474, -0.0433725, -0.0129175, 0.67495, 0.633333, 1, 0.733429, -0.0431905, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.042972, -0.0121766, 0.682227, 0.7, 1, 0.726697, -0.0427877, -0.0118384, 0.685523, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901) tracks/25/type = "rotation_3d" tracks/25/imported = true tracks/25/enabled = true -tracks/25/path = NodePath("Armature/Skeleton3D:RightArm") +tracks/25/path = NodePath("Armature/Skeleton3D:LeftHandPinky3") tracks/25/interp = 1 tracks/25/loop_wrap = true -tracks/25/keys = PackedFloat32Array(0, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0333333, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0666667, 1, 0.4932, -0.00577496, 0.10936, 0.862995, 0.1, 1, 0.494668, 0.00221616, 0.102625, 0.862999, 0.133333, 1, 0.492282, 0.00553501, 0.092007, 0.865542, 0.166667, 1, 0.485147, 0.00380212, 0.0854059, 0.870244, 0.2, 1, 0.483592, -0.00617368, 0.0784748, 0.871747, 0.233333, 1, 0.48495, -0.0194623, 0.0923898, 0.86943, 0.266667, 1, 0.49311, -0.0386558, 0.142561, 0.857336, 0.3, 1, 0.503595, -0.0563376, 0.181478, 0.842784, 0.333333, 1, 0.515495, -0.0688457, 0.198466, 0.830744, 0.366667, 1, 0.505846, -0.0785529, 0.225899, 0.828806, 0.4, 1, 0.475457, -0.0925303, 0.270694, 0.831928, 0.433333, 1, 0.427208, -0.108737, 0.33599, 0.832334, 0.466667, 1, 0.386379, -0.119526, 0.384066, 0.830011, 0.5, 1, 0.372772, -0.12412, 0.404117, 0.826029, 0.533333, 1, 0.387829, -0.128779, 0.417989, 0.811351, 0.566667, 1, 0.403089, -0.13196, 0.418163, 0.803272, 0.6, 1, 0.412559, -0.128201, 0.389678, 0.813333, 0.633333, 1, 0.424646, -0.115691, 0.340117, 0.831031, 0.666667, 1, 0.450303, -0.0907648, 0.271644, 0.845694, 0.7, 1, 0.475429, -0.0564125, 0.195077, 0.855996, 0.733333, 1, 0.488072, -0.0335139, 0.162464, 0.856895) +tracks/25/keys = PackedFloat32Array(0, 1, 0.0255861, 0.0174793, -0.0251263, 0.999204) tracks/26/type = "rotation_3d" tracks/26/imported = true tracks/26/enabled = true -tracks/26/path = NodePath("Armature/Skeleton3D:RightForeArm") +tracks/26/path = NodePath("Armature/Skeleton3D:RightShoulder") tracks/26/interp = 1 tracks/26/loop_wrap = true -tracks/26/keys = PackedFloat32Array(0, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0666667, 1, 0.0246689, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429584, -0.0179811, -0.775661, 0.62943, 0.133333, 1, 0.0578759, -0.00440458, -0.800882, 0.596003, 0.166667, 1, 0.0534109, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615824, -0.0253127, -0.822496, 0.56486, 0.233333, 1, 0.0676034, -0.028705, -0.819344, 0.568579, 0.266667, 1, 0.0616387, -0.03676, -0.81292, 0.577937, 0.3, 1, 0.0559946, -0.042949, -0.783491, 0.617383, 0.333333, 1, 0.0471891, -0.0634444, -0.714013, 0.695653, 0.366667, 1, 0.0510632, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617364, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788547, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740617, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.70762, 0.69443, 0.633333, 1, 0.0458403, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371625, -0.0765627, -0.704687, 0.704395, 0.733333, 1, 0.0274295, -0.0572102, -0.730987, 0.679435) +tracks/26/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.3, 1, 0.573839, -0.42871, 0.515092, 0.470741, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529408, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.51068, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.46325) tracks/27/type = "rotation_3d" tracks/27/imported = true tracks/27/enabled = true -tracks/27/path = NodePath("Armature/Skeleton3D:RightHand") +tracks/27/path = NodePath("Armature/Skeleton3D:RightArm") tracks/27/interp = 1 tracks/27/loop_wrap = true -tracks/27/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.0037682, 0.998946, 0.1, 1, -0.0237054, 0.00266068, -0.0418228, 0.99884, 0.133333, 1, 0.00585682, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384396, 0.00889189, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344872, -0.174226, 0.983562, 0.233333, 1, 0.0482546, 0.00426752, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119574, -0.198099, 0.979611, 0.3, 1, 0.038613, -0.00596977, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.00338521, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453922, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221376, -0.145362, 0.989027, 0.433333, 1, -0.00832675, -0.0095441, -0.124422, 0.992149, 0.466667, 1, 0.00392401, 0.0021902, -0.0994933, 0.995028, 0.5, 1, 0.0116835, -0.00580874, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699736, 0.997103, 0.566667, 1, -0.00257414, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424905, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.00115412, -0.0633663, -0.0170996, 0.997843, 0.666667, 1, 0.0253717, -0.0308428, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361605, 0.0147042, 0.998802) +tracks/27/keys = PackedFloat32Array(0, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0333333, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0666667, 1, 0.4932, -0.00577496, 0.10936, 0.862995, 0.1, 1, 0.494668, 0.00221616, 0.102625, 0.862999, 0.133333, 1, 0.492282, 0.00553501, 0.092007, 0.865542, 0.166667, 1, 0.485147, 0.00380212, 0.0854059, 0.870244, 0.2, 1, 0.483592, -0.00617368, 0.0784748, 0.871747, 0.233333, 1, 0.48495, -0.0194623, 0.0923898, 0.86943, 0.266667, 1, 0.49311, -0.0386558, 0.142561, 0.857336, 0.3, 1, 0.503595, -0.0563376, 0.181478, 0.842784, 0.333333, 1, 0.515495, -0.0688457, 0.198466, 0.830744, 0.366667, 1, 0.505846, -0.0785529, 0.225899, 0.828806, 0.4, 1, 0.475457, -0.0925303, 0.270694, 0.831928, 0.433333, 1, 0.427208, -0.108737, 0.33599, 0.832334, 0.466667, 1, 0.386379, -0.119526, 0.384066, 0.830011, 0.5, 1, 0.372772, -0.12412, 0.404117, 0.826029, 0.533333, 1, 0.387829, -0.128779, 0.417989, 0.811351, 0.566667, 1, 0.403089, -0.13196, 0.418163, 0.803272, 0.6, 1, 0.412559, -0.128201, 0.389678, 0.813333, 0.633333, 1, 0.424646, -0.115691, 0.340117, 0.831031, 0.666667, 1, 0.450303, -0.0907648, 0.271644, 0.845694, 0.7, 1, 0.475429, -0.0564125, 0.195077, 0.855996, 0.733333, 1, 0.488072, -0.0335139, 0.162464, 0.856895) tracks/28/type = "rotation_3d" tracks/28/imported = true tracks/28/enabled = true -tracks/28/path = NodePath("Armature/Skeleton3D:RightHandThumb1") +tracks/28/path = NodePath("Armature/Skeleton3D:RightForeArm") tracks/28/interp = 1 tracks/28/loop_wrap = true -tracks/28/keys = PackedFloat32Array(0, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904033, 0.6, 1, 0.308597, -0.0420997, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416886, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411955, -0.301251, 0.901457, 0.7, 1, 0.307871, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406094, -0.30591, 0.900026) +tracks/28/keys = PackedFloat32Array(0, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0666667, 1, 0.0246689, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429584, -0.0179811, -0.775661, 0.62943, 0.133333, 1, 0.0578759, -0.00440458, -0.800882, 0.596003, 0.166667, 1, 0.0534109, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615824, -0.0253127, -0.822496, 0.56486, 0.233333, 1, 0.0676034, -0.028705, -0.819344, 0.568579, 0.266667, 1, 0.0616387, -0.03676, -0.81292, 0.577937, 0.3, 1, 0.0559946, -0.042949, -0.783491, 0.617383, 0.333333, 1, 0.0471891, -0.0634444, -0.714013, 0.695653, 0.366667, 1, 0.0510632, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617364, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788547, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740617, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.70762, 0.69443, 0.633333, 1, 0.0458403, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371625, -0.0765627, -0.704687, 0.704395, 0.733333, 1, 0.0274295, -0.0572102, -0.730987, 0.679435) tracks/29/type = "rotation_3d" tracks/29/imported = true tracks/29/enabled = true -tracks/29/path = NodePath("Armature/Skeleton3D:RightHandThumb2") +tracks/29/path = NodePath("Armature/Skeleton3D:RightHand") tracks/29/interp = 1 tracks/29/loop_wrap = true -tracks/29/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865755, 0.129257, 0.98762, 0.0333333, 1, 0.0201263, 0.0865755, 0.129257, 0.98762, 0.0666667, 1, 0.0201391, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876264, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876488, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.0202159, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201769, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866742, 0.136175, 0.986681, 0.733333, 1, 0.0201264, 0.0865728, 0.129256, 0.98762) +tracks/29/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.0037682, 0.998946, 0.1, 1, -0.0237054, 0.00266068, -0.0418228, 0.99884, 0.133333, 1, 0.00585682, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384396, 0.00889189, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344872, -0.174226, 0.983562, 0.233333, 1, 0.0482546, 0.00426752, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119574, -0.198099, 0.979611, 0.3, 1, 0.038613, -0.00596977, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.00338521, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453922, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221376, -0.145362, 0.989027, 0.433333, 1, -0.00832675, -0.0095441, -0.124422, 0.992149, 0.466667, 1, 0.00392401, 0.0021902, -0.0994933, 0.995028, 0.5, 1, 0.0116835, -0.00580874, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699736, 0.997103, 0.566667, 1, -0.00257414, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424905, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.00115412, -0.0633663, -0.0170996, 0.997843, 0.666667, 1, 0.0253717, -0.0308428, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361605, 0.0147042, 0.998802) tracks/30/type = "rotation_3d" tracks/30/imported = true tracks/30/enabled = true -tracks/30/path = NodePath("Armature/Skeleton3D:RightHandIndex1") +tracks/30/path = NodePath("Armature/Skeleton3D:RightHandThumb1") tracks/30/interp = 1 tracks/30/loop_wrap = true -tracks/30/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0333333, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386176, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710744, 0.233333, 1, 0.700811, -0.0461124, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450532, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.043144, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406008, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.034496, -0.040742, 0.766613, 0.433333, 1, 0.623048, -0.0313888, -0.0385694, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313775, -0.038563, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413033, 0.762927) +tracks/30/keys = PackedFloat32Array(0, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904033, 0.6, 1, 0.308597, -0.0420997, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416886, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411955, -0.301251, 0.901457, 0.7, 1, 0.307871, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406094, -0.30591, 0.900026) tracks/31/type = "rotation_3d" tracks/31/imported = true tracks/31/enabled = true -tracks/31/path = NodePath("Armature/Skeleton3D:RightHandIndex2") +tracks/31/path = NodePath("Armature/Skeleton3D:RightHandThumb2") tracks/31/interp = 1 tracks/31/loop_wrap = true -tracks/31/keys = PackedFloat32Array(0, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0333333, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0666667, 1, 0.73494, 0.0167268, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.036454, 0.633157, 0.2, 1, 0.780908, 0.0181381, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366008, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357459, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164646, -0.034527, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155706, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324554, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325855, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.016413, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346932, 0.682116) +tracks/31/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865755, 0.129257, 0.98762, 0.0333333, 1, 0.0201263, 0.0865755, 0.129257, 0.98762, 0.0666667, 1, 0.0201391, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876264, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876488, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.0202159, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201769, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866742, 0.136175, 0.986681, 0.733333, 1, 0.0201264, 0.0865728, 0.129256, 0.98762) tracks/32/type = "rotation_3d" tracks/32/imported = true tracks/32/enabled = true -tracks/32/path = NodePath("Armature/Skeleton3D:RightHandIndex3") +tracks/32/path = NodePath("Armature/Skeleton3D:RightHandThumb3") tracks/32/interp = 1 tracks/32/loop_wrap = true -tracks/32/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293116, 0.0349869, 0.998198) +tracks/32/keys = PackedFloat32Array(0, 1, 0.00976307, 0.0248162, 0.0847954, 0.996041) tracks/33/type = "rotation_3d" tracks/33/imported = true tracks/33/enabled = true -tracks/33/path = NodePath("Armature/Skeleton3D:RightHandMiddle1") +tracks/33/path = NodePath("Armature/Skeleton3D:RightHandIndex1") tracks/33/interp = 1 tracks/33/loop_wrap = true -tracks/33/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877367, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694775, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576308, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568746, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.00641641, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.00771242, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.009402, -0.0710963, 0.713582, 0.366667, 1, 0.681567, 0.0113148, -0.0698225, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684406, 0.743568, 0.433333, 1, 0.648435, 0.0153313, -0.0670631, 0.758156, 0.466667, 1, 0.633117, 0.01714, -0.0657853, 0.771065, 0.5, 1, 0.620432, 0.0186101, -0.0647228, 0.781363, 0.533333, 1, 0.611792, 0.0195977, -0.0639973, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637294, 0.790657, 0.6, 1, 0.615102, 0.0192208, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153387, -0.0670595, 0.758208, 0.7, 1, 0.663141, 0.0135587, -0.0682872, 0.74525, 0.733333, 1, 0.669257, 0.0128193, -0.0687975, 0.739728) +tracks/33/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0333333, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386176, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710744, 0.233333, 1, 0.700811, -0.0461124, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450532, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.043144, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406008, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.034496, -0.040742, 0.766613, 0.433333, 1, 0.623048, -0.0313888, -0.0385694, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313775, -0.038563, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413033, 0.762927) tracks/34/type = "rotation_3d" tracks/34/imported = true tracks/34/enabled = true -tracks/34/path = NodePath("Armature/Skeleton3D:RightHandMiddle2") +tracks/34/path = NodePath("Armature/Skeleton3D:RightHandIndex2") tracks/34/interp = 1 tracks/34/loop_wrap = true -tracks/34/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393967, -0.0481365, 0.717164, 0.0333333, 1, 0.69524, -0.000393967, -0.0481365, 0.717164, 0.0666667, 1, 0.700191, -0.000152005, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424648, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115036, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.00182571, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226936, -0.050446, 0.660947, 0.233333, 1, 0.749262, 0.00229836, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203035, -0.0502507, 0.666157, 0.3, 1, 0.734752, 0.00154512, -0.0498611, 0.676499, 0.333333, 1, 0.722127, 0.000915066, -0.0493114, 0.69, 0.366667, 1, 0.707223, 0.000186735, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583922, -0.0479368, 0.721163, 0.433333, 1, 0.674935, -0.00134017, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202533, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258365, -0.0459558, 0.760605, 0.533333, 1, 0.639129, -0.0029594, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309705, -0.04542, 0.770334, 0.6, 1, 0.642368, -0.00281586, -0.0457149, 0.765027, 0.633333, 1, 0.657343, -0.00214425, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134196, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668985, -0.0478571, 0.722912, 0.733333, 1, 0.695241, -0.000377098, -0.0481114, 0.717165) +tracks/34/keys = PackedFloat32Array(0, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0333333, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0666667, 1, 0.73494, 0.0167268, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.036454, 0.633157, 0.2, 1, 0.780908, 0.0181381, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366008, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357459, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164646, -0.034527, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155706, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324554, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325855, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.016413, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346932, 0.682116) tracks/35/type = "rotation_3d" tracks/35/imported = true tracks/35/enabled = true -tracks/35/path = NodePath("Armature/Skeleton3D:RightHandMiddle3") +tracks/35/path = NodePath("Armature/Skeleton3D:RightHandIndex3") tracks/35/interp = 1 tracks/35/loop_wrap = true -tracks/35/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421394, 0.00652639, 0.999528) +tracks/35/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293116, 0.0349869, 0.998198) tracks/36/type = "rotation_3d" tracks/36/imported = true tracks/36/enabled = true -tracks/36/path = NodePath("Armature/Skeleton3D:RightHandRing1") +tracks/36/path = NodePath("Armature/Skeleton3D:RightHandMiddle1") tracks/36/interp = 1 tracks/36/loop_wrap = true -tracks/36/keys = PackedFloat32Array(0, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723869, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743454, 0.0717598, -0.075784, 0.660594, 0.366667, 1, 0.729163, 0.0713791, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709408, -0.0738056, 0.692949, 0.433333, 1, 0.698129, 0.0704753, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717663, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709402, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703727, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.666731, 0.0694647, -0.0705908, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.0715919, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.0727501, 0.708828, 0.7, 1, 0.711927, 0.0708897, -0.0736892, 0.69477, 0.733333, 1, 0.717654, 0.0710515, -0.0740854, 0.688793) +tracks/36/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877367, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694775, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576308, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568746, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.00641641, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.00771242, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.009402, -0.0710963, 0.713582, 0.366667, 1, 0.681567, 0.0113148, -0.0698225, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684406, 0.743568, 0.433333, 1, 0.648435, 0.0153313, -0.0670631, 0.758156, 0.466667, 1, 0.633117, 0.01714, -0.0657853, 0.771065, 0.5, 1, 0.620432, 0.0186101, -0.0647228, 0.781363, 0.533333, 1, 0.611792, 0.0195977, -0.0639973, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637294, 0.790657, 0.6, 1, 0.615102, 0.0192208, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153387, -0.0670595, 0.758208, 0.7, 1, 0.663141, 0.0135587, -0.0682872, 0.74525, 0.733333, 1, 0.669257, 0.0128193, -0.0687975, 0.739728) tracks/37/type = "rotation_3d" tracks/37/imported = true tracks/37/enabled = true -tracks/37/path = NodePath("Armature/Skeleton3D:RightHandRing2") +tracks/37/path = NodePath("Armature/Skeleton3D:RightHandMiddle2") tracks/37/interp = 1 tracks/37/loop_wrap = true -tracks/37/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0666667, 1, 0.700474, 0.0571446, -0.0168004, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591749, -0.0180231, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182936, 0.659715, 0.233333, 1, 0.749456, 0.0596087, -0.0183106, 0.659111, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582695, -0.0174587, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170086, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165237, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.0155931, 0.748794, 0.5, 1, 0.647951, 0.0543764, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540964, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558267, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.056581, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046) +tracks/37/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393967, -0.0481365, 0.717164, 0.0333333, 1, 0.69524, -0.000393967, -0.0481365, 0.717164, 0.0666667, 1, 0.700191, -0.000152005, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424648, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115036, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.00182571, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226936, -0.050446, 0.660947, 0.233333, 1, 0.749262, 0.00229836, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203035, -0.0502507, 0.666157, 0.3, 1, 0.734752, 0.00154512, -0.0498611, 0.676499, 0.333333, 1, 0.722127, 0.000915066, -0.0493114, 0.69, 0.366667, 1, 0.707223, 0.000186735, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583922, -0.0479368, 0.721163, 0.433333, 1, 0.674935, -0.00134017, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202533, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258365, -0.0459558, 0.760605, 0.533333, 1, 0.639129, -0.0029594, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309705, -0.04542, 0.770334, 0.6, 1, 0.642368, -0.00281586, -0.0457149, 0.765027, 0.633333, 1, 0.657343, -0.00214425, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134196, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668985, -0.0478571, 0.722912, 0.733333, 1, 0.695241, -0.000377098, -0.0481114, 0.717165) tracks/38/type = "rotation_3d" tracks/38/imported = true tracks/38/enabled = true -tracks/38/path = NodePath("Armature/Skeleton3D:RightHandPinky1") +tracks/38/path = NodePath("Armature/Skeleton3D:RightHandMiddle3") tracks/38/interp = 1 tracks/38/loop_wrap = true -tracks/38/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.0341149, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350074, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355875, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591028, 0.333333, 1, 0.784977, 0.125062, -0.033806, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328245, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289442, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.028402, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714117, 0.119623, -0.0286096, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295732, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307074, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316448, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320574, 0.635775) +tracks/38/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421394, 0.00652639, 0.999528) tracks/39/type = "rotation_3d" tracks/39/imported = true tracks/39/enabled = true -tracks/39/path = NodePath("Armature/Skeleton3D:RightHandPinky2") +tracks/39/path = NodePath("Armature/Skeleton3D:RightHandRing1") tracks/39/interp = 1 tracks/39/loop_wrap = true -tracks/39/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774827, 0.0532493, -0.0244805, 0.629451, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586186, 0.266667, 1, 0.803387, 0.0552459, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231856, 0.603629, 0.333333, 1, 0.783766, 0.0538746, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247524, 0.634896, 0.4, 1, 0.755845, 0.0519258, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272202, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486273, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484282, -0.028378, 0.706305, 0.6, 1, 0.7115, 0.0488338, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273512, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518113, -0.0257223, 0.654098, 0.733333, 1, 0.759582, 0.0521871, -0.0254055, 0.647817) +tracks/39/keys = PackedFloat32Array(0, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723869, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743454, 0.0717598, -0.075784, 0.660594, 0.366667, 1, 0.729163, 0.0713791, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709408, -0.0738056, 0.692949, 0.433333, 1, 0.698129, 0.0704753, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717663, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709402, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703727, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.666731, 0.0694647, -0.0705908, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.0715919, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.0727501, 0.708828, 0.7, 1, 0.711927, 0.0708897, -0.0736892, 0.69477, 0.733333, 1, 0.717654, 0.0710515, -0.0740854, 0.688793) tracks/40/type = "rotation_3d" tracks/40/imported = true tracks/40/enabled = true -tracks/40/path = NodePath("Armature/Skeleton3D:RightHandPinky3") +tracks/40/path = NodePath("Armature/Skeleton3D:RightHandRing2") tracks/40/interp = 1 tracks/40/loop_wrap = true -tracks/40/keys = PackedFloat32Array(0, 1, 0.0255871, -0.01748, 0.0251249, 0.999204) +tracks/40/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0666667, 1, 0.700474, 0.0571446, -0.0168004, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591749, -0.0180231, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182936, 0.659715, 0.233333, 1, 0.749456, 0.0596087, -0.0183106, 0.659111, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582695, -0.0174587, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170086, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165237, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.0155931, 0.748794, 0.5, 1, 0.647951, 0.0543764, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540964, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558267, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.056581, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046) tracks/41/type = "rotation_3d" tracks/41/imported = true tracks/41/enabled = true -tracks/41/path = NodePath("Armature/Skeleton3D:LeftUpLeg") +tracks/41/path = NodePath("Armature/Skeleton3D:RightHandRing3") tracks/41/interp = 1 tracks/41/loop_wrap = true -tracks/41/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145148, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317613, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.031326, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547007, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707004, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239614, 0.968075, 0.0293481, 0.3, 1, -0.0552125, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496818, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147106, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482536, 0.106907, -0.992634, 0.0303424, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849536, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676992, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734646, 0.136843, -0.987833, 0.00798017, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.0678569, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.016612, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584) +tracks/41/keys = PackedFloat32Array(0, 1, 0.0390606, 0.00579563, -0.00189731, 0.999218) tracks/42/type = "rotation_3d" tracks/42/imported = true tracks/42/enabled = true -tracks/42/path = NodePath("Armature/Skeleton3D:LeftLeg") +tracks/42/path = NodePath("Armature/Skeleton3D:RightHandPinky1") tracks/42/interp = 1 tracks/42/loop_wrap = true -tracks/42/keys = PackedFloat32Array(0, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718038, -0.0680975, 0.0620851, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406657, 0.947712, 0.166667, 1, -0.210248, -0.0664877, 0.000532262, 0.975384, 0.2, 1, -0.20373, -0.0217435, -0.00964688, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614306, 0.984063, 0.266667, 1, -0.153767, -0.0204952, -0.00170945, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524164, 0.943736, 0.333333, 1, -0.456528, -0.00687824, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712824, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346261, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.00729188, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.03291, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485733, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.073467, 0.101798, 0.605647) +tracks/42/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.0341149, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350074, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355875, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591028, 0.333333, 1, 0.784977, 0.125062, -0.033806, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328245, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289442, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.028402, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714117, 0.119623, -0.0286096, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295732, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307074, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316448, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320574, 0.635775) tracks/43/type = "rotation_3d" tracks/43/imported = true tracks/43/enabled = true -tracks/43/path = NodePath("Armature/Skeleton3D:LeftFoot") +tracks/43/path = NodePath("Armature/Skeleton3D:RightHandPinky2") tracks/43/interp = 1 tracks/43/loop_wrap = true -tracks/43/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516564, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516564, 0.0795856, 0.787484, 0.0666667, 1, 0.625486, -0.000207878, -0.0268605, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.0259139, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.087205, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978841, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969845, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847226, 0.688084, 0.433333, 1, 0.542045, 0.0392549, 0.0575827, 0.837454, 0.466667, 1, 0.417045, 0.0279331, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158867, 0.00648574, 0.881786, 0.566667, 1, 0.470291, 0.00700172, -0.0099435, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.0021399, 0.865528, 0.633333, 1, 0.537694, 0.00718264, -0.00711229, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.034328, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516564, 0.0795856, 0.787484) +tracks/43/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774827, 0.0532493, -0.0244805, 0.629451, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586186, 0.266667, 1, 0.803387, 0.0552459, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231856, 0.603629, 0.333333, 1, 0.783766, 0.0538746, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247524, 0.634896, 0.4, 1, 0.755845, 0.0519258, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272202, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486273, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484282, -0.028378, 0.706305, 0.6, 1, 0.7115, 0.0488338, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273512, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518113, -0.0257223, 0.654098, 0.733333, 1, 0.759582, 0.0521871, -0.0254055, 0.647817) tracks/44/type = "rotation_3d" tracks/44/imported = true tracks/44/enabled = true -tracks/44/path = NodePath("Armature/Skeleton3D:LeftToeBase") +tracks/44/path = NodePath("Armature/Skeleton3D:RightHandPinky3") tracks/44/interp = 1 tracks/44/loop_wrap = true -tracks/44/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292444, 0.0519541, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426405, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166895, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.00772081, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543805, -0.0208246, 0.95303, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366422, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949875, 0.4, 1, 0.314272, -0.0306012, -0.013005, 0.948751, 0.433333, 1, 0.500093, -0.00884653, -0.000505973, 0.865927, 0.466667, 1, 0.418454, 0.0248024, 0.0121799, 0.907818, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270408, -0.0696822, -0.0285567, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242128, 0.95474, 0.6, 1, 0.296428, -0.0711175, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611757, -0.00930078, 0.95766, 0.666667, 1, 0.290514, -0.0883115, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274548, -0.0898634, -0.0241659, 0.95706) +tracks/44/keys = PackedFloat32Array(0, 1, 0.0255871, -0.01748, 0.0251249, 0.999204) tracks/45/type = "rotation_3d" tracks/45/imported = true tracks/45/enabled = true -tracks/45/path = NodePath("Armature/Skeleton3D:RightUpLeg") +tracks/45/path = NodePath("Armature/Skeleton3D:LeftUpLeg") tracks/45/interp = 1 tracks/45/loop_wrap = true -tracks/45/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214968, 0.0333333, 1, 0.0395379, -0.192852, -0.980195, 0.0214968, 0.0666667, 1, 0.0644894, -0.0232476, -0.997619, 0.00759192, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187736, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591499, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.0450799, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288644, 0.399343, 0.912958, 0.0787419, 0.433333, 1, -0.0246848, 0.446511, 0.892934, 0.0518426, 0.466667, 1, -0.00956216, 0.457756, 0.888846, 0.0178976, 0.5, 1, -0.00848459, 0.423861, 0.905675, 0.00468157, 0.533333, 1, -0.0113514, 0.406725, 0.913469, 0.00454904, 0.566667, 1, -0.0124911, 0.394025, 0.919015, 2.03684e-05, 0.6, 1, 0.0182089, -0.354559, -0.934855, 0.00130756, 0.633333, 1, 0.0227267, -0.356627, -0.933965, 0.00330203, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.00513372, 0.7, 1, 0.0382456, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214968) +tracks/45/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145148, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317613, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.031326, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547007, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707004, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239614, 0.968075, 0.0293481, 0.3, 1, -0.0552125, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496818, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147106, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482536, 0.106907, -0.992634, 0.0303424, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849536, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676992, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734646, 0.136843, -0.987833, 0.00798017, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.0678569, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.016612, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584) tracks/46/type = "rotation_3d" tracks/46/imported = true tracks/46/enabled = true -tracks/46/path = NodePath("Armature/Skeleton3D:RightLeg") +tracks/46/path = NodePath("Armature/Skeleton3D:LeftLeg") tracks/46/interp = 1 tracks/46/loop_wrap = true -tracks/46/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313709, -0.0068642, 0.888331, 0.0333333, 1, -0.459142, 0.00313709, -0.0068642, 0.888331, 0.0666667, 1, -0.321819, -0.0375845, -0.00651501, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.000253463, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119299, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876557, -0.0137614, 0.847546, 0.266667, 1, -0.649473, 0.0506433, -0.00867336, 0.758647, 0.3, 1, -0.756318, 0.0421018, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407357, 0.0247847, 0.617739, 0.433333, 1, -0.678618, 0.0504598, 0.0151348, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933843, 0.860797, 0.5, 1, -0.269672, 0.083665, -0.00249724, 0.959308, 0.533333, 1, -0.179705, 0.0268817, 0.00313685, 0.983348, 0.566667, 1, -0.177113, -0.0245931, 0.00329865, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183952, 0.986591, 0.633333, 1, -0.281819, 0.00455345, 0.000516682, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.031941, 0.0106455, 0.87131, 0.733333, 1, -0.459142, 0.00313709, -0.0068642, 0.888331) +tracks/46/keys = PackedFloat32Array(0, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718038, -0.0680975, 0.0620851, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406657, 0.947712, 0.166667, 1, -0.210248, -0.0664877, 0.000532262, 0.975384, 0.2, 1, -0.20373, -0.0217435, -0.00964688, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614306, 0.984063, 0.266667, 1, -0.153767, -0.0204952, -0.00170945, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524164, 0.943736, 0.333333, 1, -0.456528, -0.00687824, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712824, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346261, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.00729188, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.03291, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485733, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.073467, 0.101798, 0.605647) tracks/47/type = "rotation_3d" tracks/47/imported = true tracks/47/enabled = true -tracks/47/path = NodePath("Armature/Skeleton3D:RightFoot") +tracks/47/path = NodePath("Armature/Skeleton3D:LeftFoot") tracks/47/interp = 1 tracks/47/loop_wrap = true -tracks/47/keys = PackedFloat32Array(0, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0333333, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.0332589, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780932, 0.0420879, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.0826359, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386512, 0.0516442, 0.934383, 0.266667, 1, 0.387986, -0.001417, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399397, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219004, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380238, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368345, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.0309349, -0.0280917, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.0098806, 0.847581, 0.566667, 1, 0.566946, -0.00315883, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.00450673, 0.0183884, 0.830173, 0.633333, 1, 0.501942, -0.0412583, -0.0515051, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306986, -0.0445175, 0.739995) +tracks/47/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516564, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516564, 0.0795856, 0.787484, 0.0666667, 1, 0.625486, -0.000207878, -0.0268605, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.0259139, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.087205, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978841, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969845, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847226, 0.688084, 0.433333, 1, 0.542045, 0.0392549, 0.0575827, 0.837454, 0.466667, 1, 0.417045, 0.0279331, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158867, 0.00648574, 0.881786, 0.566667, 1, 0.470291, 0.00700172, -0.0099435, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.0021399, 0.865528, 0.633333, 1, 0.537694, 0.00718264, -0.00711229, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.034328, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516564, 0.0795856, 0.787484) tracks/48/type = "rotation_3d" tracks/48/imported = true tracks/48/enabled = true -tracks/48/path = NodePath("Armature/Skeleton3D:RightToeBase") +tracks/48/path = NodePath("Armature/Skeleton3D:LeftToeBase") tracks/48/interp = 1 tracks/48/loop_wrap = true -tracks/48/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751642, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751642, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760795, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.00664335, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298993, 0.917118, 0.166667, 1, 0.319659, 0.00436586, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730298, 0.00561747, 0.930859, 0.233333, 1, 0.428249, -0.0430999, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.056131, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301157, 0.908035, 0.333333, 1, 0.399181, -0.0295484, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298552, 0.0283043, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437219, 0.934186, 0.5, 1, 0.344986, -0.0457678, 0.065848, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638603, 0.938774, 0.566667, 1, 0.332132, -0.0567952, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.063626, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678353, 0.949788, 0.7, 1, 0.31548, -0.0127809, 0.0709526, 0.94619, 0.733333, 1, 0.35791, -0.014836, 0.0751642, 0.930608) +tracks/48/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292444, 0.0519541, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426405, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166895, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.00772081, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543805, -0.0208246, 0.95303, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366422, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949875, 0.4, 1, 0.314272, -0.0306012, -0.013005, 0.948751, 0.433333, 1, 0.500093, -0.00884653, -0.000505973, 0.865927, 0.466667, 1, 0.418454, 0.0248024, 0.0121799, 0.907818, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270408, -0.0696822, -0.0285567, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242128, 0.95474, 0.6, 1, 0.296428, -0.0711175, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611757, -0.00930078, 0.95766, 0.666667, 1, 0.290514, -0.0883115, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274548, -0.0898634, -0.0241659, 0.95706) tracks/49/type = "rotation_3d" tracks/49/imported = true tracks/49/enabled = true -tracks/49/path = NodePath("Armature/Skeleton3D:LeftHandThumb3") +tracks/49/path = NodePath("Armature/Skeleton3D:RightUpLeg") tracks/49/interp = 1 tracks/49/loop_wrap = true -tracks/49/keys = PackedFloat32Array(0, 1, 0.00975412, -0.0248018, -0.084795, 0.996042) +tracks/49/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214968, 0.0333333, 1, 0.0395379, -0.192852, -0.980195, 0.0214968, 0.0666667, 1, 0.0644894, -0.0232476, -0.997619, 0.00759192, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187736, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591499, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.0450799, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288644, 0.399343, 0.912958, 0.0787419, 0.433333, 1, -0.0246848, 0.446511, 0.892934, 0.0518426, 0.466667, 1, -0.00956216, 0.457756, 0.888846, 0.0178976, 0.5, 1, -0.00848459, 0.423861, 0.905675, 0.00468157, 0.533333, 1, -0.0113514, 0.406725, 0.913469, 0.00454904, 0.566667, 1, -0.0124911, 0.394025, 0.919015, 2.03684e-05, 0.6, 1, 0.0182089, -0.354559, -0.934855, 0.00130756, 0.633333, 1, 0.0227267, -0.356627, -0.933965, 0.00330203, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.00513372, 0.7, 1, 0.0382456, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214968) tracks/50/type = "rotation_3d" tracks/50/imported = true tracks/50/enabled = true -tracks/50/path = NodePath("Armature/Skeleton3D:LeftHandRing3") +tracks/50/path = NodePath("Armature/Skeleton3D:RightLeg") tracks/50/interp = 1 tracks/50/loop_wrap = true -tracks/50/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578869, 0.0018961, 0.999218) +tracks/50/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313709, -0.0068642, 0.888331, 0.0333333, 1, -0.459142, 0.00313709, -0.0068642, 0.888331, 0.0666667, 1, -0.321819, -0.0375845, -0.00651501, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.000253463, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119299, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876557, -0.0137614, 0.847546, 0.266667, 1, -0.649473, 0.0506433, -0.00867336, 0.758647, 0.3, 1, -0.756318, 0.0421018, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407357, 0.0247847, 0.617739, 0.433333, 1, -0.678618, 0.0504598, 0.0151348, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933843, 0.860797, 0.5, 1, -0.269672, 0.083665, -0.00249724, 0.959308, 0.533333, 1, -0.179705, 0.0268817, 0.00313685, 0.983348, 0.566667, 1, -0.177113, -0.0245931, 0.00329865, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183952, 0.986591, 0.633333, 1, -0.281819, 0.00455345, 0.000516682, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.031941, 0.0106455, 0.87131, 0.733333, 1, -0.459142, 0.00313709, -0.0068642, 0.888331) tracks/51/type = "rotation_3d" tracks/51/imported = true tracks/51/enabled = true -tracks/51/path = NodePath("Armature/Skeleton3D:RightHandThumb3") +tracks/51/path = NodePath("Armature/Skeleton3D:RightFoot") tracks/51/interp = 1 tracks/51/loop_wrap = true -tracks/51/keys = PackedFloat32Array(0, 1, 0.00976312, 0.0248163, 0.0847953, 0.996041) +tracks/51/keys = PackedFloat32Array(0, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0333333, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.0332589, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780932, 0.0420879, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.0826359, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386512, 0.0516442, 0.934383, 0.266667, 1, 0.387986, -0.001417, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399397, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219004, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380238, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368345, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.0309349, -0.0280917, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.0098806, 0.847581, 0.566667, 1, 0.566946, -0.00315883, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.00450673, 0.0183884, 0.830173, 0.633333, 1, 0.501942, -0.0412583, -0.0515051, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306986, -0.0445175, 0.739995) tracks/52/type = "rotation_3d" tracks/52/imported = true tracks/52/enabled = true -tracks/52/path = NodePath("Armature/Skeleton3D:RightHandRing3") +tracks/52/path = NodePath("Armature/Skeleton3D:RightToeBase") tracks/52/interp = 1 tracks/52/loop_wrap = true -tracks/52/keys = PackedFloat32Array(0, 1, 0.0390606, 0.0057956, -0.00189736, 0.999218) +tracks/52/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751642, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751642, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760795, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.00664335, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298993, 0.917118, 0.166667, 1, 0.319659, 0.00436586, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730298, 0.00561747, 0.930859, 0.233333, 1, 0.428249, -0.0430999, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.056131, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301157, 0.908035, 0.333333, 1, 0.399181, -0.0295484, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298552, 0.0283043, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437219, 0.934186, 0.5, 1, 0.344986, -0.0457678, 0.065848, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638603, 0.938774, 0.566667, 1, 0.332132, -0.0567952, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.063626, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678353, 0.949788, 0.7, 1, 0.31548, -0.0127809, 0.0709526, 0.94619, 0.733333, 1, 0.35791, -0.014836, 0.0751642, 0.930608) tracks/53/type = "method" tracks/53/imported = false tracks/53/enabled = true diff --git a/mirror-godot-app/player/cameras/camera_manager.tscn b/mirror-godot-app/player/cameras/camera_manager.tscn index 41c66928..fbd08201 100644 --- a/mirror-godot-app/player/cameras/camera_manager.tscn +++ b/mirror-godot-app/player/cameras/camera_manager.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=6 format=3 uid="uid://brbtsnjio4p2m"] +[gd_scene load_steps=5 format=3 uid="uid://brbtsnjio4p2m"] [ext_resource type="Script" path="res://player/cameras/camera_manager.gd" id="1_sgi5b"] [ext_resource type="PackedScene" uid="uid://g08bytt518wj" path="res://player/cameras/head/player_head_camera.tscn" id="2_h612i"] [ext_resource type="PackedScene" uid="uid://h5gnmb66fkgi" path="res://player/cameras/free/free_camera.tscn" id="4_35k1r"] [ext_resource type="Script" path="res://player/cameras/placement_preview.gd" id="5_h3wxg"] -[ext_resource type="PackedScene" uid="uid://clraq8sj7pby6" path="res://player/cameras/voxel_viewer/camera_voxel_viewer.tscn" id="6_n4xo0"] [node name="CameraManager" type="Node"] script = ExtResource("1_sgi5b") @@ -23,14 +22,13 @@ audio_listener_enable_3d = true size = Vector2i(2560, 1440) render_target_update_mode = 4 -[node name="PlayerHeadCamera" parent="SubViewportContainer/SubViewport" instance=ExtResource("2_h612i")] +[node name="PlayerHeadCamera" parent="SubViewportContainer/SubViewport" node_paths=PackedStringArray("_camera") instance=ExtResource("2_h612i")] +_camera = NodePath("CameraRecoilOffset/ThirdPersonCameraArm/ThirdPersonCamera") -[node name="FreeCamera" parent="SubViewportContainer/SubViewport" instance=ExtResource("4_35k1r")] +[node name="FreeCamera" parent="SubViewportContainer/SubViewport" node_paths=PackedStringArray("_camera") instance=ExtResource("4_35k1r")] +_camera = NodePath("Camera") [node name="PlacementPreview" type="Node3D" parent="SubViewportContainer/SubViewport"] script = ExtResource("5_h3wxg") [node name="JoltDebugGeometry3D" type="JoltDebugGeometry3D" parent="SubViewportContainer/SubViewport"] - -[node name="CameraVoxelViewer" parent="." node_paths=PackedStringArray("camera_manager") instance=ExtResource("6_n4xo0")] -camera_manager = NodePath("..") diff --git a/mirror-godot-app/player/character_models/astronaut/astronaut_updated.glb.import b/mirror-godot-app/player/character_models/astronaut/astronaut_updated.glb.import index 7c61c7b7..1b9e1acb 100644 --- a/mirror-godot-app/player/character_models/astronaut/astronaut_updated.glb.import +++ b/mirror-godot-app/player/character_models/astronaut/astronaut_updated.glb.import @@ -29,6 +29,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} fbx/importer=0 diff --git a/mirror-godot-app/player/vr/hand_l.glb.import b/mirror-godot-app/player/vr/hand_l.glb.import index 2dc15d6e..25498fcd 100644 --- a/mirror-godot-app/player/vr/hand_l.glb.import +++ b/mirror-godot-app/player/vr/hand_l.glb.import @@ -29,6 +29,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} fbx/importer=0 diff --git a/mirror-godot-app/player/vr/hand_r.glb.import b/mirror-godot-app/player/vr/hand_r.glb.import index b5c7f125..676d0a41 100644 --- a/mirror-godot-app/player/vr/hand_r.glb.import +++ b/mirror-godot-app/player/vr/hand_r.glb.import @@ -29,6 +29,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} fbx/importer=0 diff --git a/mirror-godot-app/project.godot b/mirror-godot-app/project.godot index 976b0cd9..26392bec 100644 --- a/mirror-godot-app/project.godot +++ b/mirror-godot-app/project.godot @@ -82,7 +82,7 @@ global_script_class_icons={ config/name="The Mirror" config/tags=PackedStringArray("open_source") run/main_scene="res://scenes/boot_scene.tscn" -config/features=PackedStringArray("4.3", "e33f01e3", "mirror") +config/features=PackedStringArray("4.3", "f2020817", "mirror") boot_splash/bg_color=Color(0.0745098, 0.0862745, 0.184314, 1) boot_splash/image="res://art/white_logo_slate_bg_with_text.png" boot_splash/fullsize=false diff --git a/mirror-godot-app/script/editor/abstract_script_editor.gd b/mirror-godot-app/script/editor/abstract_script_editor.gd index 9c9a0205..21de7ebb 100644 --- a/mirror-godot-app/script/editor/abstract_script_editor.gd +++ b/mirror-godot-app/script/editor/abstract_script_editor.gd @@ -4,6 +4,7 @@ extends Control signal request_save_script_as_asset(script_instance: ScriptInstance) signal request_show_entry_creation_dialog(target_node: Node) +signal request_show_custom_entry_creation_dialog(target_node: Node) signal request_toggle_variable_editor() signal request_script_editor_visibility(is_visible: bool) signal request_track_recently_used_space_script(script_instance: ScriptInstance) diff --git a/mirror-godot-app/script/editor/entry_creation/entry_create_dialog.gd b/mirror-godot-app/script/editor/entry_creation/entry_create_dialog.gd index 354111b8..3c78cc9c 100644 --- a/mirror-godot-app/script/editor/entry_creation/entry_create_dialog.gd +++ b/mirror-godot-app/script/editor/entry_creation/entry_create_dialog.gd @@ -13,22 +13,39 @@ func _ready() -> void: func populate_and_show(target_node: Node) -> void: title = "Create Script Entry" - _entry_creation_menu.populate_selection_tree(target_node) + _entry_creation_menu.populate_selection_tree(target_node, false) GameUI.grab_input_lock(self) popup_centered() _entry_creation_menu.focus_search_bar() +func populate_and_show_for_custom(target_node: Node) -> void: + _entry_creation_menu.populate_selection_tree(target_node, true) + _show_custom_entry_menu() + GameUI.grab_input_lock(self) + _entry_creation_menu.focus_search_bar() + + func _on_confirmed() -> void: var signal_dict = _entry_creation_menu.get_desired_signal_signature() if signal_dict == null: - title = "Create Entry With Custom Signal" - popup_centered() + _show_custom_entry_menu() return var block_dict: Dictionary = signal_dict.duplicate(false) create_entry_block.emit(block_dict) +func _show_custom_entry_menu() -> void: + title = "Create Entry With Custom Signal" + popup_centered() + _entry_creation_menu.size = Vector2.ZERO + size = Vector2i.ZERO + await get_tree().process_frame + popup_centered() + _entry_creation_menu.size = Vector2.ZERO + size = Vector2i.ZERO + + func _on_script_entry_creation_menu_confirmed() -> void: hide() _on_confirmed() diff --git a/mirror-godot-app/script/editor/entry_creation/entry_creation_menu.gd b/mirror-godot-app/script/editor/entry_creation/entry_creation_menu.gd index e1ac2bb5..8c97056c 100644 --- a/mirror-godot-app/script/editor/entry_creation/entry_creation_menu.gd +++ b/mirror-godot-app/script/editor/entry_creation/entry_creation_menu.gd @@ -21,15 +21,18 @@ func setup(signal_tree_populator: ScriptEntrySignalTreePopulator) -> void: _signal_selection.setup(signal_tree_populator) -func populate_selection_tree(target_node: Node) -> void: +func populate_selection_tree(target_node: Node, for_custom: bool) -> void: _target_node = target_node _custom_signal_parameters.clear() _add_input_button.show() _custom_signal_name.text = "" _signal_parameters_label.text = "Signal Inputs:" - _signal_selection.populate_selection_tree(target_node) - _signal_selection.show() - _custom_signal.hide() + if for_custom: + _show_custom_entry_menu() + else: + _signal_selection.populate_selection_tree(target_node) + _signal_selection.show() + _custom_signal.hide() func focus_search_bar() -> void: @@ -43,14 +46,17 @@ func get_desired_signal_signature(): return _get_custom_signal_signature() +func _show_custom_entry_menu() -> void: + _signal_selection.hide() + _custom_signal.show() + + func _get_selected_signal_signature(): var signal_dict = _signal_selection.get_selected_signal() if signal_dict == null: return null if String(signal_dict["signal"]) == "custom_signal": - _signal_selection.hide() - _custom_signal.show() - _add_input_button.show() + _show_custom_entry_menu() return null return signal_dict @@ -68,10 +74,14 @@ func _get_custom_signal_signature(): if not existing_signature.is_empty(): existing_signature = existing_signature.duplicate() existing_signature["path"] = "self" + existing_signature["type"] = "entry" return existing_signature var ret = { + "entry_id": "self_" + signal_name + "_" + str(randi() % 1000000), + "name": "On " + signal_name.capitalize(), "path": "self", "signal": signal_name, + "type": "entry", } if not _custom_signal_parameters.is_empty(): ret["signalParameters"] = _custom_signal_parameters.duplicate(true) diff --git a/mirror-godot-app/script/editor/script_editor.gd b/mirror-godot-app/script/editor/script_editor.gd index 138a42e6..bbf30ebf 100644 --- a/mirror-godot-app/script/editor/script_editor.gd +++ b/mirror-godot-app/script/editor/script_editor.gd @@ -227,6 +227,10 @@ func _on_request_show_entry_creation_dialog(target_node: Node) -> void: _script_entry_creation_dialog.populate_and_show(target_node) +func _on_request_show_custom_entry_creation_dialog(target_node: Node) -> void: + _script_entry_creation_dialog.populate_and_show_for_custom(target_node) + + func _on_script_entry_creation_dialog_create_entry_block(block_json: Dictionary) -> void: if _gd_script_editor.visible: if block_json["type"] == "entry": diff --git a/mirror-godot-app/script/editor/script_editor.tscn b/mirror-godot-app/script/editor/script_editor.tscn index c12ccb7c..50878897 100644 --- a/mirror-godot-app/script/editor/script_editor.tscn +++ b/mirror-godot-app/script/editor/script_editor.tscn @@ -41,11 +41,13 @@ script = ExtResource("7_w8ott") [connection signal="request_save_script_as_asset" from="VisualScriptEditor" to="." method="_on_request_save_script_as_asset"] [connection signal="request_script_editor_visibility" from="VisualScriptEditor" to="." method="set_visual_script_editor_visibility"] +[connection signal="request_show_custom_entry_creation_dialog" from="VisualScriptEditor" to="." method="_on_request_show_custom_entry_creation_dialog"] [connection signal="request_show_entry_creation_dialog" from="VisualScriptEditor" to="." method="_on_request_show_entry_creation_dialog"] [connection signal="request_toggle_variable_editor" from="VisualScriptEditor" to="." method="_on_request_toggle_variable_editor"] [connection signal="request_track_recently_used_space_script" from="VisualScriptEditor" to="." method="_on_request_track_recently_used_space_script"] [connection signal="request_save_script_as_asset" from="GDScriptEditor" to="." method="_on_request_save_script_as_asset"] [connection signal="request_script_editor_visibility" from="GDScriptEditor" to="." method="set_gd_script_editor_visibility"] +[connection signal="request_show_custom_entry_creation_dialog" from="GDScriptEditor" to="." method="_on_request_show_custom_entry_creation_dialog"] [connection signal="request_show_entry_creation_dialog" from="GDScriptEditor" to="." method="_on_request_show_entry_creation_dialog"] [connection signal="request_toggle_variable_editor" from="GDScriptEditor" to="." method="_on_request_toggle_variable_editor"] [connection signal="request_track_recently_used_space_script" from="GDScriptEditor" to="." method="_on_request_track_recently_used_space_script"] diff --git a/mirror-godot-app/script/gd/gdscript_entry.gd b/mirror-godot-app/script/gd/gdscript_entry.gd index d03deebe..cbc40af5 100644 --- a/mirror-godot-app/script/gd/gdscript_entry.gd +++ b/mirror-godot-app/script/gd/gdscript_entry.gd @@ -174,6 +174,21 @@ func _value_to_gdscript_literal(value: Variant, type_enum: int) -> String: return str(value) +func connect_entry_signal(script_instance_object: Object, inst_entry_parameters: Dictionary) -> void: + # Trivial case: No inspector parameter inputs, no bindv needed. + if inst_entry_parameters.is_empty(): + entry_node.connect(entry_signal, Callable(script_instance_object, function_name)) + return + # If the user added inspector parameters via "Add Input", we need to bind them to the signal. + var insp_inputs: Array = [] + if inst_entry_parameters.has(entry_id): + var params_for_entry: Dictionary = inst_entry_parameters[entry_id] + for insp_param_name in params_for_entry: + var insp_param_data: Array = params_for_entry[insp_param_name] + insp_inputs.append(insp_param_data[1]) + entry_node.connect(entry_signal, Callable(script_instance_object, function_name).bindv(insp_inputs)) + + static func create_node_for_entry_signal(entry_signal: String) -> Node: if entry_signal == "timeout": var timer: Timer = Timer.new() diff --git a/mirror-godot-app/script/gd/gdscript_instance.gd b/mirror-godot-app/script/gd/gdscript_instance.gd index 89cd2f8f..89f9c9ed 100644 --- a/mirror-godot-app/script/gd/gdscript_instance.gd +++ b/mirror-godot-app/script/gd/gdscript_instance.gd @@ -7,16 +7,16 @@ signal gdscript_compile_success() const _EMPTY_SCRIPT: String = """# Welcome to The Mirror-flavored GDScript! # This is like normal GDScript, but you must not write class\u200B_name or ext\u200Bends. +# You can print to the notification area using `Notify.info(title, message)`. # You may use functions and variables just like you would in normal GDScript. -# Use `target_object` to refer to the object (SpaceObject or global) the script -# is attached to instead of `self`, as `self` refers to the script itself. # The Mirror provides support for multiple scripts per object, you can use # members of SpaceObject the same way you use inherited members in Godot. -# For example, `print(position)` will print a SpaceObject's position. -# You can print to the notification area using `Notify.info(title, message)`. +# For example, `Notify.info("pos", str(position))` will print a SpaceObject's position. +# Use `target_object` to refer to the object (SpaceObject or global) the script +# is attached to instead of `self`, as `self` refers to the script itself. -# Called when a SpaceObject finishes loading. +# Called when a SpaceObject and script finish loading. func _ready() -> void: pass # Replace with function body. @@ -26,9 +26,7 @@ func _process(delta: float) -> void: pass # Replace with function body. """ -const _SCRIPT_PREPROCESS_PREFIX: String = """extends Object - -signal tmusergdscript_runtime_error(error_str: String, frame_index: int, line_num: int, func_name: String) +const _SCRIPT_PREPROCESS_PREFIX: String = """extends TMUserGDScriptBase func get_object_variable(variable_name: String) -> Variant: @@ -40,10 +38,12 @@ func has_object_variable(variable_name: String) -> bool: func set_object_variable(variable_name: String, variable_value: Variant) -> void: + if variable_name in self: + set(variable_name, variable_value) Mirror.set_object_variable(target_object, variable_name, variable_value) -func tween_object_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +func tween_object_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: Mirror.tween_object_variable(target_object, variable_name, to_value, duration, trans, easing) @@ -62,9 +62,16 @@ static var _SCRIPT_TEXT_DENYLIST: Array[RegEx] = [ RegEx.create_from_string("\\bpreload\\b"), RegEx.create_from_string("\\bOS\\b"), RegEx.create_from_string("\\bResourceLoader\\b"), + RegEx.create_from_string("\\bFileAccess\\b"), + RegEx.create_from_string("\\bDirAccess\\b") ] +static var _EXPOSE_VAR_REGEX: RegEx = RegEx.create_from_string("@export var ([_a-zA-Z][_a-zA-Z0-9]{0,30})\\b[^=\\n]*(= )?([^=\\n]*)") +static var _EXPRESSION = Expression.new() + var _entries: Array[GDScriptEntry] = [] +var _exposed_var_names: PackedStringArray = [] +var _exposed_var_default_values: Dictionary = {} var _source_code: String var gdscript_code: TMUserGDScript = TMUserGDScript.new() var script_instance_object: Object @@ -153,6 +160,12 @@ func get_default_value_of_entry_inspector_parameter(entry_id: String, parameter_ return null +func get_default_value_of_exposed_variable(variable_name: String) -> Variant: + if _exposed_var_default_values.has(variable_name): + return _exposed_var_default_values[variable_name] + return null + + func get_entry_line_numbers() -> PackedInt32Array: var ret := PackedInt32Array() for entry in _entries: @@ -177,7 +190,12 @@ func set_source_code(source_code: String) -> void: func create_entry(entry_json: Dictionary) -> void: - var new_function_name: String = entry_json["name"].to_snake_case() + var new_function_name: String + if entry_json.has("name"): + new_function_name = entry_json["name"].to_snake_case() + else: + new_function_name = "on_" + entry_json["signal"] + entry_json["function"] = new_function_name for entry in _entries: if entry.function_name == new_function_name: return # We already have an entry for this, no need to make a new entry. @@ -208,6 +226,15 @@ func _sync_entry_params_with_gdscript_code() -> void: script_entries_changed.emit() +func create_inspector_parameter_input(entry_id: String, parameter_port_array: Array) -> void: + for gdscript_entry in _entries: + if gdscript_entry.entry_id == entry_id: + gdscript_entry.entry_parameters.create_inspector_parameter(parameter_port_array) + _source_code = gdscript_entry.sync_gdscript_code_with_entry(_source_code) + break + sync_script_inst_params_with_script_data() + + ## Ensure the script instance entry inspector parameters match the ## signature of the script's data. Since a script may be used by ## multiple objects, parameters may get out of sync without this code. @@ -220,10 +247,10 @@ func sync_script_inst_params_with_script_data() -> void: entry_parameters[entry_id] = new_params if entry_id in old_entry_parameters: var old_params: Dictionary = old_entry_parameters[entry_id] - for old_key in old_params: - if old_key in new_params: - var old_param_array: Array = old_params[old_key] - var new_param_array: Array = new_params[old_key] + for param_key in old_params: + if param_key in new_params: + var old_param_array: Array = old_params[param_key] + var new_param_array: Array = new_params[param_key] new_param_array[1] = old_param_array[1] entry_parameters.sort() apply_inspector_parameter_values() @@ -254,6 +281,7 @@ func _preprocess_and_apply_code() -> void: error_message_dict["line"] -= _SCRIPT_PREPROCESS_LINE_COUNT gdscript_compile_error.emit(error_code, error_messages) return + _update_exposed_variables() gdscript_compile_success.emit() if not can_execute(): # Don't even init the script if it can't execute. @@ -261,13 +289,20 @@ func _preprocess_and_apply_code() -> void: return # Instantiate the successfully loaded script. script_instance_object = gdscript_code.new() + _sync_exposed_variables_with_spaceobj_spacevars() + # Connect the signals. + script_instance_object.load_exposed_vars.connect(_on_load_exposed_vars) + script_instance_object.save_exposed_vars.connect(_on_save_exposed_vars) script_instance_object.tmusergdscript_runtime_error.connect(_on_tmusergdscript_runtime_error) for entry in _entries: - entry.entry_node.connect(entry.entry_signal, Callable(script_instance_object, entry.function_name)) + entry.connect_entry_signal(script_instance_object, entry_parameters) # Supplementary entry callbacks. Keep this in sync with GDScript CodeEdit load_entry_connection_decoration. if target_node is SpaceObject: if _source_code.contains("func _ready("): - target_node.setup_done.connect(Callable(script_instance_object, &"_ready")) + if target_node._is_setup: + script_instance_object.call(&"_ready") + else: + target_node.setup_done.connect(Callable(script_instance_object, &"_ready")) if _source_code.contains("func _physics_process("): Zone.physics_process_every_frame.connect(Callable(script_instance_object, &"_physics_process")) if _source_code.contains("func _process("): @@ -293,6 +328,36 @@ func _sync_gdscript_code_with_entries() -> void: _source_code = entry.sync_gdscript_code_with_entry(_source_code) +func _sync_exposed_variables_with_spaceobj_spacevars() -> void: + #_update_exposed_variables() + for var_name in _exposed_var_names: + if Mirror.has_object_variable(target_node, var_name): + script_instance_object.set(var_name, Mirror.get_object_variable(target_node, var_name)) + else: + Mirror.set_object_variable(target_node, var_name, script_instance_object.get(var_name)) + + +func _on_load_exposed_vars() -> void: + for var_name in _exposed_var_names: + script_instance_object.set(var_name, Mirror.get_object_variable(target_node, var_name)) + + +func _on_save_exposed_vars() -> void: + for var_name in _exposed_var_names: + Mirror.set_object_variable(target_node, var_name, script_instance_object.get(var_name)) + + +func _update_exposed_variables() -> void: + _exposed_var_names.clear() + var matches: Array[RegExMatch] = _EXPOSE_VAR_REGEX.search_all(_source_code) + for mat in matches: + var var_name: String = mat.get_string(1) + _exposed_var_names.append(var_name) + if mat.get_group_count() >= 3: + _EXPRESSION.parse(mat.get_string(3)) + _exposed_var_default_values[var_name] = _EXPRESSION.execute() + + ## This method handles runtime error messages similar to VisualScriptInstance's `_on_block_message` method. func _on_tmusergdscript_runtime_error(error_str: String, frame_index: int, line_num: int, func_name: String) -> void: line_num -= _SCRIPT_PREPROCESS_LINE_COUNT diff --git a/mirror-godot-app/script/gd/mirror_singleton.gd b/mirror-godot-app/script/gd/mirror_singleton.gd index ca7a093d..03c4ae19 100644 --- a/mirror-godot-app/script/gd/mirror_singleton.gd +++ b/mirror-godot-app/script/gd/mirror_singleton.gd @@ -3,6 +3,28 @@ class_name Mirror extends Object +# Misc. +static func get_friendly_name(value: Variant) -> String: + if value is SpaceObject: + return value.get_space_object_name() + elif value is Player: + return value.get_player_name() + elif value is Node: + return value.name + elif value == null: + return "" + elif not is_instance_valid(value): + return "" + else: + # For non-Node objects, str() is the best we can do. + return str(value) + + +static func print_in_chat(attached_object: Object, message: String, range_radius: float = INF) -> void: + GameUI.chat_ui.send_message_from_object(attached_object, message, range_radius) + + +# Global variables. static func get_global_variable(variable_name: String) -> Variant: return Zone.script_network_sync.get_global_variable(variable_name) @@ -15,10 +37,11 @@ static func set_global_variable(variable_name: String, variable_value: Variant) Zone.script_network_sync.set_global_variable(variable_name, variable_value) -static func tween_global_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +static func tween_global_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: Zone.script_network_sync.tween_global_variable(variable_name, to_value, duration, trans, easing) +# Object variables. static func get_object_variable(variable_object: Object, variable_name: String) -> Variant: var object_variables = variable_object.get_meta(&"MirrorScriptObjectVariables") return TMDataUtil.get_variable_by_json_path_string(object_variables, variable_name) @@ -45,8 +68,31 @@ static func set_object_variable(variable_object: Object, variable_name: String, Zone.script_network_sync.object_variable_changed.emit(variable_object, variable_name, variable_value) -static func tween_object_variable(variable_node: Node, variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +static func tween_object_variable(variable_node: Node, variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: # Note: Unlike setting a variable, this does not apply immediately. # Since tweening does not have an effect on the same frame anyway, # we can afford to wait for the server to only do a synced tween. Zone.script_network_sync.tween_variable_on_node(variable_node, variable_name, to_value, duration, trans, easing) + + +# Object properties. +static func get_object_property(property_object: Object, property_name: StringName) -> Variant: + return property_object.get(property_name) + + +static func has_object_property(property_object: Object, property_name: StringName) -> bool: + return property_name in property_object + + +static func set_object_property(property_object: Object, property_name: StringName, property_value: Variant) -> void: + property_object.set(property_name, property_value) + + +static func tween_object_property(property_object: Object, property_name: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: + if not property_object is Node: + Notify.error("Cannot tween object property", "The target object is not a node, but tweening properties is only supported on nodes for now.") + return + # Note: Unlike setting a property, this does not apply immediately. + # Since tweening does not have an effect on the same frame anyway, + # we can afford to wait for the server to only do a synced tween. + Zone.script_network_sync.tween_property_on_node(property_object, property_name, to_value, duration, trans, easing) diff --git a/mirror-godot-app/script/gd/tmusergdscript_base.gd b/mirror-godot-app/script/gd/tmusergdscript_base.gd new file mode 100644 index 00000000..e6b6fcdf --- /dev/null +++ b/mirror-godot-app/script/gd/tmusergdscript_base.gd @@ -0,0 +1,6 @@ +class_name TMUserGDScriptBase extends Object + + +signal load_exposed_vars() +signal save_exposed_vars() +signal tmusergdscript_runtime_error(error_str: String, frame_index: int, line_num: int, func_name: String) diff --git a/mirror-godot-app/script/network_sync.gd b/mirror-godot-app/script/network_sync.gd index 170de3a4..627b3b7d 100644 --- a/mirror-godot-app/script/network_sync.gd +++ b/mirror-godot-app/script/network_sync.gd @@ -314,7 +314,7 @@ func _set_global_variables_network(variables: Dictionary) -> void: received_variable_data_change.emit() -func tween_global_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +func tween_global_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: _net_queue_tweened_global_variables[variable_name] = [to_value, duration, trans, easing] @@ -338,7 +338,7 @@ func _tween_global_variables_network(tweened_variables: Dictionary) -> void: ## Tween a user variable we store inside of a Dictionary using MethodTweener. -func _tween_variable_in_dict(variables_dict: Dictionary, variable_name: String, from_value: Variant, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +func _tween_variable_in_dict(variables_dict: Dictionary, variable_name: String, from_value: Variant, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: var split_path: PackedStringArray = TMDataUtil.split_json_path_string(variable_name) var method_callable: Callable = _tween_variable_callback_method.bind(variables_dict, split_path) var tween: Tween = get_tree().create_tween() @@ -412,7 +412,7 @@ func _set_property_on_node(node: Node, property: StringName, value: Variant) -> node.set(property, value) -func tween_property_on_node(node: Node, property: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +func tween_property_on_node(node: Node, property: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: if to_value is Object: Notify.error("Tween Failed", "Tweening an object is not a sensible operation. Aborting.") return @@ -446,7 +446,7 @@ func _tween_properties_on_nodes_network(nodes_tweened_properties: Dictionary) -> _save_tween_results_for_later(node_path, node_tweened_properties, _set_queue_properties_on_nodes) -func _tween_property_on_node(node: Node, property: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +func _tween_property_on_node(node: Node, property: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: if not ScriptPropertyRegistration.has_registered_property(property): return var tween: Tween = get_tree().create_tween() @@ -508,13 +508,21 @@ func _set_variable_on_node(node: Node, variable_name: String, variable_value: Va node.set_meta(&"MirrorScriptObjectVariables", {}) var object_variables: Dictionary = node.get_meta(&"MirrorScriptObjectVariables") TMDataUtil.set_variable_by_json_path_string(object_variables, variable_name, variable_value) + # If this is an exposed script variable, set it in the script. + if node.has_method(&"get_script_instances") and Zone.is_host(): + var script_instances: Array[ScriptInstance] = node.get_script_instances() + for script_inst in script_instances: + if script_inst is GDScriptInstance and is_instance_valid(script_inst.script_instance_object): + var obj = script_inst.script_instance_object + if variable_name in obj: + obj.set(variable_name, variable_value) # Keep track of all node variables ever set for use with the variable editor. var node_path: NodePath = node.get_path() var node_variables_in_all: Dictionary = _all_set_variables_on_nodes.get_or_add(node_path, {}) TMDataUtil.set_variable_by_json_path_string(node_variables_in_all, variable_name, variable_value) -func tween_variable_on_node(node: Node, variable: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +func tween_variable_on_node(node: Node, variable: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: if to_value is Object: Notify.error("Tween Failed", "Tweening an Object value is not a sensible operation. Aborting.") return @@ -549,7 +557,7 @@ func _tween_variables_on_nodes_network(nodes_tweened_variables: Dictionary) -> v received_variable_data_change.emit() -func _tween_variable_on_node(node: Node, variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void: +func _tween_variable_on_node(node: Node, variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void: if not node.has_meta(&"MirrorScriptObjectVariables"): node.set_meta(&"MirrorScriptObjectVariables", {}) var object_variables: Dictionary = node.get_meta(&"MirrorScriptObjectVariables") diff --git a/mirror-godot-app/script/script_instance.gd b/mirror-godot-app/script/script_instance.gd index 17a75ad8..065d2422 100644 --- a/mirror-godot-app/script/script_instance.gd +++ b/mirror-godot-app/script/script_instance.gd @@ -87,8 +87,11 @@ func is_script_instance_setup() -> bool: func setup(node: Node, script_inst_dict: Dictionary) -> void: target_node = node - var script_entity_data: Dictionary = await Net.script_client.get_script_entity(script_id) - setup_script_entity_data(script_entity_data) + var script_entity_data: Dictionary = Net.script_client.get_script_entity(script_id) + # If it's empty, we don't have the data yet. The setup_script_entity_data + # function will be ran later when we receive the data. + if not script_entity_data.is_empty(): + setup_script_entity_data(script_entity_data) func setup_script_instance_data(script_inst_dict: Dictionary) -> void: @@ -145,6 +148,17 @@ func update_script_entity_data_from_network(script_entity_data: Dictionary) -> v # Parameter methods. +func create_inspector_parameter_input(entry_id: String, parameter_port_array: Array) -> void: + assert(false, "This method must be overridden in a derived class.") + + +func set_inspector_parameter_input_value(entry_id: String, param_name: String, new_value: Variant) -> void: + var parameters_for_entry: Dictionary = entry_parameters[entry_id] + var param_data: Array = parameters_for_entry[param_name] + param_data[1] = new_value + apply_inspector_parameter_values() + + func _load_entry_parameters_from_json(entry_parameter_json: Dictionary) -> void: assert(entry_parameters.is_empty(), "This method expects to only be called once. If calling multiple times is needed, add support for that.") entry_parameters = entry_parameter_json.duplicate(true) diff --git a/mirror-godot-app/script/visual/blocks/misc/get_friendly_name.gd b/mirror-godot-app/script/visual/blocks/misc/get_friendly_name.gd index 6d92d3aa..eb92a3e2 100644 --- a/mirror-godot-app/script/visual/blocks/misc/get_friendly_name.gd +++ b/mirror-godot-app/script/visual/blocks/misc/get_friendly_name.gd @@ -4,19 +4,7 @@ extends ScriptBlock func evaluate() -> void: evaluate_inputs() var value = inputs[0].value - if value is SpaceObject: - outputs[0].value = value.get_space_object_name() - elif value is Player: - outputs[0].value = value.get_player_name() - elif value is Node: - outputs[0].value = value.name - elif value == null: - outputs[0].value = "" - elif not is_instance_valid(value): - outputs[0].value = "" - else: - # For non-Node objects, str() is the best we can do. - outputs[0].value = str(value) + outputs[0].value = Mirror.get_friendly_name(value) func get_script_block_type() -> String: diff --git a/mirror-godot-app/script/visual/blocks/script_block.gd b/mirror-godot-app/script/visual/blocks/script_block.gd index bca35f36..5824fdc7 100644 --- a/mirror-godot-app/script/visual/blocks/script_block.gd +++ b/mirror-godot-app/script/visual/blocks/script_block.gd @@ -109,6 +109,8 @@ func _setup_base(block_json: Dictionary) -> void: graph_position = Serialization.array_to_vector2(block_json["position"]) if block_json.has("name"): graph_name = block_json["name"] + elif block_json.has("signal"): + graph_name = "On " + String(block_json["signal"]).capitalize() else: graph_name = String(block_json["type"]).capitalize() diff --git a/mirror-godot-app/script/visual/editor/block_creation/script_block_creation_dialog.gd b/mirror-godot-app/script/visual/editor/block_creation/script_block_creation_dialog.gd index c8b5632c..8ea17872 100644 --- a/mirror-godot-app/script/visual/editor/block_creation/script_block_creation_dialog.gd +++ b/mirror-godot-app/script/visual/editor/block_creation/script_block_creation_dialog.gd @@ -112,7 +112,7 @@ func _on_confirmed(): var desired_block_json: Dictionary = _script_block_creation_menu.get_desired_block_json() if desired_block_json.is_empty(): return - if desired_block_json["type"] == "entry" and not desired_block_json.has("signal"): + if desired_block_json["type"] == "entry" and desired_block_json["signal"] == &"custom_signal": request_show_entry_creation_dialog.emit() return create_block.emit(desired_block_json) diff --git a/mirror-godot-app/script/visual/editor/graph/script_editor_graph.gd b/mirror-godot-app/script/visual/editor/graph/script_editor_graph.gd index 9fc965a4..31693517 100644 --- a/mirror-godot-app/script/visual/editor/graph/script_editor_graph.gd +++ b/mirror-godot-app/script/visual/editor/graph/script_editor_graph.gd @@ -154,7 +154,12 @@ func create_graph_nodes(from_script_instance: ScriptInstance, rezoom: bool = tru _queue_update_network_script_frames = -1 script_instance = from_script_instance script_builder = script_instance.script_builder - assert(get_children().is_empty()) + # Regression in GraphEdit: https://github.com/godotengine/godot/issues/91857 + # We need to manually filter out the internal _connection_layer using the node name. + var graph_edit_children: Array[Node] = get_children() + for child in graph_edit_children: + assert(child.name.begins_with("_"), "Expected all children to be cleaned up before `create_graph_nodes` was called (expected `cleanup_and_delete_nodes` to be called first).") + #assert(get_children().is_empty()) for comment in script_instance.comments: create_comment_graph_node(comment) var script_blocks: Array[ScriptBlock] = script_builder.all_blocks @@ -603,10 +608,12 @@ func focus_script_block(script_block: ScriptBlock, error_text: String) -> void: func rezoom_to_show_all_graph_nodes() -> void: # Keep a 500x500 area near the origin in view. var rect := Rect2(-100.0, -100.0, 400.0, 400.0) - for graph_node in get_children(): - var pos: Vector2 = graph_node.position_offset + for graph_elem in get_children(): + if not graph_elem is GraphElement: + continue + var pos: Vector2 = graph_elem.position_offset rect = rect.expand(pos) - rect = rect.expand(pos + graph_node.size) + rect = rect.expand(pos + graph_elem.size) zoom = minf(size.x / rect.size.x, size.y / rect.size.y) * 0.9 scroll_offset = rect.get_center() * zoom - size * 0.5 diff --git a/mirror-godot-app/script/visual/editor/visual_script_editor.gd b/mirror-godot-app/script/visual/editor/visual_script_editor.gd index dbed5727..ccf8e5e5 100644 --- a/mirror-godot-app/script/visual/editor/visual_script_editor.gd +++ b/mirror-godot-app/script/visual/editor/visual_script_editor.gd @@ -148,7 +148,7 @@ func _on_request_block_creation(constraint: int, data_type: int, index: int, fro func _on_request_entry_creation(where: Vector2) -> void: _creation_position = where - request_show_entry_creation_dialog.emit(_script_instance.target_node) + request_show_custom_entry_creation_dialog.emit(_script_instance.target_node) func _on_request_input_value_edit(graph_node: ScriptBlockGraphNode, input_port: ScriptBlock.ScriptBlockInputPort) -> void: diff --git a/mirror-godot-app/script/visual/visual_script_instance.gd b/mirror-godot-app/script/visual/visual_script_instance.gd index 24e5c924..09c4cac7 100644 --- a/mirror-godot-app/script/visual/visual_script_instance.gd +++ b/mirror-godot-app/script/visual/visual_script_instance.gd @@ -137,6 +137,15 @@ func _create_event_node(entry_block: ScriptBlockEntryBase) -> void: entry_block.entry_node = event_node +func create_inspector_parameter_input(entry_id: String, parameter_port_array: Array) -> void: + for entry_block in script_builder.entry_blocks: + if entry_block.entry_id == entry_id: + entry_block.parameters.create_inspector_parameter(parameter_port_array) + entry_block.reset_entry_output_ports() + break + sync_script_inst_params_with_script_data() + + ## Ensure the script instance entry inspector parameters match the ## signature of the script's data. Since a script may be used by ## multiple objects, parameters may get out of sync without this code. diff --git a/mirror-godot-app/scripts/autoload/analytics/analytics_v2.gd b/mirror-godot-app/scripts/autoload/analytics/analytics_v2.gd index 00d0608d..8450fef8 100644 --- a/mirror-godot-app/scripts/autoload/analytics/analytics_v2.gd +++ b/mirror-godot-app/scripts/autoload/analytics/analytics_v2.gd @@ -36,10 +36,14 @@ func track_event(event_type: String, properties:={}) -> void: ## Send a single event to the Mixpanel Analytics service func _send_track_event(event: AnalyticsEvent, properties := {}) -> void: + var version := Util.get_version_string() + var release := Util.get_release_name() var standard_properties = { "token": api_token, "distinct_id": event.user_id, - "env": "open-source" + "env": "open-source-v2", + "version": version, + "release": release } if not properties.is_empty(): standard_properties.merge(properties) @@ -51,16 +55,16 @@ func _send_track_event(event: AnalyticsEvent, properties := {}) -> void: var promise = self.post_request_ext(TRACK_EVENT, _ANALYTICS_URL_TRACK, data) var res = await promise.wait_till_fulfilled() if promise.is_error(): - print("Error sending track event: %s" % [res]) + print("Error sending track event, promise: %s" % [res]) else: if (res.has('json_result') and res.json_result.has('status')): var status = res.json_result.status # 0 is an error from Mixpanel *EVEN IF* it's 200 HTTP status if (status == 0): if (res.json_result.has('error')): - print("Error sending track event: %s" % [res.json_result.error]) + print("Error sending track event, json_result error: %s" % [res.json_result.error]) else: - print("Error sending track event: %s" % [res]) + print("Error sending track event, other error: %s" % [res]) #1 is success from Mixpanel if (status == 1): if _PRINT_ANALYTICS: diff --git a/mirror-godot-app/scripts/autoload/util_funcs.gd b/mirror-godot-app/scripts/autoload/util_funcs.gd index cea173fb..83e2bc75 100644 --- a/mirror-godot-app/scripts/autoload/util_funcs.gd +++ b/mirror-godot-app/scripts/autoload/util_funcs.gd @@ -105,6 +105,10 @@ static func current_platform_is_windows() -> bool: return get_current_platform_name() == WIN_NAME +static func get_release_name() -> String: + return "Horizon" + + static func get_simple_platform_name(os_name:String) -> String: var lower_os_name = os_name.to_lower() return PLATFORMS.get(lower_os_name, lower_os_name) diff --git a/mirror-godot-app/ui/common/components/endless_scroll_flow_container.gd b/mirror-godot-app/ui/common/components/endless_scroll_flow_container.gd index a8fcf584..d1f399da 100644 --- a/mirror-godot-app/ui/common/components/endless_scroll_flow_container.gd +++ b/mirror-godot-app/ui/common/components/endless_scroll_flow_container.gd @@ -30,6 +30,7 @@ var _current_item_offset = 0 var _is_already_requesting_next_page = false var _lowest_known_scroll_position = 0 var _is_fully_loaded = false +var _configured = false func clear() -> void: @@ -69,6 +70,11 @@ func _calculate_max_items_on_screen(forced_size = Vector2.ZERO) -> int: func _fetch_data(cnt_items_to_fetch: int) -> Array: + if not fetch_callable.is_valid(): + # this could be caused by the data not being initialised before this is called + # it happens generally if you're not logged in before populating this. + push_error("invalid fetch callable in endless scroll container") + return [] assert(fetch_callable.is_valid()) if _is_already_requesting_next_page: return [] # Some old request is in working... @@ -112,6 +118,7 @@ func setup(forced_start_size = Vector2.ZERO) -> void: var items_to_fetch = (preload_pages_in_advance) * _calculate_max_items_on_screen(forced_start_size) var items_data = await _fetch_data(items_to_fetch) _populate_items(items_data) + _configured = true func fetch_and_populate(forced_start_size = Vector2.ZERO) -> void: @@ -125,7 +132,7 @@ func fetch_and_populate(forced_start_size = Vector2.ZERO) -> void: var offset_modulo = _current_item_offset %items_per_row if offset_modulo > 0: items_to_fetch += items_per_row - offset_modulo - var items_data = await _fetch_data(items_to_fetch) + var items_data = await _fetch_data(max(1,items_to_fetch)) _populate_items(items_data) @@ -175,7 +182,7 @@ func _on_retry_button_pressed() -> void: func _on_visibility_changed() -> void: if not visible: return - if not get_v_scroll_bar().visible: + if not get_v_scroll_bar().visible and _configured: fetch_and_populate() diff --git a/mirror-godot-app/ui/global_version_label/version_label.gd b/mirror-godot-app/ui/global_version_label/version_label.gd index a2f58c34..34a65109 100644 --- a/mirror-godot-app/ui/global_version_label/version_label.gd +++ b/mirror-godot-app/ui/global_version_label/version_label.gd @@ -10,9 +10,10 @@ func _ready(): ## Sets the version label to the parsed version string. func _set_version_label() -> void: var version := Util.get_version_string() + var release := Util.get_release_name() text = ' '.join([ text, - _release_name(version), + release, "v%s-%s" % [ version, ProjectSettings.get_setting("mirror/env_name") @@ -20,6 +21,3 @@ func _set_version_label() -> void: ]) if ProjectSettings.get_setting("feature_flags/large_text_size", false): add_theme_font_size_override(&"font_size", 22) - -func _release_name(version) -> String: - return "Gravity" diff --git a/mirror-web-server/.env.example b/mirror-web-server/.env.example index 2b652048..f326419e 100644 --- a/mirror-web-server/.env.example +++ b/mirror-web-server/.env.example @@ -10,7 +10,7 @@ GCP_PROJECT_ID= # Use this for docker mongodb MONGODB_URL=mongodb://root:example@mongo:27017/themirror?retryWrites=true&w=majority&authSource=admin # Use this for local mongodb -MONGODB_URL=mongodb://127.0.0.1:27017/themirror +# MONGODB_URL=mongodb://127.0.0.1:27017/themirror # # Use this for local redis # REDISHOST=127.0.0.1 @@ -62,4 +62,4 @@ DISABLE_EMAIL=true ASSET_STORAGE_DRIVER=LOCAL # if ASSET_STORAGE_DRIVER is not GCP, then this is required -ASSET_STORAGE_URL=http://localhost:9000/ \ No newline at end of file +ASSET_STORAGE_URL=http://localhost:9000/ diff --git a/mirror-web-server/migrations/themirror/20231129171842-add-isEquipable-property-to-assets.js b/mirror-web-server/migrations/themirror/20231129171842-add-isEquipable-property-to-assets.js index 00f3c849..f7ce66e1 100644 --- a/mirror-web-server/migrations/themirror/20231129171842-add-isEquipable-property-to-assets.js +++ b/mirror-web-server/migrations/themirror/20231129171842-add-isEquipable-property-to-assets.js @@ -3,6 +3,7 @@ const Piscina = require('piscina') const os = require('os') const { ObjectId } = require('mongodb') +// @ts-ignore const piscina = new Piscina({ filename: path.resolve( __dirname, diff --git a/mirror-web-server/src/asset/asset.controller.ts b/mirror-web-server/src/asset/asset.controller.ts index 44161d61..8bbae422 100644 --- a/mirror-web-server/src/asset/asset.controller.ts +++ b/mirror-web-server/src/asset/asset.controller.ts @@ -784,4 +784,16 @@ export class AssetController { purchaseOptionId ) } + + @Get('/space/:spaceId') + @FirebaseTokenAuthGuard() + public async getAllAssetsBySpaceIdWithRolesCheck( + @UserToken('user_id') userId: UserId, + @Param('spaceId') spaceId: string + ) { + return await this.assetService.getAllAssetsBySpaceIdWithRolesCheck( + spaceId, + userId + ) + } } diff --git a/mirror-web-server/src/asset/asset.service.ts b/mirror-web-server/src/asset/asset.service.ts index 5a99d771..129740c0 100644 --- a/mirror-web-server/src/asset/asset.service.ts +++ b/mirror-web-server/src/asset/asset.service.ts @@ -24,6 +24,7 @@ import { import { FileUploadService } from '../util/file-upload/file-upload.service' import { AssetId, + SpaceId, UserId, aggregationMatchId } from '../util/mongo-object-id-helpers' @@ -1342,6 +1343,26 @@ export class AssetService { return await this._updateAssetTagsByType(assetId, tagType, tags) } + async getAllAssetsBySpaceIdWithRolesCheck(spaceId: SpaceId, userId: UserId) { + const pipeline = [ + { $match: { space: new ObjectId(spaceId) } }, + { + $lookup: { + from: 'assets', + localField: 'asset', + foreignField: '_id', + as: 'assetInfo' + } + }, + { $unwind: '$assetInfo' }, + { + $replaceRoot: { newRoot: '$assetInfo' } + }, + ...this.roleService.getRoleCheckAggregationPipeline(userId, ROLE.OBSERVER) + ] + return await this.spaceObjectModel.aggregate(pipeline).exec() + } + private async _updateAssetTagsByType( assetId: AssetId, tagType: TAG_TYPES, diff --git a/mirror-web-server/src/auth/auth.guard.ts b/mirror-web-server/src/auth/auth.guard.ts index ec8c0c85..c05f1e98 100644 --- a/mirror-web-server/src/auth/auth.guard.ts +++ b/mirror-web-server/src/auth/auth.guard.ts @@ -42,7 +42,10 @@ export class AuthGuardFirebase implements CanActivate { req['user'] = decodedJwt } } catch (error) { - console.log(error) + this.logger.log( + `JWT decode error ${error as string}`, + AuthGuardFirebase.name + ) // do nothing if decoding fails here } return true @@ -88,14 +91,14 @@ export class AuthGuardFirebase implements CanActivate { } else { this.logger.error('JWT:', token) } - console.log('AuthGuardFirebase: error decoding jwt, returning false') + this.logger.log('AuthGuardFirebase: error decoding jwt, returning false') return false } } async decodeJwt(token) { return await this.firebaseAuthService.verifyIdToken( - token.replace('Bearer ', ''), + token ? token.replace('Bearer ', '') : '', true ) } diff --git a/mirror-web-server/src/block/block.service.ts b/mirror-web-server/src/block/block.service.ts index 30ab8568..d241f06b 100644 --- a/mirror-web-server/src/block/block.service.ts +++ b/mirror-web-server/src/block/block.service.ts @@ -31,6 +31,8 @@ export class BlockService { } remove(id: string): Promise { - return this.blockModel.findOneAndDelete({ _id: id }).exec() + return this.blockModel + .findOneAndDelete({ _id: id }) + .exec() as any as Promise } } diff --git a/mirror-web-server/src/metadata.ts b/mirror-web-server/src/metadata.ts index ce5795ec..99aad97a 100644 --- a/mirror-web-server/src/metadata.ts +++ b/mirror-web-server/src/metadata.ts @@ -19,5 +19,5 @@ export default async () => { ["./space/material-instance/material-instance.schema"]: await import("./space/material-instance/material-instance.schema"), ["./auth/auth.controller"]: await import("./auth/auth.controller") }; - return { "@nestjs/swagger": { "models": [[import("./custom-data/dto/custom-data.dto"), { "CreateCustomDataDto": { data: { required: true, type: () => Object, description: "@description We intentionally use a \"data\" property here so that other keys can be added in the future and the dto doesn't assume that everything in the dto should be saved to the database\nWe also want to be able to store top-level key:value pairs that the user doesn't have free reign access to.\n@date 2023-03-03 00:12" } }, "ICustomDataKeyValuePairUpdateDto": { patchCustomData: { required: false, type: () => Object }, removeCustomDataKeys: { required: false, type: () => [String] } } }], [import("./roles/dto/create-role.dto"), { "CreateRoleDto": { defaultRole: { required: true, enum: t["./roles/models/role.enum"].ROLE }, creator: { required: true, type: () => String }, users: { required: false, type: () => Object }, userGroups: { required: false, type: () => Object } } }], [import("./util/file-upload/dto/file-upload.dto"), { "FileUploadDto": { path: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./asset/dto/create-asset.dto"), { "CreateAssetDto": { name: { required: true, type: () => String, description: "Required properties", maxLength: 300 }, assetType: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, defaultRole: { required: false, description: "Optional Properties", enum: t["./roles/models/role.enum"].ROLE }, description: { required: false, type: () => String, maxLength: 5000 }, mirrorPublicLibrary: { required: false, type: () => Boolean }, customData: { required: false, type: () => String }, thirdPartySourceDisplayName: { required: false, type: () => String, description: "START Section: Third Party Source for Mirror Public Library" }, thirdPartySourceUrl: { required: false, type: () => String }, thumbnail: { required: false, type: () => String, description: "END Section: Third Party Source for Mirror Public Library" }, categories: { required: false, type: () => [String], deprecated: true }, currentFile: { required: false, type: () => String, maxLength: 5000 }, fileHash: { required: false, type: () => String, maxLength: 64 }, public: { required: false, type: () => Boolean }, initPositionX: { required: false, type: () => Number }, initPositionY: { required: false, type: () => Number }, initPositionZ: { required: false, type: () => Number }, initRotationX: { required: false, type: () => Number }, initRotationY: { required: false, type: () => Number }, initRotationZ: { required: false, type: () => Number }, initScaleX: { required: false, type: () => Number }, initScaleY: { required: false, type: () => Number }, initScaleZ: { required: false, type: () => Number }, collisionEnabled: { required: false, type: () => Boolean }, staticEnabled: { required: false, type: () => Boolean }, massKg: { required: false, type: () => Number }, gravityScale: { required: false, type: () => Number }, objectColor: { required: false, type: () => Object }, tags: { required: false, type: () => t["./tag/models/tags.schema"].Tags } }, "CreateMaterialDto": { materialName: { required: false, type: () => String }, materialTransparencyMode: { required: false, type: () => String }, materialTransparencyProperties: { required: false, type: () => String }, textures: { required: false, type: () => String }, parameters: { required: true, type: () => Object }, externalAssetIds: { required: false, type: () => String }, materialType: { required: true, type: () => String }, code: { required: false, type: () => String } }, "CreateTextureDto": { textureImageFileHashMD5: { required: false, type: () => String }, textureLowQualityFileHashMD5: { required: false, type: () => String }, textureImagePropertyAppliesTo: { required: false, type: () => String } }, "CreateMapDto": { mapName: { required: false, type: () => String }, heightmapAssetId: { required: false, type: () => String }, flatMaterialAssetId: { required: false, type: () => String }, cliffMaterialAssetId: { required: false, type: () => String }, mapSize: { required: false, type: () => Number }, mapPrecision: { required: false, type: () => Number }, heightScale: { required: false, type: () => Number }, layerOffset: { required: false, type: () => Number }, flatUVScale: { required: false, type: () => Number }, cliffUVScale: { required: false, type: () => Number }, flatCliffRatio: { required: false, type: () => Number }, flatColor: { required: false, type: () => Object }, cliffColor: { required: false, type: () => Object }, colormapAssetId: { required: false, type: () => String }, colormapStrength: { required: false, type: () => Number } } }], [import("./asset/dto/paginated-search-asset.dto"), { "PaginatedSearchAssetDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String }, sortKey: { required: true, type: () => String }, sortDirection: { required: true, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: true, type: () => Number }, perPage: { required: true, type: () => Number }, startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number }, type: { required: true, deprecated: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, assetType: { required: true, deprecated: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, assetTypes: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE, isArray: true }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES } }, "PaginatedSearchAssetDtoV2": { populate: { required: true, type: () => [String] }, includeSoftDeleted: { required: false, type: () => Boolean } } }], [import("./asset/dto/update-asset.dto"), { "UpdateAssetDto": { __t: { required: false, type: () => Object, description: "@description If a discriminator/subclassed Asset is being updated, then this must be included. Otherwise, the parent Asset will be used, but because Mongoose is NOT typed under the hood, it won't know about the discriminator classes and thus won't work with properties of the discriminator if the discriminator model isn't used.\n@date 2023-06-07 11:24" } }, "AddAssetPurchaseOptionDto": {} }], [import("./asset/dto/upload-asset-file.dto"), { "UploadAssetFileDto": { userId: { required: true, type: () => String }, assetId: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./user/dto/create-user-access-key.dto"), { "CreateUserAccessKeyDto": { token: { required: true, type: () => String }, adminNote: { required: true, type: () => String } } }], [import("./user/dto/update-user.dto"), { "UpdateUserProfileDto": { email: { required: true, type: () => String }, displayName: { required: true, type: () => String }, publicBio: { required: true, type: () => String }, discordUserId: { required: true, type: () => String }, polygonPublicKey: { required: true, type: () => String }, ethereumPublicKey: { required: true, type: () => String }, twitterUsername: { required: true, type: () => String }, githubUsername: { required: true, type: () => String }, instagramUsername: { required: true, type: () => String }, youtubeChannel: { required: true, type: () => String }, artStationUsername: { required: true, type: () => String }, sketchfabUsername: { required: true, type: () => String }, profileImage: { required: true, type: () => String }, coverImage: { required: true, type: () => String } }, "UpdateUserDeepLinkDto": { deepLinkKey: { required: true, type: () => String }, deepLinkValue: { required: true, type: () => String } }, "UpdateUserTermsDto": { termsAgreedtoClosedAlpha: { required: false, type: () => Boolean }, termsAgreedtoGeneralTOSandPP: { required: false, type: () => Boolean } }, "UpdateUserAvatarDto": { avatarUrl: { required: false, type: () => String } }, "UpdateUserTutorialDto": { shownFirstInSpacePopupV1: { required: false, type: () => Boolean }, shownFirstHomeScreenPopupV1: { required: false, type: () => Boolean }, shownWebAppPopupV1: { required: false, type: () => Boolean } }, "UpdateUserAvatarTypeDto": { avatarType: { required: true, type: () => String }, readyPlayerMeUrlGlb: { required: false, type: () => String } }, "AddRpmAvatarUrlDto": { rpmAvatarUrl: { required: true, type: () => String } }, "RemoveRpmAvatarUrlDto": { rpmAvatarUrl: { required: true, type: () => String } }, "UpsertUserEntityActionDto": { forEntity: { required: true, type: () => String }, actionType: { required: true, type: () => String }, entityType: { required: true, type: () => String }, rating: { required: false, type: () => Number, description: "Optional properties", minimum: 1, maximum: 5 } }, "AddUserCartItemToUserCartDto": { purchaseOptionId: { required: true, type: () => String }, forEntity: { required: true, type: () => String }, entityType: { required: true, type: () => String } } }], [import("./user/dto/upload-profile-file.dto"), { "UploadProfileFileDto": { userId: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./user/dto/add-user-sidebar-tag.dto"), { "AddUserSidebarTagDto": { sidebarTag: { required: true, type: () => String } } }], [import("./asset/dto/add-tag-to-asset.dto"), { "AddTagToAssetDto": { assetId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./environment/dto/update-environment.dto"), { "UpdateEnvironmentDto": {} }], [import("./space-object/dto/create-space-object.dto"), { "CreateSpaceObjectDto": { spaceId: { required: true, type: () => String, description: "Required properties", minLength: 24, maxLength: 24 }, name: { required: true, type: () => String, maxLength: 300 }, asset: { required: true, type: () => String }, parentSpaceObject: { required: false, type: () => String }, description: { required: false, type: () => String }, locked: { required: false, type: () => Boolean }, preloadBeforeSpaceStarts: { required: false, type: () => Boolean }, position: { required: false, type: () => Object }, rotation: { required: false, type: () => Object }, scale: { required: false, type: () => Object }, offset: { required: false, type: () => Object }, collisionEnabled: { required: false, type: () => Boolean }, shapeType: { required: false, type: () => String }, bodyType: { required: false, type: () => String }, staticEnabled: { required: false, type: () => Boolean }, massKg: { required: false, type: () => Number }, gravityScale: { required: false, type: () => Number }, castShadows: { required: false, type: () => Boolean }, visibleFrom: { required: false, type: () => Number }, visibleTo: { required: false, type: () => Number }, visibleFromMargin: { required: false, type: () => Number }, visibleToMargin: { required: false, type: () => Number }, materialAssetId: { required: false, type: () => String }, objectColor: { required: false, type: () => Object }, objectTexture: { required: false, type: () => String }, objectTextureSize: { required: false, type: () => Number, deprecated: true }, objectTextureSizeV2: { required: false, type: () => Object }, objectTextureOffset: { required: false, type: () => Object }, objectTextureTriplanar: { required: false, type: () => Boolean }, objectTextureRepeat: { required: false, type: () => Boolean }, audioAutoPlay: { required: false, type: () => Boolean }, audioLoop: { required: false, type: () => Boolean }, audioIsSpatial: { required: false, type: () => Boolean }, audioPitch: { required: false, type: () => Number }, audioBaseVolume: { required: false, type: () => Number }, audioSpatialMaxVolume: { required: false, type: () => Number }, audioSpatialRange: { required: false, type: () => Number }, surfaceMaterialId: { required: false, type: () => [Object] }, scriptEvents: { required: false, type: () => [Object] }, extraNodes: { required: false, type: () => [Object] } } }], [import("./util/dto-generic/batch.dto"), { "Batch": { batch: { required: true } } }], [import("./space-object/dto/update-space-object.dto"), { "UpdateSpaceObjectDto": {} }], [import("./space-object/dto/update-batch-space-object.dto"), { "UpdateBatchSpaceObjectDto": {} }], [import("./space-object/dto/add-tag-to-space-object.dto"), { "AddTagToSpaceObjectDto": { spaceObjectId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./space-object/dto/paginated-search-space-object.dto"), { "PaginatedSearchSpaceObjectDto": { field: { required: false, type: () => String }, search: { required: false, type: () => String }, sortKey: { required: false, type: () => String }, sortDirection: { required: false, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: false, type: () => Number }, perPage: { required: false, type: () => Number }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES } } }], [import("./space-object/dto/update-space-object-tags.dto"), { "UpdateSpaceObjectTagsDto": { spaceObjectId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./terrain/dto/create-terrain.dto"), { "CreateTerrainDto": { name: { required: true, type: () => String, maxLength: 300 }, material: { required: false, type: () => String }, description: { required: false, type: () => String, maxLength: 5000 }, public: { required: false, type: () => Boolean }, generator: { required: false, type: () => String }, noiseType: { required: false, type: () => Number }, positionX: { required: false, type: () => Number }, positionY: { required: false, type: () => Number }, positionZ: { required: false, type: () => Number }, heightStart: { required: false, type: () => Number }, heightRange: { required: false, type: () => Number }, seed: { required: false, type: () => Number } } }], [import("./terrain/dto/update-terrain.dto"), { "UpdateTerrainDto": {} }], [import("./space/dto/create-space.dto"), { "CreateSpaceDto": { name: { required: true, type: () => String, maxLength: 300 }, type: { required: true, type: () => String, description: "Optional properties" }, users: { required: false, type: () => Object, description: "START Section: Roles" }, userGroups: { required: false, type: () => Object }, terrain: { required: false, type: () => String, description: "END Section: Roles" }, environment: { required: false, type: () => String }, ownerUserGroup: { required: false, type: () => String }, template: { required: true, type: () => String }, lowerLimitY: { required: false, type: () => Number }, description: { required: false, type: () => String, maxLength: 5000 }, images: { required: false, type: () => [String] }, publicBuildPermissions: { required: false, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, tags: { required: false, type: () => t["./tag/models/tags.schema"].Tags }, maxUsers: { required: false, type: () => Number } } }], [import("./space/dto/update-space.dto"), { "UpdateSpaceDto": { patchCustomData: { required: false, type: () => Object, description: "@description These properties are PATCHED onto custom data (overwrites declared key-value pairs, but doesn't affect other key/value parirs)\n@date 2023-04-05 23:27" }, activeSpaceVersion: { required: false, type: () => String }, removeCustomDataKeys: { required: false, type: () => [String], description: "@description These properties are deleted from custom data. Other properties will not be affected\n@date 2023-04-05 23:27" }, patchSpaceVariablesData: { required: false, type: () => Object }, removeSpaceVariablesDataKeys: { required: false, type: () => [String], description: "@description These properties are deleted from spaceVariablesData. Other properties will not be affected\n@date 2023-06-05 16:59:26" }, tagsV2: { required: false, type: () => [String] }, scriptIds: { required: false, type: () => [String] }, scriptInstances: { required: false, type: () => [Object] }, materialInstances: { required: false, type: () => [Object] }, publicBuildPermissions: { required: true, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, kickRequests: { required: true, type: () => [String] } }, "CreateNewSpaceVersionDto": { updateSpaceWithActiveSpaceVersion: { required: true, type: () => Boolean }, name: { required: true, type: () => String } }, "SpaceCopyFromTemplateDto": { name: { required: true, type: () => String }, description: { required: true, type: () => String }, publicBuildPermissions: { required: true, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, maxUsers: { required: false, type: () => Number, default: 24 } } }], [import("./space/dto/upload-space-files.dto"), { "UploadSpaceFilesDto": { spaceId: { required: true, type: () => String }, files: { required: true, type: () => [Object] } } }], [import("./space/dto/paginated-search-space.dto"), { "PaginatedSearchSpaceDto": { field: { required: false, type: () => String }, search: { required: false, type: () => String }, sortKey: { required: false, type: () => String }, sortDirection: { required: false, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: false, type: () => Number }, perPage: { required: false, type: () => Number }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } } }], [import("./space-variable/dto/space-variables-data.dto"), { "CreateSpaceVariablesDataDocumentDto": { data: { required: true, type: () => Object, description: "@description We intentionally use a \"data\" property here so that other keys can be added in the future and the dto doesn't assume that everything in the dto should be saved to the database\nWe also want to be able to store top-level key:value pairs that the user doesn't have free reign access to.\n@date 2023-03-03 00:12" } } }], [import("./zone/dto/create-zone.dto"), { "CreateZoneDto": { zoneMode: { required: true, type: () => String, maxLength: 100 }, owner: { required: false, type: () => String, description: "@description The UserId of the user who created the zone. It's optional, but we do want this. It's just set to optional for other CreateZoneDto's validation on the cron job.\n@date 2023-06-17 22:42", minLength: 24, maxLength: 24 }, state: { required: true, type: () => String, maxLength: 100 }, ipAddress: { required: true, type: () => String, maxLength: 100 }, port: { required: true, type: () => Number }, uuid: { required: true, type: () => String, maxLength: 100 }, url: { required: true, type: () => String, maxLength: 100 }, gdServerVersion: { required: true, type: () => String, maxLength: 50 }, containerLastRefreshed: { required: false, type: () => Date }, name: { required: false, type: () => String, maxLength: 300 }, description: { required: false, type: () => String }, space: { required: false, type: () => String, description: "Only required if Build mode, but still run validation in case it exists for some reason (such as manual zone/server creation on the scaler without validation via mirror-server)", minLength: 24, maxLength: 24 }, spaceVersion: { required: false, type: () => String, description: "Only required if Play mode, but still run validation in case it exists for some reason(such as manual zone/server creation on the scaler without validation via mirror-server)", minLength: 24, maxLength: 24 } } }], [import("./zone/dto/update-zone.dto"), { "UpdateZoneDto": { id: { required: false, type: () => String } } }], [import("./zone/dto/create-play-server.dto"), { "CreatePlayServerDto": { zoneName: { required: false, type: () => String } } }], [import("./space/dto/add-tag-to-space.dto"), { "AddTagToSpaceDto": { spaceId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./mirror-db/dto/update-mirror-db-record.dto"), { "UpdateMirrorDBRecordDto": { recordData: { required: true, type: () => Object } } }], [import("./script-entity/dto/create-script-entity.dto"), { "CreateScriptEntityDto": { blocks: { required: true, type: () => [Object] } } }], [import("./script-entity/dto/update-script-entity.dto"), { "UpdateScriptEntityDto": {} }], [import("./roles/dto/set-user-role-for-one.dto"), { "SetUserRoleForOneDto": { targetUserId: { required: true, type: () => String }, role: { required: true, enum: t["./roles/models/role.enum"].ROLE } }, "RemoveUserRoleForOneDto": { targetUserId: { required: true, type: () => String, maxLength: 24 } } }], [import("./space/dto/update-space-tags.dto"), { "UpdateSpaceTagsDto": { spaceId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./space/dto/populate-space.dto"), { "PopulateSpaceDto": { populateCreator: { required: false, type: () => Boolean }, populateUsersPresent: { required: false, type: () => Boolean } } }], [import("./asset/dto/search-asset.dto"), { "SearchAssetDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String } } }], [import("./asset/dto/update-asset-tags.dto"), { "UpdateAssetTagsDto": { assetId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./asset/dto/include-soft-deleted-asset.dto"), { "IncludeSoftDeletedAssetDto": { includeSoftDeleted: { required: false, type: () => Boolean } } }], [import("./asset/dto/upsert-asset.dto"), { "UpsertAssetDto": { name: { required: true, type: () => String }, assetType: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, description: { required: true, type: () => String }, owner: { required: true, type: () => String }, initPositionX: { required: true, type: () => Number }, initPositionY: { required: true, type: () => Number }, initPositionZ: { required: true, type: () => Number }, initRotationX: { required: true, type: () => Number }, initRotationY: { required: true, type: () => Number }, initRotationZ: { required: true, type: () => Number }, initScaleX: { required: true, type: () => Number }, initScaleY: { required: true, type: () => Number }, initScaleZ: { required: true, type: () => Number }, collisionEnabled: { required: true, type: () => Boolean }, staticEnabled: { required: true, type: () => Boolean }, massKg: { required: true, type: () => Number }, gravityScale: { required: true, type: () => Number }, objectColor: { required: true, type: () => Object } } }], [import("./user/dto/submit-user-access-key.dto"), { "SubmitUserAccessKeyDto": { key: { required: true, type: () => String } } }], [import("./user/dto/update-user-sidebar-tags.dto"), { "UpdateUserSidebarTagsDto": { sidebarTags: { required: true, type: () => [String] } } }], [import("./user-groups/dto/create-group-users-invite.dto"), { "CreateUserGroupInviteDto": { group: { required: true, type: () => String, description: "Required properties" }, unlimited: { required: true, type: () => Boolean }, used: { required: true, type: () => Boolean }, status: { required: true, enum: t["./option-sets/user-group-invite-statuses"].USER_GROUP_INVITE_STATUSES }, completed: { required: true, type: () => Boolean }, creator: { required: true, type: () => String }, recipient: { required: true, type: () => String }, expirationDate: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group-users-membership.dto"), { "CreateUserGroupMembershipDto": { group: { required: true, type: () => String }, status: { required: true, enum: t["./option-sets/user-group-membership-statuses"].USER_GROUP_MEMBERSHIP_STATUSES }, creator: { required: true, type: () => String }, user: { required: true, type: () => String }, role: { required: true, enum: t["./option-sets/group-users-roles"].GROUP_ROLE }, expirationDate: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group-users-request.dto"), { "CreateUserGroupRequestDto": { group: { required: true, type: () => String }, unlimited: { required: true, type: () => Boolean }, used: { required: true, type: () => Boolean }, status: { required: true, enum: t["./option-sets/user-group-invite-statuses"].USER_GROUP_INVITE_STATUSES }, completed: { required: true, type: () => Boolean }, completedDate: { required: true, type: () => Date }, creator: { required: true, type: () => String }, updatedAt: { required: true, type: () => Date }, createdAt: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group.users.dto"), { "CreateUserGroupDto": { name: { required: true, type: () => String, description: "Required properties" }, public: { required: true, type: () => Boolean }, publicDescription: { required: true, type: () => String, description: "Optional properties" }, primaryContact: { required: true, type: () => String }, moderators: { required: true, type: () => [String] }, owners: { required: true, type: () => [String] }, image: { required: true, type: () => String }, discordUrl: { required: true, type: () => String }, polygonDaoContractPublicKey: { required: true, type: () => String }, ethereumDaoContractPublicKey: { required: true, type: () => String }, twitterUrl: { required: true, type: () => String }, websiteUrl: { required: true, type: () => String }, creator: { required: true, type: () => String } } }], [import("./user-groups/dto/update-group.users.dto"), { "UpdateUserGroupDto": {} }], [import("./space/material-instance/dto/create-material-instance.dto"), { "CreateMaterialInstanceDto": { parameters: { required: true, type: () => Object }, spaceId: { required: true, type: () => String } } }], [import("./space/material-instance/dto/update-material-instance.dto"), { "UpdateMaterialInstanceDto": { parameters: { required: true, type: () => Object } } }], [import("./zone/dto/populate-zone-owner.dto"), { "PopulateZoneOwnerDto": { populateOwner: { required: false, type: () => Boolean } } }], [import("./godot-server-override-config/dto/create-godot-server-override-config.dto"), { "CreateGodotServerOverrideConfigDto": { spaceId: { required: true, type: () => String, minLength: 24, maxLength: 24 } } }], [import("./block/dto/create-block.dto"), { "CreateBlockDto": { name: { required: true, type: () => String, description: "Required properties" }, blockType: { required: true, type: () => String }, description: { required: false, type: () => String, description: "Optional Properties", maxLength: 1000 }, mirrorPublicLibrary: { required: false, type: () => Boolean } } }], [import("./block/dto/update-block.dto"), { "UpdateBlockDto": {} }], [import("./favorite/dto/create-favorite.dto"), { "CreateFavoriteDto": { asset: { required: true, type: () => String }, user: { required: true, type: () => String }, creator: { required: true, type: () => String } } }], [import("./favorite/dto/update-favorite.dto"), { "UpdateFavoriteDto": {} }], [import("./stripe/dto/token.dto"), { "AddBank": { token: { required: true, type: () => String } }, "AddCard": { token: { required: true, type: () => String } }, "CardToken": { number: { required: true, type: () => String }, exp_month: { required: true, type: () => String }, exp_year: { required: true, type: () => String }, cvc: { required: true, type: () => String } } }], [import("./stripe/dto/paymentIntent.dto"), { "PaymentIntentDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, payment_method: { required: true, type: () => String } } }], [import("./stripe/dto/transfers.dto"), { "TransfersDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, destination: { required: true, type: () => String } } }], [import("./stripe/dto/subscription.dto"), { "SubscriptionDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, productId: { required: true, type: () => String }, priceId: { required: true, type: () => String }, destination: { required: true, type: () => String } }, "ProductDto": { name: { required: true, type: () => String }, description: { required: true, type: () => String } } }], [import("./stripe/dto/metadata.dto"), { "StripeSubscriptionMetadataDto": { userId: { required: true, type: () => String } } }], [import("./tag/dto/create-tag.dto"), { "CreateTagDto": { name: { required: true, type: () => String }, tagType: { required: true, description: "Optional", enum: t["./option-sets/tag-type"].TAG_TYPE }, mirrorPublicLibrary: { required: true, type: () => Boolean }, public: { required: true, type: () => Boolean }, parentTag: { required: true, type: () => String } }, "CreateThirdPartySourceTagDto": { thirdPartySourceHomePageUrl: { required: true, type: () => String }, thirdPartySourcePublicDescription: { required: true, type: () => String, description: "Optional" }, thirdPartySourceTwitterUrl: { required: true, type: () => String }, thirdPartySourceTMUserId: { required: true, type: () => String } } }], [import("./tag/dto/update-tag.dto"), { "UpdateTagDto": {} }], [import("./user-feedback/dto/create-user-feedback.dto"), { "CreateUserFeedbackItemDto": { name: { required: true, type: () => String }, description: { required: false, type: () => String, description: "Optional" }, userFeedbackType: { required: false, type: () => String }, USER_FEEDBACK_ITEM_STATUS: { required: false, type: () => String }, public: { required: false, type: () => Boolean } }, "CreateVoteOnUserFeedbackItemDto": { userFeedbackItemId: { required: true, type: () => String }, vote: { required: true, type: () => String } }, "CreateUserFeedbackItemFeatureRequestDto": {}, "CreateUserFeedbackItemBugDto": {} }], [import("./user-feedback/dto/update-user-feedback.dto"), { "UpdateUserFeedbackDto": {} }], [import("./user-feedback/dto/create-user-feedback-comment.dto"), { "CreateUserFeedbackCommentDto": { text: { required: true, type: () => String }, userFeedbackItemId: { required: true, type: () => String } } }], [import("./asset/dto/asset.dto"), { "GetAssetDto": { startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } }, "AssetParamsDto": { startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } } }], [import("./space/dto/search-space.dto"), { "SearchSpaceDto": { searchField: { required: true, type: () => String }, searchString: { required: true, type: () => String } } }], [import("./auth/dto/DevLoginUserEmailPassword.dto"), { "DevLoginUserEmailPassword": { email: { required: true, type: () => String }, password: { required: true, type: () => String } } }], [import("./user-groups/dto/search-group.dto"), { "SearchUserGroupDto": { searchField: { required: true, type: () => String }, searchstring: { required: true, type: () => String } } }], [import("./zone/dto/paginated-search-zone.dto"), { "PaginatedSearchZoneDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String }, sortKey: { required: true, type: () => String }, sortDirection: { required: true, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: true, type: () => Number }, perPage: { required: true, type: () => Number } } }], [import("./zone/dto/update-zone-status.dto"), { "UpdateZoneStatusDto": { id: { required: false, type: () => String }, uuid: { required: false, type: () => String }, state: { required: false, type: () => String }, url: { required: false, type: () => String }, version: { required: false, type: () => String }, address: { required: false, type: () => String }, port: { required: false, type: () => Number } } }]], "controllers": [[import("./app.controller"), { "AppController": { "getHello": { type: String }, "getHealth": { type: String }, "throwIntentionalError": {} } }], [import("./space/space.controller"), { "SpaceController": { "getAllPublicForUser": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: [Object] }, "getAllPublicForUserV2": { description: "Same as the above but no populate\n@description Retrieves a collection user's public spaces as public data\nid prefix added to prevent wildcard route clashes with file method order", type: [Object] }, "search": { description: "@description Retrieves a collection of space's as public data", type: [t["./space/space.schema"].SpacePublicData] }, "searchV2": { description: "@description Same as the above but no populate\n@date 2023-07-12 23:59", type: [t["./space/space.schema"].SpacePublicData] }, "findAllForMeWhereOwner": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: [Object] }, "findAllForMeWhereOwnerPaginatedV2": {}, "findAllForMeWhereOwnerPaginatedV3": { description: "@description This is the same as me-v2, but no populate\n@date 2023-07-12 23:53" }, "getPopularSpaces": { type: [Object] }, "getFavoriteSpaces": { type: [Object] }, "getRecentSpaces": { type: [Object] }, "getSpacesByTags": {}, "addTagToSpaceWithRoleChecks": { type: Object }, "updateSpaceTagsByTypeWithRoleChecks": { type: Object }, "deleteTagFromSpaceWithRoleChecks": {}, "findDiscoverSpacesForUser": { type: [Object] }, "findDiscoverSpacesForUserPaginatedV2": { type: Object }, "findDiscoverSpacesForUserPaginatedV3": { description: "@description This is the same as discover-v2, but no populate\n@date 2023-07-12 23:53", type: Object }, "findSpaceTemplates": { description: "@description This is the same as discover-v2, but no populate\n@date 2023-07-12 23:53", type: [Object] }, "getPublishedSpaces": { description: "@description Returns all Spaces with an activeSpaceVersion\n@date 2023-06-10 22:23" }, "getPublishedSpacesV2": { description: "@description same as get-published-spaces, but no populate\n@date 2023-07-12 23:54" }, "getLatestPublishedSpaceBySpaceId": { type: Object }, "refreshStats": { type: Object }, "findOne": { type: Object }, "findAllForUserV2": { type: [Object] }, "findAllForUser": { type: [Object] }, "create": { type: Object }, "update": { type: Object }, "remove": { type: Object }, "clearVoxels": {}, "copy": { type: Object }, "copyFromTemplate": { type: Object }, "remixSpace": { type: Object }, "publish": { type: Object }, "getPublishedSpacesBySpaceId": { type: [Object] }, "uploadPublic": { type: Object }, "restoreSpaceFromSpaceVersion": {}, "setUserRoleForOne": { description: "START Section: Owner permissions for role modification", type: Object }, "removeUserRoleForOne": { type: Object }, "kickMe": { description: "END Section: Owner permissions for role modification", type: Object } } }], [import("./terrain/terrain.controller"), { "TerrainController": { "findAllForUser": { type: [Object] }, "findAllPublic": { type: [Object] }, "findOne": { type: Object }, "create": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./util/file-upload/file-upload.controller"), { "FileUploadController": { "batchAssetUploadFromQueueBucket": {} } }], [import("./asset/asset.controller"), { "AssetController": { "search": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: [Object] }, "searchV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:49", type: [Object] }, "getMirrorPublicLibraryAssets": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: [Object] }, "getMirrorPublicLibraryAssetsV2": { description: "@description Same as getMirrorPublicLibraryAssets, but doesn't populate the fields\n@date 2023-07-12 23:33", type: [Object] }, "create": { type: Object }, "getUserRecentInstancedAssets": { type: [Object] }, "createWithUpload": { type: Object }, "getAssetsForMe": { description: "Get player's created assets\nTODO this needs to be paginated", type: [Object] }, "getAssetsForMeV2": { description: "Same as above but no populate\nTODO this needs to be paginated", type: [Object] }, "getAllAccessibleAssetsOfUser": { description: "Get all player's accessible assets. Accessible assets are assets that are public, or assets that are private but owned by the user.", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getAllAccessibleAssetsOfUserV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:45", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getRecentAssetsForUser": { type: [Object] }, "getRecentAssetsForUserV2": { type: [Object] }, "getPaginatedMyAssets": { type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMyAssetsV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:43", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMirrorAssets": { type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMirrorAssetsV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:41", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "findAllForUser": { type: [Object] }, "findOneAssetUsage": { type: t["./asset/asset.models"].AssetUsageApiResponse }, "getAssetsByTag": {}, "addTagToAssetsWithRoleChecks": { type: Object }, "updateAssetTagsByTypeWithRoleChecks": { type: Object }, "deleteTagFromAssetWithRoleChecks": {}, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object }, "undoAssetSoftDelete": { description: "@description This endpoint is used to undo soft delete of an asset.\n(Remove isSoftDeleted and softDeletedAt fields from the asset document)\n\n@date 2023-11-23", type: String }, "upload": { type: Object }, "uploadPublic": { type: Object }, "uploadThumbnail": { type: Object }, "getAsset": {}, "addAssetPurchaseOption": { type: Object }, "deleteAssetPurchaseOption": { type: Object } } }], [import("./user/user.controller"), { "UserController": { "findOne": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: t["./user/user.schema"].UserPublicData }, "findOneWithPublicProfile": { description: "@description Retrieves a Users public profile data including populated\n fields like public assets and public groups", type: t["./user/user.schema"].User }, "search": { description: "@description Retrieves a collection of Users public data", type: [t["./user/user.schema"].UserPublicData] }, "getCurrentUser": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: Object }, "getUserRecents": { type: Object }, "uploadPublic": { description: "TODO - Would be nice to have 1 file upload endpoint that can handle all entity types and paths\n move logic to service" }, "updateProfile": { type: Object }, "updateUserTutorial": { type: Object }, "updateDeepLink": { type: Object }, "updateAvatar": { type: Object }, "updateTermsAgreedTo": { type: Object }, "updateAvatarType": { type: Object }, "getUserEntityAction": { type: Object }, "getUserEntityActionsByMeForEntity": { type: [Object] }, "upsertUserEntityAction": { type: Object }, "deleteUserEntityAction": { type: Object }, "getMyFriends": { description: "START Section: Friends and friend requests ------------------------------------------------------", type: [t["./user/user.service"].Friend] }, "getMyFriendRequests": { type: [t["./user/user.service"].Friend] }, "acceptFriendRequest": { type: [t["./user/user.service"].Friend] }, "rejectFriendRequest": { type: [t["./user/user.service"].Friend] }, "getSentFriendRequests": { type: [t["./user/user.service"].Friend] }, "sendFriendRequest": { type: t["./user/user.schema"].User }, "removeFriend": { type: [t["./user/user.service"].Friend] }, "getUserCart": { description: "END Section: Friends and friend requests ------------------------------------------------------", type: Object }, "addUserCartItemToUserCart": { type: Object }, "removeAllUserItemsFromCart": { type: Object }, "removeUserCartItemFromUserCart": { type: Object }, "addRpmAvatarUrl": { description: "END Section: Cart ------------------------------------------------------", type: Object }, "createSignUpKey": { type: Object }, "submitUserAccessKey": {}, "removeRpmAvatarUrl": { description: "@description Removes an RPM url from readyPlayerMeAvatarUrls in Mongo", type: Object }, "getUserSidebarTags": { type: [String] }, "addUserSidebarTag": { type: String }, "updateUserSidebarTags": { type: [String] }, "deleteUserSidebarTag": {} } }], [import("./environment/environment.controller"), { "EnvironmentController": { "create": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./user-groups/user-group.controller"), { "UserGroupController": { "create": { type: Object }, "getAllGroupsForMe": { description: "@description Find all groups for current user", type: Object }, "getAllGroupInvitesForMe": { description: "@description Find all invites for the current user", type: Object }, "findPublicGroupMembershipForOtherUser": { description: "@description This is used for another user, NOT the current user,\nso we only get the PUBLIC groups that the person is a part of\nTODO - add ApiOkResponse type for UserGroupMembership", type: [Object] }, "getGroupMembershipForMe": { description: "@description Find all group members of current user\nTODO - add ApiOkResponse type for UserGroupMembership", type: Object }, "search": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./space/space-godot-server.controller"), { "SpaceGodotServerController": { "getLatestPublishedSpaceBySpaceId": { description: "***************************\n TEMP: AUTHED ENDPOINT UP HERE FOR 2023-03-17 13:53:32 RELEASE ISSUE\nWe should likely refactor our pattern for classes because order of routes DOES matter in NestJS, so being @Public() up top can cause issues\n**************************", type: Object }, "getActiveSpaceVersionForSpaceBySpaceId": { type: Object }, "updateTerrain": { description: "***************************\n END TEMP: AUTHED ENDPOINT UP HERE FOR 2023-03-17 13:53:32 RELEASE ISSUE\n**************************" } } }], [import("./mirror-server-config/mirror-server-config.controller"), { "MirrorServerConfigController": { "getConfig": { type: Object }, "setGdServerVersion": { type: Object } } }], [import("./space/material-instance/material-instance.controller"), { "MaterialInstanceController": { "create": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "findOne": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "update": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "delete": { type: String } } }], [import("./zone/zone.controller"), { "ZoneController": { "joinBuildServer": { description: "@description Requests a zone server with a specific space id and launches the server if needed for BUILD MODE", type: Object }, "getPlayServersForSpaceVersionId": { description: "@description gets Play servers for a spaceVersionId", type: [Object] }, "getPlayServersForSpaceId": { description: "@description gets Play servers for a spaceId", type: [Object] }, "joinPlayServerByZoneId": { description: "@description joins a play server by spaceVersionId and returns the active session", type: Object }, "joinPlayServerBySpaceId": { description: "@description joins a play server by spaceId, which looks up the activeSpaceVersion and finds the spaceVersion, then returns the zone. If a zone doesn't exist, it will create it", type: Object }, "createPlayServerWithSpaceVersion": { description: "@description joins a play server by spaceVersionId and returns the active session", type: Object }, "createPlayServerWithSpace": { type: Object }, "findAllZonesBySpaceId": { description: "@description Get all the Zone entities associated with a space id.", type: [Object] }, "findAllZonesByUserId": { description: "@description Get all the Zone entities associated with a user id.", type: [Object] }, "findOneZone": { description: "@description Retrieves a zone entity.", type: Object }, "updateOneZone": { description: "@description Update the user controlled values of a zone entity (Name, Description, Space)", type: Object }, "stopAllActiveZones": { description: "@description Stops all zone servers and updates their corresponding entities.\nQueries for every active Zone Server, requests that they shut down, and updates corresponding Zone entities." } } }], [import("./godot-server-override-config/godot-server-override-config.controller"), { "GodotServerOverrideConfigController": { "findOne": { type: String }, "findOneAlias": { type: String }, "create": { type: Object } } }], [import("./mirror-db/mirror-db.controller"), { "MirrorDBController": { "getRecordFromMirrorDBById": { type: Object }, "getRecordFromMirrorDBBySpaceId": { type: Object }, "getRecordFromMirrorDBBySpaceVersionId": { type: Object }, "updateRecordInMirrorDBById": { type: Object }, "deleteRecordFromMirrorDBById": { type: String } } }], [import("./script-entity/script-entity.controller"), { "ScriptEntityController": { "getRecentScripts": { type: [Object] }, "create": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "delete": { type: Object } } }], [import("./space-object/space-object.controller"), { "SpaceObjectController": { "create": { type: Object }, "createAlias": { type: Object }, "copy": { type: Object }, "findAllBySpaceId": { type: [Object] }, "getSpaceObjectsByTag": {}, "updateSpaceObjectTagsByTypeWithRoleChecks": { type: Object }, "addTagToSpaceObjectWithRoleChecks": { type: Object }, "deleteTagFromSpaceObjectWithRoleChecks": {}, "searchSpaceObjectsPaginated": {}, "findOne": { type: Object }, "update": { type: Object }, "remove": {} } }], [import("./auth/auth.controller"), { "AuthController": { "createUserWithEmailPasswordAndType": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************" }, "authedUserCreate": { type: t["./auth/auth.controller"].CreateAuthUserResponse }, "convertAnonymousAccountToFull": {}, "deleteAccount": {} } }], [import("./auth/auth-test.controller"), { "AuthTestController": { "deleteTestAccount": { description: "@description Only used in when NODE_ENV === NODE_ENV.TEST for e2e. Deletes the test account. Checks if the email is an e2e email that ends in @themirror.space. This is a POST so that a body can easily be included (no body in DELETE requests)\n@date 2023-03-16 01:01" } } }], [import("./block/block.controller"), { "BlockController": { "create": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./favorite/favorite.controller"), { "FavoriteController": { "create": { type: Object }, "findAllForUser": { type: [Object] }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./storage/storage.controller"), { "StorageController": { "getClientVersion": { description: "Public endpoint for getting the current version of the client application.", type: Object }, "getClientUrl": { description: "Public endpoint for getting the client application download URL for the target platform parameter.", type: String }, "getClientUrls": { description: "Public endpoint for getting all supported platforms client application download URLs.", type: Object }, "downloadFile": {} } }], [import("./stripe/stripe.controller"), { "StripeController": { "setupIntent": { description: "2023-07-24 11:12:23 Note: I'm commenting these out because it was old code and I don't think we need to expose all these. The implementation also wasn't secure with allowing an userId to be specified." }, "createCustomerAccount": { type: Object }, "createConnectAccount": { type: Object }, "deleteConnectAccount": { type: Object }, "createCard": { type: [Object] }, "getCardsList": { type: Object }, "getStripeAccountInfo": { type: Object }, "addBankAccount": { type: Object }, "deleteCard": { type: [Object] }, "setDefaultPaymentMethod": { type: Object }, "createPaymentIntent": {}, "getPaymentMethods": { type: Object }, "transfersAmount": { type: Object }, "createProduct": { type: Object }, "getAllProductsWithPrice": { type: Object }, "createSubscription": {}, "pauseSubscription": { type: Object }, "resumeSubscription": { type: Object }, "deleteSubscription": { type: Object }, "createDashboardLink": { type: Object }, "createCustomerPortalLink": { type: Object }, "handleStripeWebhook": { type: Object } } }], [import("./tag/tag.controller"), { "TagController": { "create": { type: Object }, "findAllMirrorPublicLibraryTags": { type: [Object] }, "findAllThemeTags": { type: [Object] }, "getTagTypes": { type: [String] }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./user-feedback/user-feedback.controller"), { "UserFeedbackController": { "findNewestPublicUserFeedbackItems": { description: "PUBLICLY ACCESSIBLE ENDPOINTS", type: [Object] }, "findTopPublicUserFeedbackItems": { type: [Object] }, "getUserFeedbackItemTypes": { type: [String] }, "findOne": { type: Object }, "findComments": { type: [Object] }, "findAllPublicUserFeedbackItems": { type: [Object] }, "create": { type: Object }, "voteOnUserFeedbackItem": { type: Object }, "createComment": { type: Object }, "update": { type: Object }, "removeUserFeedbackItem": { type: Object }, "removeComment": { type: Object } } }]] } }; + return { "@nestjs/swagger": { "models": [[import("./custom-data/dto/custom-data.dto"), { "CreateCustomDataDto": { data: { required: true, type: () => Object, description: "@description We intentionally use a \"data\" property here so that other keys can be added in the future and the dto doesn't assume that everything in the dto should be saved to the database\nWe also want to be able to store top-level key:value pairs that the user doesn't have free reign access to.\n@date 2023-03-03 00:12" } }, "ICustomDataKeyValuePairUpdateDto": { patchCustomData: { required: false, type: () => Object }, removeCustomDataKeys: { required: false, type: () => [String] } } }], [import("./roles/dto/create-role.dto"), { "CreateRoleDto": { defaultRole: { required: true, enum: t["./roles/models/role.enum"].ROLE }, creator: { required: true, type: () => String }, users: { required: false, type: () => Object }, userGroups: { required: false, type: () => Object } } }], [import("./util/file-upload/dto/file-upload.dto"), { "FileUploadDto": { path: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./asset/dto/create-asset.dto"), { "CreateAssetDto": { name: { required: true, type: () => String, description: "Required properties", maxLength: 300 }, assetType: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, defaultRole: { required: false, description: "Optional Properties", enum: t["./roles/models/role.enum"].ROLE }, description: { required: false, type: () => String, maxLength: 5000 }, mirrorPublicLibrary: { required: false, type: () => Boolean }, customData: { required: false, type: () => String }, thirdPartySourceDisplayName: { required: false, type: () => String, description: "START Section: Third Party Source for Mirror Public Library" }, thirdPartySourceUrl: { required: false, type: () => String }, thumbnail: { required: false, type: () => String, description: "END Section: Third Party Source for Mirror Public Library" }, categories: { required: false, type: () => [String], deprecated: true }, currentFile: { required: false, type: () => String, maxLength: 5000 }, fileHash: { required: false, type: () => String, maxLength: 64 }, public: { required: false, type: () => Boolean }, initPositionX: { required: false, type: () => Number }, initPositionY: { required: false, type: () => Number }, initPositionZ: { required: false, type: () => Number }, initRotationX: { required: false, type: () => Number }, initRotationY: { required: false, type: () => Number }, initRotationZ: { required: false, type: () => Number }, initScaleX: { required: false, type: () => Number }, initScaleY: { required: false, type: () => Number }, initScaleZ: { required: false, type: () => Number }, collisionEnabled: { required: false, type: () => Boolean }, staticEnabled: { required: false, type: () => Boolean }, massKg: { required: false, type: () => Number }, gravityScale: { required: false, type: () => Number }, objectColor: { required: false, type: () => Object }, tags: { required: false, type: () => t["./tag/models/tags.schema"].Tags } }, "CreateMaterialDto": { materialName: { required: false, type: () => String }, materialTransparencyMode: { required: false, type: () => String }, materialTransparencyProperties: { required: false, type: () => String }, textures: { required: false, type: () => String }, parameters: { required: true, type: () => Object }, externalAssetIds: { required: false, type: () => String }, materialType: { required: true, type: () => String }, code: { required: false, type: () => String } }, "CreateTextureDto": { textureImageFileHashMD5: { required: false, type: () => String }, textureLowQualityFileHashMD5: { required: false, type: () => String }, textureImagePropertyAppliesTo: { required: false, type: () => String } }, "CreateMapDto": { mapName: { required: false, type: () => String }, heightmapAssetId: { required: false, type: () => String }, flatMaterialAssetId: { required: false, type: () => String }, cliffMaterialAssetId: { required: false, type: () => String }, mapSize: { required: false, type: () => Number }, mapPrecision: { required: false, type: () => Number }, heightScale: { required: false, type: () => Number }, layerOffset: { required: false, type: () => Number }, flatUVScale: { required: false, type: () => Number }, cliffUVScale: { required: false, type: () => Number }, flatCliffRatio: { required: false, type: () => Number }, flatColor: { required: false, type: () => Object }, cliffColor: { required: false, type: () => Object }, colormapAssetId: { required: false, type: () => String }, colormapStrength: { required: false, type: () => Number } } }], [import("./asset/dto/paginated-search-asset.dto"), { "PaginatedSearchAssetDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String }, sortKey: { required: true, type: () => String }, sortDirection: { required: true, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: true, type: () => Number }, perPage: { required: true, type: () => Number }, startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number }, type: { required: true, deprecated: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, assetType: { required: true, deprecated: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, assetTypes: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE, isArray: true }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES } }, "PaginatedSearchAssetDtoV2": { populate: { required: true, type: () => [String] }, includeSoftDeleted: { required: false, type: () => Boolean } } }], [import("./asset/dto/update-asset.dto"), { "UpdateAssetDto": { __t: { required: false, type: () => Object, description: "@description If a discriminator/subclassed Asset is being updated, then this must be included. Otherwise, the parent Asset will be used, but because Mongoose is NOT typed under the hood, it won't know about the discriminator classes and thus won't work with properties of the discriminator if the discriminator model isn't used.\n@date 2023-06-07 11:24" } }, "AddAssetPurchaseOptionDto": {} }], [import("./asset/dto/upload-asset-file.dto"), { "UploadAssetFileDto": { userId: { required: true, type: () => String }, assetId: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./user/dto/create-user-access-key.dto"), { "CreateUserAccessKeyDto": { token: { required: true, type: () => String }, adminNote: { required: true, type: () => String } } }], [import("./user/dto/update-user.dto"), { "UpdateUserProfileDto": { email: { required: true, type: () => String }, displayName: { required: true, type: () => String }, publicBio: { required: true, type: () => String }, discordUserId: { required: true, type: () => String }, polygonPublicKey: { required: true, type: () => String }, ethereumPublicKey: { required: true, type: () => String }, twitterUsername: { required: true, type: () => String }, githubUsername: { required: true, type: () => String }, instagramUsername: { required: true, type: () => String }, youtubeChannel: { required: true, type: () => String }, artStationUsername: { required: true, type: () => String }, sketchfabUsername: { required: true, type: () => String }, profileImage: { required: true, type: () => String }, coverImage: { required: true, type: () => String } }, "UpdateUserDeepLinkDto": { deepLinkKey: { required: true, type: () => String }, deepLinkValue: { required: true, type: () => String } }, "UpdateUserTermsDto": { termsAgreedtoClosedAlpha: { required: false, type: () => Boolean }, termsAgreedtoGeneralTOSandPP: { required: false, type: () => Boolean } }, "UpdateUserAvatarDto": { avatarUrl: { required: false, type: () => String } }, "UpdateUserTutorialDto": { shownFirstInSpacePopupV1: { required: false, type: () => Boolean }, shownFirstHomeScreenPopupV1: { required: false, type: () => Boolean }, shownWebAppPopupV1: { required: false, type: () => Boolean } }, "UpdateUserAvatarTypeDto": { avatarType: { required: true, type: () => String }, readyPlayerMeUrlGlb: { required: false, type: () => String } }, "AddRpmAvatarUrlDto": { rpmAvatarUrl: { required: true, type: () => String } }, "RemoveRpmAvatarUrlDto": { rpmAvatarUrl: { required: true, type: () => String } }, "UpsertUserEntityActionDto": { forEntity: { required: true, type: () => String }, actionType: { required: true, type: () => String }, entityType: { required: true, type: () => String }, rating: { required: false, type: () => Number, description: "Optional properties", minimum: 1, maximum: 5 } }, "AddUserCartItemToUserCartDto": { purchaseOptionId: { required: true, type: () => String }, forEntity: { required: true, type: () => String }, entityType: { required: true, type: () => String } } }], [import("./user/dto/upload-profile-file.dto"), { "UploadProfileFileDto": { userId: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./user/dto/add-user-sidebar-tag.dto"), { "AddUserSidebarTagDto": { sidebarTag: { required: true, type: () => String } } }], [import("./asset/dto/add-tag-to-asset.dto"), { "AddTagToAssetDto": { assetId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./environment/dto/update-environment.dto"), { "UpdateEnvironmentDto": {} }], [import("./space-object/dto/create-space-object.dto"), { "CreateSpaceObjectDto": { spaceId: { required: true, type: () => String, description: "Required properties", minLength: 24, maxLength: 24 }, name: { required: true, type: () => String, maxLength: 300 }, asset: { required: true, type: () => String }, parentSpaceObject: { required: false, type: () => String }, description: { required: false, type: () => String }, locked: { required: false, type: () => Boolean }, preloadBeforeSpaceStarts: { required: false, type: () => Boolean }, position: { required: false, type: () => Object }, rotation: { required: false, type: () => Object }, scale: { required: false, type: () => Object }, offset: { required: false, type: () => Object }, collisionEnabled: { required: false, type: () => Boolean }, shapeType: { required: false, type: () => String }, bodyType: { required: false, type: () => String }, staticEnabled: { required: false, type: () => Boolean }, massKg: { required: false, type: () => Number }, gravityScale: { required: false, type: () => Number }, castShadows: { required: false, type: () => Boolean }, visibleFrom: { required: false, type: () => Number }, visibleTo: { required: false, type: () => Number }, visibleFromMargin: { required: false, type: () => Number }, visibleToMargin: { required: false, type: () => Number }, materialAssetId: { required: false, type: () => String }, objectColor: { required: false, type: () => Object }, objectTexture: { required: false, type: () => String }, objectTextureSize: { required: false, type: () => Number, deprecated: true }, objectTextureSizeV2: { required: false, type: () => Object }, objectTextureOffset: { required: false, type: () => Object }, objectTextureTriplanar: { required: false, type: () => Boolean }, objectTextureRepeat: { required: false, type: () => Boolean }, audioAutoPlay: { required: false, type: () => Boolean }, audioLoop: { required: false, type: () => Boolean }, audioIsSpatial: { required: false, type: () => Boolean }, audioPitch: { required: false, type: () => Number }, audioBaseVolume: { required: false, type: () => Number }, audioSpatialMaxVolume: { required: false, type: () => Number }, audioSpatialRange: { required: false, type: () => Number }, surfaceMaterialId: { required: false, type: () => [Object] }, scriptEvents: { required: false, type: () => [Object] }, extraNodes: { required: false, type: () => [Object] } } }], [import("./util/dto-generic/batch.dto"), { "Batch": { batch: { required: true } } }], [import("./space-object/dto/update-space-object.dto"), { "UpdateSpaceObjectDto": {} }], [import("./space-object/dto/update-batch-space-object.dto"), { "UpdateBatchSpaceObjectDto": {} }], [import("./space-object/dto/add-tag-to-space-object.dto"), { "AddTagToSpaceObjectDto": { spaceObjectId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./space-object/dto/paginated-search-space-object.dto"), { "PaginatedSearchSpaceObjectDto": { field: { required: false, type: () => String }, search: { required: false, type: () => String }, sortKey: { required: false, type: () => String }, sortDirection: { required: false, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: false, type: () => Number }, perPage: { required: false, type: () => Number }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES } } }], [import("./space-object/dto/update-space-object-tags.dto"), { "UpdateSpaceObjectTagsDto": { spaceObjectId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./terrain/dto/create-terrain.dto"), { "CreateTerrainDto": { name: { required: true, type: () => String, maxLength: 300 }, material: { required: false, type: () => String }, description: { required: false, type: () => String, maxLength: 5000 }, public: { required: false, type: () => Boolean }, generator: { required: false, type: () => String }, noiseType: { required: false, type: () => Number }, positionX: { required: false, type: () => Number }, positionY: { required: false, type: () => Number }, positionZ: { required: false, type: () => Number }, heightStart: { required: false, type: () => Number }, heightRange: { required: false, type: () => Number }, seed: { required: false, type: () => Number } } }], [import("./terrain/dto/update-terrain.dto"), { "UpdateTerrainDto": {} }], [import("./space/dto/create-space.dto"), { "CreateSpaceDto": { name: { required: true, type: () => String, maxLength: 300 }, type: { required: true, type: () => String, description: "Optional properties" }, users: { required: false, type: () => Object, description: "START Section: Roles" }, userGroups: { required: false, type: () => Object }, terrain: { required: false, type: () => String, description: "END Section: Roles" }, environment: { required: false, type: () => String }, ownerUserGroup: { required: false, type: () => String }, template: { required: true, type: () => String }, lowerLimitY: { required: false, type: () => Number }, description: { required: false, type: () => String, maxLength: 5000 }, images: { required: false, type: () => [String] }, publicBuildPermissions: { required: false, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, tags: { required: false, type: () => t["./tag/models/tags.schema"].Tags }, maxUsers: { required: false, type: () => Number } } }], [import("./space/dto/update-space.dto"), { "UpdateSpaceDto": { patchCustomData: { required: false, type: () => Object, description: "@description These properties are PATCHED onto custom data (overwrites declared key-value pairs, but doesn't affect other key/value parirs)\n@date 2023-04-05 23:27" }, activeSpaceVersion: { required: false, type: () => String }, removeCustomDataKeys: { required: false, type: () => [String], description: "@description These properties are deleted from custom data. Other properties will not be affected\n@date 2023-04-05 23:27" }, patchSpaceVariablesData: { required: false, type: () => Object }, removeSpaceVariablesDataKeys: { required: false, type: () => [String], description: "@description These properties are deleted from spaceVariablesData. Other properties will not be affected\n@date 2023-06-05 16:59:26" }, tagsV2: { required: false, type: () => [String] }, scriptIds: { required: false, type: () => [String] }, scriptInstances: { required: false, type: () => [Object] }, materialInstances: { required: false, type: () => [Object] }, publicBuildPermissions: { required: true, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, kickRequests: { required: true, type: () => [String] } }, "CreateNewSpaceVersionDto": { updateSpaceWithActiveSpaceVersion: { required: true, type: () => Boolean }, name: { required: true, type: () => String } }, "SpaceCopyFromTemplateDto": { name: { required: true, type: () => String }, description: { required: true, type: () => String }, publicBuildPermissions: { required: true, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, maxUsers: { required: false, type: () => Number, default: 24 } } }], [import("./space/dto/upload-space-files.dto"), { "UploadSpaceFilesDto": { spaceId: { required: true, type: () => String }, files: { required: true, type: () => [Object] } } }], [import("./space/dto/paginated-search-space.dto"), { "PaginatedSearchSpaceDto": { field: { required: false, type: () => String }, search: { required: false, type: () => String }, sortKey: { required: false, type: () => String }, sortDirection: { required: false, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: false, type: () => Number }, perPage: { required: false, type: () => Number }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } } }], [import("./space-variable/dto/space-variables-data.dto"), { "CreateSpaceVariablesDataDocumentDto": { data: { required: true, type: () => Object, description: "@description We intentionally use a \"data\" property here so that other keys can be added in the future and the dto doesn't assume that everything in the dto should be saved to the database\nWe also want to be able to store top-level key:value pairs that the user doesn't have free reign access to.\n@date 2023-03-03 00:12" } } }], [import("./zone/dto/create-zone.dto"), { "CreateZoneDto": { zoneMode: { required: true, type: () => String, maxLength: 100 }, owner: { required: false, type: () => String, description: "@description The UserId of the user who created the zone. It's optional, but we do want this. It's just set to optional for other CreateZoneDto's validation on the cron job.\n@date 2023-06-17 22:42", minLength: 24, maxLength: 24 }, state: { required: true, type: () => String, maxLength: 100 }, ipAddress: { required: true, type: () => String, maxLength: 100 }, port: { required: true, type: () => Number }, uuid: { required: true, type: () => String, maxLength: 100 }, url: { required: true, type: () => String, maxLength: 100 }, gdServerVersion: { required: true, type: () => String, maxLength: 50 }, containerLastRefreshed: { required: false, type: () => Date }, name: { required: false, type: () => String, maxLength: 300 }, description: { required: false, type: () => String }, space: { required: false, type: () => String, description: "Only required if Build mode, but still run validation in case it exists for some reason (such as manual zone/server creation on the scaler without validation via mirror-server)", minLength: 24, maxLength: 24 }, spaceVersion: { required: false, type: () => String, description: "Only required if Play mode, but still run validation in case it exists for some reason(such as manual zone/server creation on the scaler without validation via mirror-server)", minLength: 24, maxLength: 24 } } }], [import("./zone/dto/update-zone.dto"), { "UpdateZoneDto": { id: { required: false, type: () => String } } }], [import("./zone/dto/create-play-server.dto"), { "CreatePlayServerDto": { zoneName: { required: false, type: () => String } } }], [import("./space/dto/add-tag-to-space.dto"), { "AddTagToSpaceDto": { spaceId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./mirror-db/dto/update-mirror-db-record.dto"), { "UpdateMirrorDBRecordDto": { recordData: { required: true, type: () => Object } } }], [import("./script-entity/dto/create-script-entity.dto"), { "CreateScriptEntityDto": { blocks: { required: true, type: () => [Object] } } }], [import("./script-entity/dto/update-script-entity.dto"), { "UpdateScriptEntityDto": {} }], [import("./roles/dto/set-user-role-for-one.dto"), { "SetUserRoleForOneDto": { targetUserId: { required: true, type: () => String }, role: { required: true, enum: t["./roles/models/role.enum"].ROLE } }, "RemoveUserRoleForOneDto": { targetUserId: { required: true, type: () => String, maxLength: 24 } } }], [import("./space/dto/update-space-tags.dto"), { "UpdateSpaceTagsDto": { spaceId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./space/dto/populate-space.dto"), { "PopulateSpaceDto": { populateCreator: { required: false, type: () => Boolean }, populateUsersPresent: { required: false, type: () => Boolean } } }], [import("./asset/dto/search-asset.dto"), { "SearchAssetDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String } } }], [import("./asset/dto/update-asset-tags.dto"), { "UpdateAssetTagsDto": { assetId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./asset/dto/include-soft-deleted-asset.dto"), { "IncludeSoftDeletedAssetDto": { includeSoftDeleted: { required: false, type: () => Boolean } } }], [import("./asset/dto/upsert-asset.dto"), { "UpsertAssetDto": { name: { required: true, type: () => String }, assetType: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, description: { required: true, type: () => String }, owner: { required: true, type: () => String }, initPositionX: { required: true, type: () => Number }, initPositionY: { required: true, type: () => Number }, initPositionZ: { required: true, type: () => Number }, initRotationX: { required: true, type: () => Number }, initRotationY: { required: true, type: () => Number }, initRotationZ: { required: true, type: () => Number }, initScaleX: { required: true, type: () => Number }, initScaleY: { required: true, type: () => Number }, initScaleZ: { required: true, type: () => Number }, collisionEnabled: { required: true, type: () => Boolean }, staticEnabled: { required: true, type: () => Boolean }, massKg: { required: true, type: () => Number }, gravityScale: { required: true, type: () => Number }, objectColor: { required: true, type: () => Object } } }], [import("./user/dto/submit-user-access-key.dto"), { "SubmitUserAccessKeyDto": { key: { required: true, type: () => String } } }], [import("./user/dto/update-user-sidebar-tags.dto"), { "UpdateUserSidebarTagsDto": { sidebarTags: { required: true, type: () => [String] } } }], [import("./user-groups/dto/create-group-users-invite.dto"), { "CreateUserGroupInviteDto": { group: { required: true, type: () => String, description: "Required properties" }, unlimited: { required: true, type: () => Boolean }, used: { required: true, type: () => Boolean }, status: { required: true, enum: t["./option-sets/user-group-invite-statuses"].USER_GROUP_INVITE_STATUSES }, completed: { required: true, type: () => Boolean }, creator: { required: true, type: () => String }, recipient: { required: true, type: () => String }, expirationDate: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group-users-membership.dto"), { "CreateUserGroupMembershipDto": { group: { required: true, type: () => String }, status: { required: true, enum: t["./option-sets/user-group-membership-statuses"].USER_GROUP_MEMBERSHIP_STATUSES }, creator: { required: true, type: () => String }, user: { required: true, type: () => String }, role: { required: true, enum: t["./option-sets/group-users-roles"].GROUP_ROLE }, expirationDate: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group-users-request.dto"), { "CreateUserGroupRequestDto": { group: { required: true, type: () => String }, unlimited: { required: true, type: () => Boolean }, used: { required: true, type: () => Boolean }, status: { required: true, enum: t["./option-sets/user-group-invite-statuses"].USER_GROUP_INVITE_STATUSES }, completed: { required: true, type: () => Boolean }, completedDate: { required: true, type: () => Date }, creator: { required: true, type: () => String }, updatedAt: { required: true, type: () => Date }, createdAt: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group.users.dto"), { "CreateUserGroupDto": { name: { required: true, type: () => String, description: "Required properties" }, public: { required: true, type: () => Boolean }, publicDescription: { required: true, type: () => String, description: "Optional properties" }, primaryContact: { required: true, type: () => String }, moderators: { required: true, type: () => [String] }, owners: { required: true, type: () => [String] }, image: { required: true, type: () => String }, discordUrl: { required: true, type: () => String }, polygonDaoContractPublicKey: { required: true, type: () => String }, ethereumDaoContractPublicKey: { required: true, type: () => String }, twitterUrl: { required: true, type: () => String }, websiteUrl: { required: true, type: () => String }, creator: { required: true, type: () => String } } }], [import("./user-groups/dto/update-group.users.dto"), { "UpdateUserGroupDto": {} }], [import("./space/material-instance/dto/create-material-instance.dto"), { "CreateMaterialInstanceDto": { parameters: { required: true, type: () => Object }, spaceId: { required: true, type: () => String } } }], [import("./space/material-instance/dto/update-material-instance.dto"), { "UpdateMaterialInstanceDto": { parameters: { required: true, type: () => Object } } }], [import("./zone/dto/populate-zone-owner.dto"), { "PopulateZoneOwnerDto": { populateOwner: { required: false, type: () => Boolean } } }], [import("./godot-server-override-config/dto/create-godot-server-override-config.dto"), { "CreateGodotServerOverrideConfigDto": { spaceId: { required: true, type: () => String, minLength: 24, maxLength: 24 } } }], [import("./block/dto/create-block.dto"), { "CreateBlockDto": { name: { required: true, type: () => String, description: "Required properties" }, blockType: { required: true, type: () => String }, description: { required: false, type: () => String, description: "Optional Properties", maxLength: 1000 }, mirrorPublicLibrary: { required: false, type: () => Boolean } } }], [import("./block/dto/update-block.dto"), { "UpdateBlockDto": {} }], [import("./favorite/dto/create-favorite.dto"), { "CreateFavoriteDto": { asset: { required: true, type: () => String }, user: { required: true, type: () => String }, creator: { required: true, type: () => String } } }], [import("./favorite/dto/update-favorite.dto"), { "UpdateFavoriteDto": {} }], [import("./stripe/dto/token.dto"), { "AddBank": { token: { required: true, type: () => String } }, "AddCard": { token: { required: true, type: () => String } }, "CardToken": { number: { required: true, type: () => String }, exp_month: { required: true, type: () => String }, exp_year: { required: true, type: () => String }, cvc: { required: true, type: () => String } } }], [import("./stripe/dto/paymentIntent.dto"), { "PaymentIntentDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, payment_method: { required: true, type: () => String } } }], [import("./stripe/dto/transfers.dto"), { "TransfersDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, destination: { required: true, type: () => String } } }], [import("./stripe/dto/subscription.dto"), { "SubscriptionDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, productId: { required: true, type: () => String }, priceId: { required: true, type: () => String }, destination: { required: true, type: () => String } }, "ProductDto": { name: { required: true, type: () => String }, description: { required: true, type: () => String } } }], [import("./stripe/dto/metadata.dto"), { "StripeSubscriptionMetadataDto": { userId: { required: true, type: () => String } } }], [import("./tag/dto/create-tag.dto"), { "CreateTagDto": { name: { required: true, type: () => String }, tagType: { required: true, description: "Optional", enum: t["./option-sets/tag-type"].TAG_TYPE }, mirrorPublicLibrary: { required: true, type: () => Boolean }, public: { required: true, type: () => Boolean }, parentTag: { required: true, type: () => String } }, "CreateThirdPartySourceTagDto": { thirdPartySourceHomePageUrl: { required: true, type: () => String }, thirdPartySourcePublicDescription: { required: true, type: () => String, description: "Optional" }, thirdPartySourceTwitterUrl: { required: true, type: () => String }, thirdPartySourceTMUserId: { required: true, type: () => String } } }], [import("./tag/dto/update-tag.dto"), { "UpdateTagDto": {} }], [import("./user-feedback/dto/create-user-feedback.dto"), { "CreateUserFeedbackItemDto": { name: { required: true, type: () => String }, description: { required: false, type: () => String, description: "Optional" }, userFeedbackType: { required: false, type: () => String }, USER_FEEDBACK_ITEM_STATUS: { required: false, type: () => String }, public: { required: false, type: () => Boolean } }, "CreateVoteOnUserFeedbackItemDto": { userFeedbackItemId: { required: true, type: () => String }, vote: { required: true, type: () => String } }, "CreateUserFeedbackItemFeatureRequestDto": {}, "CreateUserFeedbackItemBugDto": {} }], [import("./user-feedback/dto/update-user-feedback.dto"), { "UpdateUserFeedbackDto": {} }], [import("./user-feedback/dto/create-user-feedback-comment.dto"), { "CreateUserFeedbackCommentDto": { text: { required: true, type: () => String }, userFeedbackItemId: { required: true, type: () => String } } }], [import("./asset/dto/asset.dto"), { "GetAssetDto": { startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } }, "AssetParamsDto": { startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } } }], [import("./space/dto/search-space.dto"), { "SearchSpaceDto": { searchField: { required: true, type: () => String }, searchString: { required: true, type: () => String } } }], [import("./auth/dto/DevLoginUserEmailPassword.dto"), { "DevLoginUserEmailPassword": { email: { required: true, type: () => String }, password: { required: true, type: () => String } } }], [import("./user-groups/dto/search-group.dto"), { "SearchUserGroupDto": { searchField: { required: true, type: () => String }, searchstring: { required: true, type: () => String } } }], [import("./zone/dto/paginated-search-zone.dto"), { "PaginatedSearchZoneDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String }, sortKey: { required: true, type: () => String }, sortDirection: { required: true, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: true, type: () => Number }, perPage: { required: true, type: () => Number } } }], [import("./zone/dto/update-zone-status.dto"), { "UpdateZoneStatusDto": { id: { required: false, type: () => String }, uuid: { required: false, type: () => String }, state: { required: false, type: () => String }, url: { required: false, type: () => String }, version: { required: false, type: () => String }, address: { required: false, type: () => String }, port: { required: false, type: () => Number } } }]], "controllers": [[import("./app.controller"), { "AppController": { "getHello": { type: String }, "getHealth": { type: String }, "throwIntentionalError": {} } }], [import("./space/space.controller"), { "SpaceController": { "getAllPublicForUser": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: [Object] }, "getAllPublicForUserV2": { description: "Same as the above but no populate\n@description Retrieves a collection user's public spaces as public data\nid prefix added to prevent wildcard route clashes with file method order", type: [Object] }, "search": { description: "@description Retrieves a collection of space's as public data", type: [t["./space/space.schema"].SpacePublicData] }, "searchV2": { description: "@description Same as the above but no populate\n@date 2023-07-12 23:59", type: [t["./space/space.schema"].SpacePublicData] }, "findAllForMeWhereOwner": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: [Object] }, "findAllForMeWhereOwnerPaginatedV2": {}, "findAllForMeWhereOwnerPaginatedV3": { description: "@description This is the same as me-v2, but no populate\n@date 2023-07-12 23:53" }, "getPopularSpaces": { type: [Object] }, "getFavoriteSpaces": { type: [Object] }, "getRecentSpaces": { type: [Object] }, "getSpacesByTags": {}, "addTagToSpaceWithRoleChecks": { type: Object }, "updateSpaceTagsByTypeWithRoleChecks": { type: Object }, "deleteTagFromSpaceWithRoleChecks": {}, "findDiscoverSpacesForUser": { type: [Object] }, "findDiscoverSpacesForUserPaginatedV2": { type: Object }, "findDiscoverSpacesForUserPaginatedV3": { description: "@description This is the same as discover-v2, but no populate\n@date 2023-07-12 23:53", type: Object }, "findSpaceTemplates": { description: "@description This is the same as discover-v2, but no populate\n@date 2023-07-12 23:53", type: [Object] }, "getPublishedSpaces": { description: "@description Returns all Spaces with an activeSpaceVersion\n@date 2023-06-10 22:23" }, "getPublishedSpacesV2": { description: "@description same as get-published-spaces, but no populate\n@date 2023-07-12 23:54" }, "getLatestPublishedSpaceBySpaceId": { type: Object }, "refreshStats": { type: Object }, "findOne": { type: Object }, "findAllForUserV2": { type: [Object] }, "findAllForUser": { type: [Object] }, "create": { type: Object }, "update": { type: Object }, "remove": { type: Object }, "clearVoxels": {}, "copy": { type: Object }, "copyFromTemplate": { type: Object }, "remixSpace": { type: Object }, "publish": { type: Object }, "getPublishedSpacesBySpaceId": { type: [Object] }, "uploadPublic": { type: Object }, "restoreSpaceFromSpaceVersion": {}, "setUserRoleForOne": { description: "START Section: Owner permissions for role modification", type: Object }, "removeUserRoleForOne": { type: Object }, "getAssetsListPerSpace": { description: "END Section: Owner permissions for role modification", type: [Object] }, "kickMe": { type: Object } } }], [import("./terrain/terrain.controller"), { "TerrainController": { "findAllForUser": { type: [Object] }, "findAllPublic": { type: [Object] }, "findOne": { type: Object }, "create": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./util/file-upload/file-upload.controller"), { "FileUploadController": { "batchAssetUploadFromQueueBucket": {} } }], [import("./asset/asset.controller"), { "AssetController": { "search": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: [Object] }, "searchV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:49", type: [Object] }, "getMirrorPublicLibraryAssets": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: [Object] }, "getMirrorPublicLibraryAssetsV2": { description: "@description Same as getMirrorPublicLibraryAssets, but doesn't populate the fields\n@date 2023-07-12 23:33", type: [Object] }, "create": { type: Object }, "getUserRecentInstancedAssets": { type: [Object] }, "createWithUpload": { type: Object }, "getAssetsForMe": { description: "Get player's created assets\nTODO this needs to be paginated", type: [Object] }, "getAssetsForMeV2": { description: "Same as above but no populate\nTODO this needs to be paginated", type: [Object] }, "getAllAccessibleAssetsOfUser": { description: "Get all player's accessible assets. Accessible assets are assets that are public, or assets that are private but owned by the user.", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getAllAccessibleAssetsOfUserV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:45", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getRecentAssetsForUser": { type: [Object] }, "getRecentAssetsForUserV2": { type: [Object] }, "getPaginatedMyAssets": { type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMyAssetsV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:43", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMirrorAssets": { type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMirrorAssetsV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:41", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "findAllForUser": { type: [Object] }, "findOneAssetUsage": { type: t["./asset/asset.models"].AssetUsageApiResponse }, "getAssetsByTag": {}, "addTagToAssetsWithRoleChecks": { type: Object }, "updateAssetTagsByTypeWithRoleChecks": { type: Object }, "deleteTagFromAssetWithRoleChecks": {}, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object }, "undoAssetSoftDelete": { description: "@description This endpoint is used to undo soft delete of an asset.\n(Remove isSoftDeleted and softDeletedAt fields from the asset document)\n\n@date 2023-11-23", type: String }, "upload": { type: Object }, "uploadPublic": { type: Object }, "uploadThumbnail": { type: Object }, "getAsset": {}, "addAssetPurchaseOption": { type: Object }, "deleteAssetPurchaseOption": { type: Object }, "getAllAssetsBySpaceIdWithRolesCheck": { type: [Object] } } }], [import("./user/user.controller"), { "UserController": { "findOne": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: t["./user/user.schema"].UserPublicData }, "findOneWithPublicProfile": { description: "@description Retrieves a Users public profile data including populated\n fields like public assets and public groups", type: t["./user/user.schema"].User }, "search": { description: "@description Retrieves a collection of Users public data", type: [t["./user/user.schema"].UserPublicData] }, "getCurrentUser": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: Object }, "getUserRecents": { type: Object }, "uploadPublic": { description: "TODO - Would be nice to have 1 file upload endpoint that can handle all entity types and paths\n move logic to service" }, "updateProfile": { type: Object }, "updateUserTutorial": { type: Object }, "updateDeepLink": { type: Object }, "updateAvatar": { type: Object }, "updateTermsAgreedTo": { type: Object }, "updateAvatarType": { type: Object }, "getUserEntityAction": { type: Object }, "getUserEntityActionsByMeForEntity": { type: [Object] }, "upsertUserEntityAction": { type: Object }, "deleteUserEntityAction": { type: Object }, "getMyFriends": { description: "START Section: Friends and friend requests ------------------------------------------------------", type: [t["./user/user.service"].Friend] }, "getMyFriendRequests": { type: [t["./user/user.service"].Friend] }, "acceptFriendRequest": { type: [t["./user/user.service"].Friend] }, "rejectFriendRequest": { type: [t["./user/user.service"].Friend] }, "getSentFriendRequests": { type: [t["./user/user.service"].Friend] }, "sendFriendRequest": { type: t["./user/user.schema"].User }, "removeFriend": { type: [t["./user/user.service"].Friend] }, "getUserCart": { description: "END Section: Friends and friend requests ------------------------------------------------------", type: Object }, "addUserCartItemToUserCart": { type: Object }, "removeAllUserItemsFromCart": { type: Object }, "removeUserCartItemFromUserCart": { type: Object }, "addRpmAvatarUrl": { description: "END Section: Cart ------------------------------------------------------", type: Object }, "createSignUpKey": { type: Object }, "submitUserAccessKey": {}, "removeRpmAvatarUrl": { description: "@description Removes an RPM url from readyPlayerMeAvatarUrls in Mongo", type: Object }, "getUserSidebarTags": { type: [String] }, "addUserSidebarTag": { type: String }, "updateUserSidebarTags": { type: [String] }, "deleteUserSidebarTag": {} } }], [import("./environment/environment.controller"), { "EnvironmentController": { "create": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./user-groups/user-group.controller"), { "UserGroupController": { "create": { type: Object }, "getAllGroupsForMe": { description: "@description Find all groups for current user", type: Object }, "getAllGroupInvitesForMe": { description: "@description Find all invites for the current user", type: Object }, "findPublicGroupMembershipForOtherUser": { description: "@description This is used for another user, NOT the current user,\nso we only get the PUBLIC groups that the person is a part of\nTODO - add ApiOkResponse type for UserGroupMembership", type: [Object] }, "getGroupMembershipForMe": { description: "@description Find all group members of current user\nTODO - add ApiOkResponse type for UserGroupMembership", type: Object }, "search": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./space/space-godot-server.controller"), { "SpaceGodotServerController": { "getLatestPublishedSpaceBySpaceId": { description: "***************************\n TEMP: AUTHED ENDPOINT UP HERE FOR 2023-03-17 13:53:32 RELEASE ISSUE\nWe should likely refactor our pattern for classes because order of routes DOES matter in NestJS, so being @Public() up top can cause issues\n**************************", type: Object }, "getActiveSpaceVersionForSpaceBySpaceId": { type: Object }, "updateTerrain": { description: "***************************\n END TEMP: AUTHED ENDPOINT UP HERE FOR 2023-03-17 13:53:32 RELEASE ISSUE\n**************************" } } }], [import("./mirror-server-config/mirror-server-config.controller"), { "MirrorServerConfigController": { "getConfig": { type: Object }, "setGdServerVersion": { type: Object } } }], [import("./space/material-instance/material-instance.controller"), { "MaterialInstanceController": { "create": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "findOne": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "update": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "delete": { type: String } } }], [import("./zone/zone.controller"), { "ZoneController": { "joinBuildServer": { description: "@description Requests a zone server with a specific space id and launches the server if needed for BUILD MODE", type: Object }, "getPlayServersForSpaceVersionId": { description: "@description gets Play servers for a spaceVersionId", type: [Object] }, "getPlayServersForSpaceId": { description: "@description gets Play servers for a spaceId", type: [Object] }, "joinPlayServerByZoneId": { description: "@description joins a play server by spaceVersionId and returns the active session", type: Object }, "joinPlayServerBySpaceId": { description: "@description joins a play server by spaceId, which looks up the activeSpaceVersion and finds the spaceVersion, then returns the zone. If a zone doesn't exist, it will create it", type: Object }, "createPlayServerWithSpaceVersion": { description: "@description joins a play server by spaceVersionId and returns the active session", type: Object }, "createPlayServerWithSpace": { type: Object }, "findAllZonesBySpaceId": { description: "@description Get all the Zone entities associated with a space id.", type: [Object] }, "findAllZonesByUserId": { description: "@description Get all the Zone entities associated with a user id.", type: [Object] }, "findOneZone": { description: "@description Retrieves a zone entity.", type: Object }, "updateOneZone": { description: "@description Update the user controlled values of a zone entity (Name, Description, Space)", type: Object }, "stopAllActiveZones": { description: "@description Stops all zone servers and updates their corresponding entities.\nQueries for every active Zone Server, requests that they shut down, and updates corresponding Zone entities." } } }], [import("./godot-server-override-config/godot-server-override-config.controller"), { "GodotServerOverrideConfigController": { "findOne": { type: String }, "findOneAlias": { type: String }, "create": { type: Object } } }], [import("./mirror-db/mirror-db.controller"), { "MirrorDBController": { "getRecordFromMirrorDBById": { type: Object }, "getRecordFromMirrorDBBySpaceId": { type: Object }, "getRecordFromMirrorDBBySpaceVersionId": { type: Object }, "updateRecordInMirrorDBById": { type: Object }, "deleteRecordFromMirrorDBById": { type: String } } }], [import("./script-entity/script-entity.controller"), { "ScriptEntityController": { "getRecentScripts": { type: [Object] }, "create": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "delete": { type: Object } } }], [import("./space-object/space-object.controller"), { "SpaceObjectController": { "create": { type: Object }, "createAlias": { type: Object }, "copy": { type: Object }, "findAllBySpaceId": { type: [Object] }, "findAllBySpaceIdWithRolesCheck": { type: [Object] }, "getSpaceObjectsByTag": {}, "updateSpaceObjectTagsByTypeWithRoleChecks": { type: Object }, "addTagToSpaceObjectWithRoleChecks": { type: Object }, "deleteTagFromSpaceObjectWithRoleChecks": {}, "searchSpaceObjectsPaginated": {}, "findOne": { type: Object }, "update": { type: Object }, "remove": {} } }], [import("./auth/auth.controller"), { "AuthController": { "createUserWithEmailPasswordAndType": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************" }, "authedUserCreate": { type: t["./auth/auth.controller"].CreateAuthUserResponse }, "convertAnonymousAccountToFull": {}, "deleteAccount": {} } }], [import("./auth/auth-test.controller"), { "AuthTestController": { "deleteTestAccount": { description: "@description Only used in when NODE_ENV === NODE_ENV.TEST for e2e. Deletes the test account. Checks if the email is an e2e email that ends in @themirror.space. This is a POST so that a body can easily be included (no body in DELETE requests)\n@date 2023-03-16 01:01" } } }], [import("./block/block.controller"), { "BlockController": { "create": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./favorite/favorite.controller"), { "FavoriteController": { "create": { type: Object }, "findAllForUser": { type: [Object] }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./storage/storage.controller"), { "StorageController": { "getClientVersion": { description: "Public endpoint for getting the current version of the client application.", type: Object }, "getClientUrl": { description: "Public endpoint for getting the client application download URL for the target platform parameter.", type: String }, "getClientUrls": { description: "Public endpoint for getting all supported platforms client application download URLs.", type: Object }, "downloadFile": {} } }], [import("./stripe/stripe.controller"), { "StripeController": { "setupIntent": { description: "2023-07-24 11:12:23 Note: I'm commenting these out because it was old code and I don't think we need to expose all these. The implementation also wasn't secure with allowing an userId to be specified." }, "createCustomerAccount": { type: Object }, "createConnectAccount": { type: Object }, "deleteConnectAccount": { type: Object }, "createCard": { type: [Object] }, "getCardsList": { type: Object }, "getStripeAccountInfo": { type: Object }, "addBankAccount": { type: Object }, "deleteCard": { type: [Object] }, "setDefaultPaymentMethod": { type: Object }, "createPaymentIntent": {}, "getPaymentMethods": { type: Object }, "transfersAmount": { type: Object }, "createProduct": { type: Object }, "getAllProductsWithPrice": { type: Object }, "createSubscription": {}, "pauseSubscription": { type: Object }, "resumeSubscription": { type: Object }, "deleteSubscription": { type: Object }, "createDashboardLink": { type: Object }, "createCustomerPortalLink": { type: Object }, "handleStripeWebhook": { type: Object } } }], [import("./tag/tag.controller"), { "TagController": { "create": { type: Object }, "findAllMirrorPublicLibraryTags": { type: [Object] }, "findAllThemeTags": { type: [Object] }, "getTagTypes": { type: [String] }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./user-feedback/user-feedback.controller"), { "UserFeedbackController": { "findNewestPublicUserFeedbackItems": { description: "PUBLICLY ACCESSIBLE ENDPOINTS", type: [Object] }, "findTopPublicUserFeedbackItems": { type: [Object] }, "getUserFeedbackItemTypes": { type: [String] }, "findOne": { type: Object }, "findComments": { type: [Object] }, "findAllPublicUserFeedbackItems": { type: [Object] }, "create": { type: Object }, "voteOnUserFeedbackItem": { type: Object }, "createComment": { type: Object }, "update": { type: Object }, "removeUserFeedbackItem": { type: Object }, "removeComment": { type: Object } } }]] } }; }; \ No newline at end of file diff --git a/mirror-web-server/src/roles/models/role.enum.ts b/mirror-web-server/src/roles/models/role.enum.ts index fbfd8447..e6093cc1 100644 --- a/mirror-web-server/src/roles/models/role.enum.ts +++ b/mirror-web-server/src/roles/models/role.enum.ts @@ -14,7 +14,7 @@ export enum ROLE { // can create/read, but not update/delete CONTRIBUTOR = 400, - // the user is a provider + // the user is a provider PROVIDER = 150, // Entity, e.g. a Space, can be entered/observed diff --git a/mirror-web-server/src/space-object/space-object.controller.ts b/mirror-web-server/src/space-object/space-object.controller.ts index dfd04c0b..00ed9ada 100644 --- a/mirror-web-server/src/space-object/space-object.controller.ts +++ b/mirror-web-server/src/space-object/space-object.controller.ts @@ -103,7 +103,10 @@ export class SpaceObjectController { copyDto.to ) } - + /** + * @deprecated This method is deprecated and will be removed in future versions. Use `findAllBySpaceIdWithRolesCheck` instead. + * @Get('space/:id') + */ @Get('space/:id') @ApiParam({ name: 'id', type: 'string', required: true }) public async findAllBySpaceId(@Param('id') spaceId: SpaceId) { @@ -113,6 +116,21 @@ export class SpaceObjectController { return await this.spaceObjectService.findAllBySpaceIdAdmin(spaceId) } + @Get('space-v2/:id') + @ApiParam({ name: 'id', type: 'string', required: true }) + public async findAllBySpaceIdWithRolesCheck( + @Param('id') spaceId: SpaceId, + userId: UserId + ) { + if (!spaceId || spaceId == 'undefined') { + throw new BadRequestException('Invalid spaceId') + } + return await this.spaceObjectService.findAllBySpaceIdWithRolesCheck( + spaceId, + userId + ) + } + @Get('tag') @ApiOkResponse({ type: SpaceObject }) public async getSpaceObjectsByTag( diff --git a/mirror-web-server/src/space-object/space-object.service.ts b/mirror-web-server/src/space-object/space-object.service.ts index fbe26394..49a1fa2b 100644 --- a/mirror-web-server/src/space-object/space-object.service.ts +++ b/mirror-web-server/src/space-object/space-object.service.ts @@ -282,6 +282,17 @@ export class SpaceObjectService implements IRoleConsumer { .exec() } + public async findAllBySpaceIdWithRolesCheck( + spaceId: SpaceId, + userId: UserId + ) { + const space = await this.spaceService.getSpace(spaceId) + if (!this.spaceService.canFindWithRolesCheck(userId, space)) { + throw new NotFoundException('Not found or insufficient permissions') + } + return this.findAllBySpaceIdAdmin(spaceId) + } + public getAllBySpaceIdPaginatedAdmin( spaceId: SpaceId, pagination: PaginationInterface, diff --git a/mirror-web-server/src/space/space.controller.ts b/mirror-web-server/src/space/space.controller.ts index 07489758..abfe03b2 100644 --- a/mirror-web-server/src/space/space.controller.ts +++ b/mirror-web-server/src/space/space.controller.ts @@ -705,6 +705,18 @@ export class SpaceController { * END Section: Owner permissions for role modification */ + @Get('assets-list/:spaceId') + @FirebaseTokenAuthGuard() + public async getAssetsListPerSpace( + @UserToken('user_id') userId: UserId, + @Param('spaceId') spaceId: SpaceId + ) { + return await this.spaceService.getAssetsListPerSpaceWithRolesCheck( + userId, + spaceId + ) + } + @Post(':id/kickme') @FirebaseTokenAuthGuard() @ApiOkResponse({ type: SpacePublicData }) diff --git a/mirror-web-server/src/space/space.gateway.ts b/mirror-web-server/src/space/space.gateway.ts index 964e7abc..157f38a4 100644 --- a/mirror-web-server/src/space/space.gateway.ts +++ b/mirror-web-server/src/space/space.gateway.ts @@ -15,7 +15,8 @@ enum ZoneSpaceWsMessage { UPDATE = 'zone_update_space', UPDATE_SPACE_VARIABLES = 'zone_update_space_variables', PUBLISH = 'zone_publish_space', - GET_SPACE_VERSION = 'zone_get_space_version' + GET_SPACE_VERSION = 'zone_get_space_version', + GET_ASSETS = 'zone_get_space_assets' } @WebSocketGateway() @@ -27,6 +28,14 @@ export class SpaceGateway { private readonly logger: Logger ) {} + @SubscribeMessage(ZoneSpaceWsMessage.GET_ASSETS) + public getAssetsListPerSpaceWithRolesCheck( + @MessageBody('id') id: string, + @MessageBody('userId') userId: string + ) { + return this.spaceService.getAssetsListPerSpaceWithRolesCheck(userId, id) + } + @SubscribeMessage(ZoneSpaceWsMessage.GET_ONE) public findOne(@MessageBody('id') id: string) { this.logger.log( diff --git a/mirror-web-server/src/space/space.service.ts b/mirror-web-server/src/space/space.service.ts index 2a8d70de..4e3a7897 100644 --- a/mirror-web-server/src/space/space.service.ts +++ b/mirror-web-server/src/space/space.service.ts @@ -91,6 +91,7 @@ import { import { MirrorDBService } from '../mirror-db/mirror-db.service' import { ScriptEntityService } from '../script-entity/script-entity.service' import { RemixSpaceDto } from './dto/remix-space-dto' +import { AssetDocument } from '../asset/asset.schema' /** * @description This mirrors _standardPopulateFields and should be kept up to date with it. However, this "populate a lot of things" approach is deprecated @@ -204,7 +205,7 @@ export class SpaceService implements IRoleConsumer { case BUILD_PERMISSIONS.MANAGER: return ROLE.MANAGER default: - return ROLE.OBSERVER // default to observer + return ROLE.NO_ROLE // default to no role } } @@ -275,7 +276,7 @@ export class SpaceService implements IRoleConsumer { } }) createdSpace.publicBuildPermissions = - createSpaceDto.publicBuildPermissions || BUILD_PERMISSIONS.OBSERVER // default to observer + createSpaceDto.publicBuildPermissions || BUILD_PERMISSIONS.PRIVATE // default to private createdSpace.role = role createdSpace.maxUsers = createSpaceDto.maxUsers || 24 @@ -429,6 +430,7 @@ export class SpaceService implements IRoleConsumer { matchFilter.$and = andFilter matchFilter.$and.push({ isTMTemplate: { $exists: false } }) + matchFilter.$and.push({ activeSpaceVersion: { $exists: true } }) if (userId) { matchFilter.$and.push({ [`role.users.${userId}`]: { $ne: ROLE.OWNER } }) } @@ -1698,7 +1700,7 @@ export class SpaceService implements IRoleConsumer { newDescription && (space.description = newDescription) space.maxUsers = maxUsers || 24 space.publicBuildPermissions = - publicBuildPermissions || BUILD_PERMISSIONS.OBSERVER // default to observer + publicBuildPermissions || BUILD_PERMISSIONS.PRIVATE // default to private if (terrainId) space.terrain = terrainId as any space.environment = environmentId as any @@ -2078,6 +2080,76 @@ export class SpaceService implements IRoleConsumer { .exec() } + // get all assets in a space + public async getAssetsListPerSpaceWithRolesCheck( + userId: UserId, + spaceId: SpaceId + ): Promise { + const space = await this.getSpace(spaceId) + + if (!this.canFindWithRolesCheck(userId, space)) { + throw new NotFoundException('Not found or insufficient permissions') + } + + const aggregate = [ + { + $match: { + space: new ObjectId(spaceId) + } + }, + { + $lookup: { + from: 'assets', + localField: 'asset', + foreignField: '_id', + as: 'asset' + } + }, + { + $unwind: '$asset' + }, + { + $replaceRoot: { newRoot: '$asset' } + } + ] + + return await this.spaceObjectModel.aggregate(aggregate).exec() + } + + public async getAssetsListPerSpaceAdmin( + spaceId: SpaceId + ): Promise { + const space = await this.getSpace(spaceId) + + if (!space) { + throw new NotFoundException('Not found') + } + + const aggregate = [ + { + $match: { + space: new ObjectId(spaceId) + } + }, + { + $lookup: { + from: 'assets', + localField: 'asset', + foreignField: '_id', + as: 'asset' + } + }, + { + $unwind: '$asset' + }, + { + $replaceRoot: { newRoot: '$asset' } + } + ] + + return await this.spaceObjectModel.aggregate(aggregate).exec() + } + public async kickUserByAdmin(user_id: UserId, space_id: SpaceId) { const space = await this.getSpace(space_id) if (!space) { diff --git a/mirror-web-server/src/tag/tag.service.ts b/mirror-web-server/src/tag/tag.service.ts index a70f46f1..9ed4b7e9 100644 --- a/mirror-web-server/src/tag/tag.service.ts +++ b/mirror-web-server/src/tag/tag.service.ts @@ -143,6 +143,8 @@ export class TagService { } remove(id: string): Promise { - return this.tagModel.findOneAndDelete({ _id: id }).exec() + return this.tagModel + .findOneAndDelete({ _id: id }) + .exec() as any as Promise } } diff --git a/mirror-web-server/src/user/user.service.ts b/mirror-web-server/src/user/user.service.ts index 000fcde9..f3dd3b5c 100644 --- a/mirror-web-server/src/user/user.service.ts +++ b/mirror-web-server/src/user/user.service.ts @@ -191,18 +191,18 @@ export class UserService { } async ensureMirrorUserExists(token: string) { - const decodedToken = await this.firebaseAuthService.verifyIdToken(token) - const firebaseUID = decodedToken.uid + try { + const decodedToken = await this.firebaseAuthService.verifyIdToken(token) + const firebaseUID = decodedToken.uid - const _id = new mongo.ObjectId() + const _id = new mongo.ObjectId() - if (!decodedToken) { - throw new NotFoundException('User not found') - } + if (!decodedToken) { + throw new NotFoundException('User not found') + } - const user = await this.userModel.findOne({ firebaseUID }).exec() + const user = await this.userModel.findOne({ firebaseUID }).exec() - try { if (!user) { const displayName = this._generateUniqueUsername() const userModel = new this.userModel({ diff --git a/setup-linux.sh b/setup-linux.sh index 3bec8f53..fcde1ddf 100755 --- a/setup-linux.sh +++ b/setup-linux.sh @@ -1,3 +1,4 @@ #!/bin/bash -curl -o "MirrorGodotEditorLinux.x86_64" "https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorLinux.x86_64.zip" -echo "If you do not have wget installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorLinux.x86_64.zip" \ No newline at end of file +https://storage.googleapis.com/mirror_native_client_builds/Engine/353b6bf1/MirrorGodotEditorLinux.x86_64.zip +curl -o "MirrorGodotEditorLinux.x86_64" "https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorLinux.x86_64" +echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorLinux.x86_64" diff --git a/setup-mac.sh b/setup-mac.sh index b0b804c6..a728175d 100755 --- a/setup-mac.sh +++ b/setup-mac.sh @@ -1,3 +1,3 @@ #!/bin/bash -curl -o "MirrorGodotEditorMac.app.zip" "https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorMac.app.zip.zip" -echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorMac.app.zip.zip" \ No newline at end of file +curl -o "MirrorGodotEditorMac.app.zip" "https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorMac.app.zip" +echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorMac.app.zip" diff --git a/setup-win.sh b/setup-win.sh index ee2d3b08..d5f943c2 100755 --- a/setup-win.sh +++ b/setup-win.sh @@ -1,3 +1,3 @@ #!/bin/bash -curl -o "MirrorGodotEditorWindows.exe" "https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorWindows.exe.zip" -echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorWindows.exe.zip" \ No newline at end of file +curl -o "MirrorGodotEditorWindows.exe" "https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorWindows.exe" +echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorWindows.exe" diff --git a/vercel.json b/vercel.json new file mode 100644 index 00000000..9936715b --- /dev/null +++ b/vercel.json @@ -0,0 +1,9 @@ +{ + "redirects": [ + { + "source": "/docs/tutorial", + "destination": "/docs/tutorials", + "permanent": true + } + ] +}