[READ-ONLY] Mirror of https://github.com/flo-bit/tiny-creature. three.js journey #16 - tamagotchi flo-bit.dev/tiny-creature/
0

Configure Feed

Select the types of activity you want to include in your feed.

switch to threlte

Florian (Feb 3, 2025, 4:54 PM +0100) 0bef5b8b fded7c87

+6016 -1843
+1 -1
.github/workflows/deploy.yml
··· 30 30 - name: Upload Artifacts 31 31 uses: actions/upload-pages-artifact@v3 32 32 with: 33 - path: "dist/" 33 + path: "build/" 34 34 35 35 deploy: 36 36 needs: build_site
+20 -21
.gitignore
··· 1 - # Logs 2 - logs 3 - *.log 4 - npm-debug.log* 5 - yarn-debug.log* 6 - yarn-error.log* 7 - pnpm-debug.log* 8 - lerna-debug.log* 1 + node_modules 9 2 10 - node_modules 11 - dist 12 - dist-ssr 13 - *.local 3 + # Output 4 + .output 5 + .vercel 6 + .netlify 7 + .wrangler 8 + /.svelte-kit 9 + /build 14 10 15 - # Editor directories and files 16 - .vscode/* 17 - !.vscode/extensions.json 18 - .idea 11 + # OS 19 12 .DS_Store 20 - *.suo 21 - *.ntvs* 22 - *.njsproj 23 - *.sln 24 - *.sw? 13 + Thumbs.db 14 + 15 + # Env 16 + .env 17 + .env.* 18 + !.env.example 19 + !.env.test 20 + 21 + # Vite 22 + vite.config.js.timestamp-* 23 + vite.config.ts.timestamp-*
+1
.npmrc
··· 1 + engine-strict=true
+4
.prettierignore
··· 1 + # Package Managers 2 + package-lock.json 3 + pnpm-lock.yaml 4 + yarn.lock
+18 -1
.prettierrc
··· 1 - {} 1 + { 2 + "useTabs": true, 3 + "singleQuote": true, 4 + "trailingComma": "none", 5 + "printWidth": 100, 6 + "plugins": [ 7 + "prettier-plugin-svelte", 8 + "prettier-plugin-tailwindcss" 9 + ], 10 + "overrides": [ 11 + { 12 + "files": "*.svelte", 13 + "options": { 14 + "parser": "svelte" 15 + } 16 + } 17 + ] 18 + }
+8
.vite/deps/_metadata.json
··· 1 + { 2 + "hash": "bec55a81", 3 + "configHash": "276473ba", 4 + "lockfileHash": "e3b0c442", 5 + "browserHash": "fc975f3b", 6 + "optimized": {}, 7 + "chunks": {} 8 + }
+3
.vite/deps/package.json
··· 1 + { 2 + "type": "module" 3 + }
-21
LICENSE
··· 1 - MIT License Copyright (c) 2025 flo-bit 2 - 3 - Permission is hereby granted, free of 4 - charge, to any person obtaining a copy of this software and associated 5 - documentation files (the "Software"), to deal in the Software without 6 - restriction, including without limitation the rights to use, copy, modify, merge, 7 - publish, distribute, sublicense, and/or sell copies of the Software, and to 8 - permit persons to whom the Software is furnished to do so, subject to the 9 - following conditions: 10 - 11 - The above copyright notice and this permission notice 12 - (including the next paragraph) shall be included in all copies or substantial 13 - portions of the Software. 14 - 15 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 16 - ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO 18 - EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 19 - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 - THE SOFTWARE.
+2
Readme.md
··· 7 7 uses 8 8 - [three.js](https://threejs.org/) 9 9 - [vite](https://vite.dev/) 10 + - [svelte](https://svelte.dev/) 11 + - [threlte](https://threlte.xyz/) 10 12 - [tailwind](https://tailwindcss.com/) 11 13 - [wiggle](https://wiggle.three.tools/) 12 14 - [pixi.js](https://pixijs.com/)
-1
app.css
··· 1 - @import "tailwindcss";
+34
eslint.config.js
··· 1 + import prettier from 'eslint-config-prettier'; 2 + import js from '@eslint/js'; 3 + import { includeIgnoreFile } from '@eslint/compat'; 4 + import svelte from 'eslint-plugin-svelte'; 5 + import globals from 'globals'; 6 + import { fileURLToPath } from 'node:url'; 7 + import ts from 'typescript-eslint'; 8 + const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); 9 + 10 + export default ts.config( 11 + includeIgnoreFile(gitignorePath), 12 + js.configs.recommended, 13 + ...ts.configs.recommended, 14 + ...svelte.configs['flat/recommended'], 15 + prettier, 16 + ...svelte.configs['flat/prettier'], 17 + { 18 + languageOptions: { 19 + globals: { 20 + ...globals.browser, 21 + ...globals.node 22 + } 23 + } 24 + }, 25 + { 26 + files: ['**/*.svelte'], 27 + 28 + languageOptions: { 29 + parserOptions: { 30 + parser: ts.parser 31 + } 32 + } 33 + } 34 + );
-30
index.html
··· 1 - <!doctype html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="UTF-8" /> 5 - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 - <title>tiny creature</title> 7 - <link rel="stylesheet" href="app.css" /> 8 - </head> 9 - <body class="bg-stone-950"> 10 - <div id="app"></div> 11 - <script type="module" src="/src/main.ts"></script> 12 - 13 - <div class="text-stone-100 text-sm absolute top-1 left-1 z-10"> 14 - work in progress for 15 - <a 16 - target="_blank" 17 - href="https://threejs-journey.com/challenges/tamagotchi" 18 - class="text-pink-400 font-medium" 19 - >three.js journey #016 20 - </a> 21 - by 22 - <a 23 - target="_blank" 24 - href="https://flo-bit.dev" 25 - class="text-pink-400 font-medium" 26 - >flo-bit</a 27 - > 28 - </div> 29 - </body> 30 - </html>
+5241 -1465
package-lock.json
··· 1 1 { 2 - "name": "tamagotchi", 3 - "version": "0.0.0", 4 - "lockfileVersion": 3, 5 - "requires": true, 6 - "packages": { 7 - "": { 8 - "name": "tamagotchi", 9 - "version": "0.0.0", 10 - "dependencies": { 11 - "@tailwindcss/vite": "^4.0.3", 12 - "@types/three": "^0.173.0", 13 - "pixi.js": "^8.7.3", 14 - "prettier": "^3.4.2", 15 - "tailwindcss": "^4.0.3", 16 - "three": "^0.173.0", 17 - "wiggle": "^0.0.17" 18 - }, 19 - "devDependencies": { 20 - "typescript": "~5.6.2", 21 - "vite": "^6.0.5" 22 - } 23 - }, 24 - "node_modules/@esbuild/aix-ppc64": { 25 - "version": "0.24.2", 26 - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", 27 - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", 28 - "cpu": [ 29 - "ppc64" 30 - ], 31 - "optional": true, 32 - "os": [ 33 - "aix" 34 - ], 35 - "engines": { 36 - "node": ">=18" 37 - } 38 - }, 39 - "node_modules/@esbuild/android-arm": { 40 - "version": "0.24.2", 41 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", 42 - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", 43 - "cpu": [ 44 - "arm" 45 - ], 46 - "optional": true, 47 - "os": [ 48 - "android" 49 - ], 50 - "engines": { 51 - "node": ">=18" 52 - } 53 - }, 54 - "node_modules/@esbuild/android-arm64": { 55 - "version": "0.24.2", 56 - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", 57 - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", 58 - "cpu": [ 59 - "arm64" 60 - ], 61 - "optional": true, 62 - "os": [ 63 - "android" 64 - ], 65 - "engines": { 66 - "node": ">=18" 67 - } 68 - }, 69 - "node_modules/@esbuild/android-x64": { 70 - "version": "0.24.2", 71 - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", 72 - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", 73 - "cpu": [ 74 - "x64" 75 - ], 76 - "optional": true, 77 - "os": [ 78 - "android" 79 - ], 80 - "engines": { 81 - "node": ">=18" 82 - } 83 - }, 84 - "node_modules/@esbuild/darwin-arm64": { 85 - "version": "0.24.2", 86 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", 87 - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", 88 - "cpu": [ 89 - "arm64" 90 - ], 91 - "optional": true, 92 - "os": [ 93 - "darwin" 94 - ], 95 - "engines": { 96 - "node": ">=18" 97 - } 98 - }, 99 - "node_modules/@esbuild/darwin-x64": { 100 - "version": "0.24.2", 101 - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", 102 - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", 103 - "cpu": [ 104 - "x64" 105 - ], 106 - "optional": true, 107 - "os": [ 108 - "darwin" 109 - ], 110 - "engines": { 111 - "node": ">=18" 112 - } 113 - }, 114 - "node_modules/@esbuild/freebsd-arm64": { 115 - "version": "0.24.2", 116 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", 117 - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", 118 - "cpu": [ 119 - "arm64" 120 - ], 121 - "optional": true, 122 - "os": [ 123 - "freebsd" 124 - ], 125 - "engines": { 126 - "node": ">=18" 127 - } 128 - }, 129 - "node_modules/@esbuild/freebsd-x64": { 130 - "version": "0.24.2", 131 - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", 132 - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", 133 - "cpu": [ 134 - "x64" 135 - ], 136 - "optional": true, 137 - "os": [ 138 - "freebsd" 139 - ], 140 - "engines": { 141 - "node": ">=18" 142 - } 143 - }, 144 - "node_modules/@esbuild/linux-arm": { 145 - "version": "0.24.2", 146 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", 147 - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", 148 - "cpu": [ 149 - "arm" 150 - ], 151 - "optional": true, 152 - "os": [ 153 - "linux" 154 - ], 155 - "engines": { 156 - "node": ">=18" 157 - } 158 - }, 159 - "node_modules/@esbuild/linux-arm64": { 160 - "version": "0.24.2", 161 - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", 162 - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", 163 - "cpu": [ 164 - "arm64" 165 - ], 166 - "optional": true, 167 - "os": [ 168 - "linux" 169 - ], 170 - "engines": { 171 - "node": ">=18" 172 - } 173 - }, 174 - "node_modules/@esbuild/linux-ia32": { 175 - "version": "0.24.2", 176 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", 177 - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", 178 - "cpu": [ 179 - "ia32" 180 - ], 181 - "optional": true, 182 - "os": [ 183 - "linux" 184 - ], 185 - "engines": { 186 - "node": ">=18" 187 - } 188 - }, 189 - "node_modules/@esbuild/linux-loong64": { 190 - "version": "0.24.2", 191 - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", 192 - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", 193 - "cpu": [ 194 - "loong64" 195 - ], 196 - "optional": true, 197 - "os": [ 198 - "linux" 199 - ], 200 - "engines": { 201 - "node": ">=18" 202 - } 203 - }, 204 - "node_modules/@esbuild/linux-mips64el": { 205 - "version": "0.24.2", 206 - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", 207 - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", 208 - "cpu": [ 209 - "mips64el" 210 - ], 211 - "optional": true, 212 - "os": [ 213 - "linux" 214 - ], 215 - "engines": { 216 - "node": ">=18" 217 - } 218 - }, 219 - "node_modules/@esbuild/linux-ppc64": { 220 - "version": "0.24.2", 221 - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", 222 - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", 223 - "cpu": [ 224 - "ppc64" 225 - ], 226 - "optional": true, 227 - "os": [ 228 - "linux" 229 - ], 230 - "engines": { 231 - "node": ">=18" 232 - } 233 - }, 234 - "node_modules/@esbuild/linux-riscv64": { 235 - "version": "0.24.2", 236 - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", 237 - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", 238 - "cpu": [ 239 - "riscv64" 240 - ], 241 - "optional": true, 242 - "os": [ 243 - "linux" 244 - ], 245 - "engines": { 246 - "node": ">=18" 247 - } 248 - }, 249 - "node_modules/@esbuild/linux-s390x": { 250 - "version": "0.24.2", 251 - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", 252 - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", 253 - "cpu": [ 254 - "s390x" 255 - ], 256 - "optional": true, 257 - "os": [ 258 - "linux" 259 - ], 260 - "engines": { 261 - "node": ">=18" 262 - } 263 - }, 264 - "node_modules/@esbuild/linux-x64": { 265 - "version": "0.24.2", 266 - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", 267 - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", 268 - "cpu": [ 269 - "x64" 270 - ], 271 - "optional": true, 272 - "os": [ 273 - "linux" 274 - ], 275 - "engines": { 276 - "node": ">=18" 277 - } 278 - }, 279 - "node_modules/@esbuild/netbsd-arm64": { 280 - "version": "0.24.2", 281 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", 282 - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", 283 - "cpu": [ 284 - "arm64" 285 - ], 286 - "optional": true, 287 - "os": [ 288 - "netbsd" 289 - ], 290 - "engines": { 291 - "node": ">=18" 292 - } 293 - }, 294 - "node_modules/@esbuild/netbsd-x64": { 295 - "version": "0.24.2", 296 - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", 297 - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", 298 - "cpu": [ 299 - "x64" 300 - ], 301 - "optional": true, 302 - "os": [ 303 - "netbsd" 304 - ], 305 - "engines": { 306 - "node": ">=18" 307 - } 308 - }, 309 - "node_modules/@esbuild/openbsd-arm64": { 310 - "version": "0.24.2", 311 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", 312 - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", 313 - "cpu": [ 314 - "arm64" 315 - ], 316 - "optional": true, 317 - "os": [ 318 - "openbsd" 319 - ], 320 - "engines": { 321 - "node": ">=18" 322 - } 323 - }, 324 - "node_modules/@esbuild/openbsd-x64": { 325 - "version": "0.24.2", 326 - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", 327 - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", 328 - "cpu": [ 329 - "x64" 330 - ], 331 - "optional": true, 332 - "os": [ 333 - "openbsd" 334 - ], 335 - "engines": { 336 - "node": ">=18" 337 - } 338 - }, 339 - "node_modules/@esbuild/sunos-x64": { 340 - "version": "0.24.2", 341 - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", 342 - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", 343 - "cpu": [ 344 - "x64" 345 - ], 346 - "optional": true, 347 - "os": [ 348 - "sunos" 349 - ], 350 - "engines": { 351 - "node": ">=18" 352 - } 353 - }, 354 - "node_modules/@esbuild/win32-arm64": { 355 - "version": "0.24.2", 356 - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", 357 - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", 358 - "cpu": [ 359 - "arm64" 360 - ], 361 - "optional": true, 362 - "os": [ 363 - "win32" 364 - ], 365 - "engines": { 366 - "node": ">=18" 367 - } 368 - }, 369 - "node_modules/@esbuild/win32-ia32": { 370 - "version": "0.24.2", 371 - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", 372 - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", 373 - "cpu": [ 374 - "ia32" 375 - ], 376 - "optional": true, 377 - "os": [ 378 - "win32" 379 - ], 380 - "engines": { 381 - "node": ">=18" 382 - } 383 - }, 384 - "node_modules/@esbuild/win32-x64": { 385 - "version": "0.24.2", 386 - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", 387 - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", 388 - "cpu": [ 389 - "x64" 390 - ], 391 - "optional": true, 392 - "os": [ 393 - "win32" 394 - ], 395 - "engines": { 396 - "node": ">=18" 397 - } 398 - }, 399 - "node_modules/@pixi/colord": { 400 - "version": "2.9.6", 401 - "resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz", 402 - "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==" 403 - }, 404 - "node_modules/@rollup/rollup-android-arm-eabi": { 405 - "version": "4.34.0", 406 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.0.tgz", 407 - "integrity": "sha512-Eeao7ewDq79jVEsrtWIj5RNqB8p2knlm9fhR6uJ2gqP7UfbLrTrxevudVrEPDM7Wkpn/HpRC2QfazH7MXLz3vQ==", 408 - "cpu": [ 409 - "arm" 410 - ], 411 - "optional": true, 412 - "os": [ 413 - "android" 414 - ] 415 - }, 416 - "node_modules/@rollup/rollup-android-arm64": { 417 - "version": "4.34.0", 418 - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.0.tgz", 419 - "integrity": "sha512-yVh0Kf1f0Fq4tWNf6mWcbQBCLDpDrDEl88lzPgKhrgTcDrTtlmun92ywEF9dCjmYO3EFiSuJeeo9cYRxl2FswA==", 420 - "cpu": [ 421 - "arm64" 422 - ], 423 - "optional": true, 424 - "os": [ 425 - "android" 426 - ] 427 - }, 428 - "node_modules/@rollup/rollup-darwin-arm64": { 429 - "version": "4.34.0", 430 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.0.tgz", 431 - "integrity": "sha512-gCs0ErAZ9s0Osejpc3qahTsqIPUDjSKIyxK/0BGKvL+Tn0n3Kwvj8BrCv7Y5sR1Ypz1K2qz9Ny0VvkVyoXBVUQ==", 432 - "cpu": [ 433 - "arm64" 434 - ], 435 - "optional": true, 436 - "os": [ 437 - "darwin" 438 - ] 439 - }, 440 - "node_modules/@rollup/rollup-darwin-x64": { 441 - "version": "4.34.0", 442 - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.0.tgz", 443 - "integrity": "sha512-aIB5Anc8hngk15t3GUkiO4pv42ykXHfmpXGS+CzM9CTyiWyT8HIS5ygRAy7KcFb/wiw4Br+vh1byqcHRTfq2tQ==", 444 - "cpu": [ 445 - "x64" 446 - ], 447 - "optional": true, 448 - "os": [ 449 - "darwin" 450 - ] 451 - }, 452 - "node_modules/@rollup/rollup-freebsd-arm64": { 453 - "version": "4.34.0", 454 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.0.tgz", 455 - "integrity": "sha512-kpdsUdMlVJMRMaOf/tIvxk8TQdzHhY47imwmASOuMajg/GXpw8GKNd8LNwIHE5Yd1onehNpcUB9jHY6wgw9nHQ==", 456 - "cpu": [ 457 - "arm64" 458 - ], 459 - "optional": true, 460 - "os": [ 461 - "freebsd" 462 - ] 463 - }, 464 - "node_modules/@rollup/rollup-freebsd-x64": { 465 - "version": "4.34.0", 466 - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.0.tgz", 467 - "integrity": "sha512-D0RDyHygOBCQiqookcPevrvgEarN0CttBecG4chOeIYCNtlKHmf5oi5kAVpXV7qs0Xh/WO2RnxeicZPtT50V0g==", 468 - "cpu": [ 469 - "x64" 470 - ], 471 - "optional": true, 472 - "os": [ 473 - "freebsd" 474 - ] 475 - }, 476 - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 477 - "version": "4.34.0", 478 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.0.tgz", 479 - "integrity": "sha512-mCIw8j5LPDXmCOW8mfMZwT6F/Kza03EnSr4wGYEswrEfjTfVsFOxvgYfuRMxTuUF/XmRb9WSMD5GhCWDe2iNrg==", 480 - "cpu": [ 481 - "arm" 482 - ], 483 - "optional": true, 484 - "os": [ 485 - "linux" 486 - ] 487 - }, 488 - "node_modules/@rollup/rollup-linux-arm-musleabihf": { 489 - "version": "4.34.0", 490 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.0.tgz", 491 - "integrity": "sha512-AwwldAu4aCJPob7zmjuDUMvvuatgs8B/QiVB0KwkUarAcPB3W+ToOT+18TQwY4z09Al7G0BvCcmLRop5zBLTag==", 492 - "cpu": [ 493 - "arm" 494 - ], 495 - "optional": true, 496 - "os": [ 497 - "linux" 498 - ] 499 - }, 500 - "node_modules/@rollup/rollup-linux-arm64-gnu": { 501 - "version": "4.34.0", 502 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.0.tgz", 503 - "integrity": "sha512-e7kDUGVP+xw05pV65ZKb0zulRploU3gTu6qH1qL58PrULDGxULIS0OSDQJLH7WiFnpd3ZKUU4VM3u/Z7Zw+e7Q==", 504 - "cpu": [ 505 - "arm64" 506 - ], 507 - "optional": true, 508 - "os": [ 509 - "linux" 510 - ] 511 - }, 512 - "node_modules/@rollup/rollup-linux-arm64-musl": { 513 - "version": "4.34.0", 514 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.0.tgz", 515 - "integrity": "sha512-SXYJw3zpwHgaBqTXeAZ31qfW/v50wq4HhNVvKFhRr5MnptRX2Af4KebLWR1wpxGJtLgfS2hEPuALRIY3LPAAcA==", 516 - "cpu": [ 517 - "arm64" 518 - ], 519 - "optional": true, 520 - "os": [ 521 - "linux" 522 - ] 523 - }, 524 - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 525 - "version": "4.34.0", 526 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.0.tgz", 527 - "integrity": "sha512-e5XiCinINCI4RdyU3sFyBH4zzz7LiQRvHqDtRe9Dt8o/8hTBaYpdPimayF00eY2qy5j4PaaWK0azRgUench6WQ==", 528 - "cpu": [ 529 - "loong64" 530 - ], 531 - "optional": true, 532 - "os": [ 533 - "linux" 534 - ] 535 - }, 536 - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 537 - "version": "4.34.0", 538 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.0.tgz", 539 - "integrity": "sha512-3SWN3e0bAsm9ToprLFBSro8nJe6YN+5xmB11N4FfNf92wvLye/+Rh5JGQtKOpwLKt6e61R1RBc9g+luLJsc23A==", 540 - "cpu": [ 541 - "ppc64" 542 - ], 543 - "optional": true, 544 - "os": [ 545 - "linux" 546 - ] 547 - }, 548 - "node_modules/@rollup/rollup-linux-riscv64-gnu": { 549 - "version": "4.34.0", 550 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.0.tgz", 551 - "integrity": "sha512-B1Oqt3GLh7qmhvfnc2WQla4NuHlcxAD5LyueUi5WtMc76ZWY+6qDtQYqnxARx9r+7mDGfamD+8kTJO0pKUJeJA==", 552 - "cpu": [ 553 - "riscv64" 554 - ], 555 - "optional": true, 556 - "os": [ 557 - "linux" 558 - ] 559 - }, 560 - "node_modules/@rollup/rollup-linux-s390x-gnu": { 561 - "version": "4.34.0", 562 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.0.tgz", 563 - "integrity": "sha512-UfUCo0h/uj48Jq2lnhX0AOhZPSTAq3Eostas+XZ+GGk22pI+Op1Y6cxQ1JkUuKYu2iU+mXj1QjPrZm9nNWV9rg==", 564 - "cpu": [ 565 - "s390x" 566 - ], 567 - "optional": true, 568 - "os": [ 569 - "linux" 570 - ] 571 - }, 572 - "node_modules/@rollup/rollup-linux-x64-gnu": { 573 - "version": "4.34.0", 574 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.0.tgz", 575 - "integrity": "sha512-chZLTUIPbgcpm+Z7ALmomXW8Zh+wE2icrG+K6nt/HenPLmtwCajhQC5flNSk1Xy5EDMt/QAOz2MhzfOfJOLSiA==", 576 - "cpu": [ 577 - "x64" 578 - ], 579 - "optional": true, 580 - "os": [ 581 - "linux" 582 - ] 583 - }, 584 - "node_modules/@rollup/rollup-linux-x64-musl": { 585 - "version": "4.34.0", 586 - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.0.tgz", 587 - "integrity": "sha512-jo0UolK70O28BifvEsFD/8r25shFezl0aUk2t0VJzREWHkq19e+pcLu4kX5HiVXNz5qqkD+aAq04Ct8rkxgbyQ==", 588 - "cpu": [ 589 - "x64" 590 - ], 591 - "optional": true, 592 - "os": [ 593 - "linux" 594 - ] 595 - }, 596 - "node_modules/@rollup/rollup-win32-arm64-msvc": { 597 - "version": "4.34.0", 598 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.0.tgz", 599 - "integrity": "sha512-Vmg0NhAap2S54JojJchiu5An54qa6t/oKT7LmDaWggpIcaiL8WcWHEN6OQrfTdL6mQ2GFyH7j2T5/3YPEDOOGA==", 600 - "cpu": [ 601 - "arm64" 602 - ], 603 - "optional": true, 604 - "os": [ 605 - "win32" 606 - ] 607 - }, 608 - "node_modules/@rollup/rollup-win32-ia32-msvc": { 609 - "version": "4.34.0", 610 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.0.tgz", 611 - "integrity": "sha512-CV2aqhDDOsABKHKhNcs1SZFryffQf8vK2XrxP6lxC99ELZAdvsDgPklIBfd65R8R+qvOm1SmLaZ/Fdq961+m7A==", 612 - "cpu": [ 613 - "ia32" 614 - ], 615 - "optional": true, 616 - "os": [ 617 - "win32" 618 - ] 619 - }, 620 - "node_modules/@rollup/rollup-win32-x64-msvc": { 621 - "version": "4.34.0", 622 - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.0.tgz", 623 - "integrity": "sha512-g2ASy1QwHP88y5KWvblUolJz9rN+i4ZOsYzkEwcNfaNooxNUXG+ON6F5xFo0NIItpHqxcdAyls05VXpBnludGw==", 624 - "cpu": [ 625 - "x64" 626 - ], 627 - "optional": true, 628 - "os": [ 629 - "win32" 630 - ] 631 - }, 632 - "node_modules/@tailwindcss/node": { 633 - "version": "4.0.3", 634 - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.3.tgz", 635 - "integrity": "sha512-QsVJokOl0pJ4AbJV33D2npvLcHGPWi5MOSZtrtE0GT3tSx+3D0JE2lokLA8yHS1x3oCY/3IyRyy7XX6tmzid7A==", 636 - "dependencies": { 637 - "enhanced-resolve": "^5.18.0", 638 - "jiti": "^2.4.2", 639 - "tailwindcss": "4.0.3" 640 - } 641 - }, 642 - "node_modules/@tailwindcss/oxide": { 643 - "version": "4.0.3", 644 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.3.tgz", 645 - "integrity": "sha512-FFcp3VNvRjjmFA39ORM27g2mbflMQljhvM7gxBAujHxUy4LXlKa6yMF9wbHdTbPqTONiCyyOYxccvJyVyI/XBg==", 646 - "engines": { 647 - "node": ">= 10" 648 - }, 649 - "optionalDependencies": { 650 - "@tailwindcss/oxide-android-arm64": "4.0.3", 651 - "@tailwindcss/oxide-darwin-arm64": "4.0.3", 652 - "@tailwindcss/oxide-darwin-x64": "4.0.3", 653 - "@tailwindcss/oxide-freebsd-x64": "4.0.3", 654 - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.3", 655 - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.3", 656 - "@tailwindcss/oxide-linux-arm64-musl": "4.0.3", 657 - "@tailwindcss/oxide-linux-x64-gnu": "4.0.3", 658 - "@tailwindcss/oxide-linux-x64-musl": "4.0.3", 659 - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.3", 660 - "@tailwindcss/oxide-win32-x64-msvc": "4.0.3" 661 - } 662 - }, 663 - "node_modules/@tailwindcss/oxide-android-arm64": { 664 - "version": "4.0.3", 665 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.3.tgz", 666 - "integrity": "sha512-S8XOTQuMnpijZRlPm5HBzPJjZ28quB+40LSRHjRnQF6rRYKsvpr1qkY7dfwsetNdd+kMLOMDsvmuT8WnqqETvg==", 667 - "cpu": [ 668 - "arm64" 669 - ], 670 - "optional": true, 671 - "os": [ 672 - "android" 673 - ], 674 - "engines": { 675 - "node": ">= 10" 676 - } 677 - }, 678 - "node_modules/@tailwindcss/oxide-darwin-arm64": { 679 - "version": "4.0.3", 680 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.3.tgz", 681 - "integrity": "sha512-smrY2DpzhXvgDhZtQlYAl8+vxJ04lv2/64C1eiRxvsRT2nkw/q+zA1/eAYKvUHat6cIuwqDku3QucmrUT6pCeg==", 682 - "cpu": [ 683 - "arm64" 684 - ], 685 - "optional": true, 686 - "os": [ 687 - "darwin" 688 - ], 689 - "engines": { 690 - "node": ">= 10" 691 - } 692 - }, 693 - "node_modules/@tailwindcss/oxide-darwin-x64": { 694 - "version": "4.0.3", 695 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.3.tgz", 696 - "integrity": "sha512-NTz8x/LcGUjpZAWUxz0ZuzHao90Wj9spoQgomwB+/hgceh5gcJDfvaBYqxLFpKzVglpnbDSq1Fg0p0zI4oa5Pg==", 697 - "cpu": [ 698 - "x64" 699 - ], 700 - "optional": true, 701 - "os": [ 702 - "darwin" 703 - ], 704 - "engines": { 705 - "node": ">= 10" 706 - } 707 - }, 708 - "node_modules/@tailwindcss/oxide-freebsd-x64": { 709 - "version": "4.0.3", 710 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.3.tgz", 711 - "integrity": "sha512-yQc9Q0JCOp3kkAV8gKgDctXO60IkQhHpqGB+KgOccDtD5UmN6Q5+gd+lcsDyQ7N8dRuK1fAud51xQpZJgKfm7g==", 712 - "cpu": [ 713 - "x64" 714 - ], 715 - "optional": true, 716 - "os": [ 717 - "freebsd" 718 - ], 719 - "engines": { 720 - "node": ">= 10" 721 - } 722 - }, 723 - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { 724 - "version": "4.0.3", 725 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.3.tgz", 726 - "integrity": "sha512-e1ivVMLSnxTOU1O3npnxN16FEyWM/g3SuH2pP6udxXwa0/SnSAijRwcAYRpqIlhVKujr158S8UeHxQjC4fGl4w==", 727 - "cpu": [ 728 - "arm" 729 - ], 730 - "optional": true, 731 - "os": [ 732 - "linux" 733 - ], 734 - "engines": { 735 - "node": ">= 10" 736 - } 737 - }, 738 - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { 739 - "version": "4.0.3", 740 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.3.tgz", 741 - "integrity": "sha512-PLrToqQqX6sdJ9DmMi8IxZWWrfjc9pdi9AEEPTrtMts3Jm9HBi1WqEeF1VwZZ2aW9TXloE5OwA35zuuq1Bhb/Q==", 742 - "cpu": [ 743 - "arm64" 744 - ], 745 - "optional": true, 746 - "os": [ 747 - "linux" 748 - ], 749 - "engines": { 750 - "node": ">= 10" 751 - } 752 - }, 753 - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { 754 - "version": "4.0.3", 755 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.3.tgz", 756 - "integrity": "sha512-YlzRxx7N1ampfgSKzEDw0iwDkJXUInR4cgNEqmR4TzHkU2Vhg59CGPJrTI7dxOBofD8+O35R13Nk9Ytyv0JUFg==", 757 - "cpu": [ 758 - "arm64" 759 - ], 760 - "optional": true, 761 - "os": [ 762 - "linux" 763 - ], 764 - "engines": { 765 - "node": ">= 10" 766 - } 767 - }, 768 - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { 769 - "version": "4.0.3", 770 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.3.tgz", 771 - "integrity": "sha512-Xfc3z/li6XkuD7Hs+Uk6pjyCXnfnd9zuQTKOyDTZJ544xc2yoMKUkuDw6Et9wb31MzU2/c0CIUpTDa71lL9KHw==", 772 - "cpu": [ 773 - "x64" 774 - ], 775 - "optional": true, 776 - "os": [ 777 - "linux" 778 - ], 779 - "engines": { 780 - "node": ">= 10" 781 - } 782 - }, 783 - "node_modules/@tailwindcss/oxide-linux-x64-musl": { 784 - "version": "4.0.3", 785 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.3.tgz", 786 - "integrity": "sha512-ugKVqKzwa/cjmqSQG17aS9DYrEcQ/a5NITcgmOr3JLW4Iz64C37eoDlkC8tIepD3S/Td/ywKAolTQ8fKbjEL4g==", 787 - "cpu": [ 788 - "x64" 789 - ], 790 - "optional": true, 791 - "os": [ 792 - "linux" 793 - ], 794 - "engines": { 795 - "node": ">= 10" 796 - } 797 - }, 798 - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { 799 - "version": "4.0.3", 800 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.3.tgz", 801 - "integrity": "sha512-qHPDMl+UUwsk1RMJMgAXvhraWqUUT+LR/tkXix5RA39UGxtTrHwsLIN1AhNxI5i2RFXAXfmFXDqZCdyQ4dWmAQ==", 802 - "cpu": [ 803 - "arm64" 804 - ], 805 - "optional": true, 806 - "os": [ 807 - "win32" 808 - ], 809 - "engines": { 810 - "node": ">= 10" 811 - } 812 - }, 813 - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { 814 - "version": "4.0.3", 815 - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.3.tgz", 816 - "integrity": "sha512-+ujwN4phBGyOsPyLgGgeCyUm4Mul+gqWVCIGuSXWgrx9xVUnf6LVXrw0BDBc9Aq1S2qMyOTX4OkCGbZeoIo8Qw==", 817 - "cpu": [ 818 - "x64" 819 - ], 820 - "optional": true, 821 - "os": [ 822 - "win32" 823 - ], 824 - "engines": { 825 - "node": ">= 10" 826 - } 827 - }, 828 - "node_modules/@tailwindcss/vite": { 829 - "version": "4.0.3", 830 - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.3.tgz", 831 - "integrity": "sha512-Qj6rSO+EvXnNDymloKZ11D54JJTnDrkRWJBzNHENDxjt0HtrCZJbSLIrcJ/WdaoU4othrel/oFqHpO/doxIS/Q==", 832 - "dependencies": { 833 - "@tailwindcss/node": "^4.0.3", 834 - "@tailwindcss/oxide": "^4.0.3", 835 - "lightningcss": "^1.29.1", 836 - "tailwindcss": "4.0.3" 837 - }, 838 - "peerDependencies": { 839 - "vite": "^5.2.0 || ^6" 840 - } 841 - }, 842 - "node_modules/@tweenjs/tween.js": { 843 - "version": "23.1.3", 844 - "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", 845 - "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==" 846 - }, 847 - "node_modules/@types/css-font-loading-module": { 848 - "version": "0.0.12", 849 - "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", 850 - "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==" 851 - }, 852 - "node_modules/@types/earcut": { 853 - "version": "2.1.4", 854 - "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", 855 - "integrity": "sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==" 856 - }, 857 - "node_modules/@types/estree": { 858 - "version": "1.0.6", 859 - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 860 - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" 861 - }, 862 - "node_modules/@types/stats.js": { 863 - "version": "0.17.3", 864 - "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", 865 - "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==" 866 - }, 867 - "node_modules/@types/three": { 868 - "version": "0.173.0", 869 - "resolved": "https://registry.npmjs.org/@types/three/-/three-0.173.0.tgz", 870 - "integrity": "sha512-KtNjfI/CRB6JVKIVeZM1R3GYDX2wkoV2itNcQu2j4d7qkhjGOuB+s2oF6jl9mztycDLGMtrAnJQYxInC8Bb20A==", 871 - "dependencies": { 872 - "@tweenjs/tween.js": "~23.1.3", 873 - "@types/stats.js": "*", 874 - "@types/webxr": "*", 875 - "@webgpu/types": "*", 876 - "fflate": "~0.8.2", 877 - "meshoptimizer": "~0.18.1" 878 - } 879 - }, 880 - "node_modules/@types/webxr": { 881 - "version": "0.5.21", 882 - "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.21.tgz", 883 - "integrity": "sha512-geZIAtLzjGmgY2JUi6VxXdCrTb99A7yP49lxLr2Nm/uIK0PkkxcEi4OGhoGDO4pxCf3JwGz2GiJL2Ej4K2bKaA==" 884 - }, 885 - "node_modules/@webgpu/types": { 886 - "version": "0.1.54", 887 - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.54.tgz", 888 - "integrity": "sha512-81oaalC8LFrXjhsczomEQ0u3jG+TqE6V9QHLA8GNZq/Rnot0KDugu3LhSYSlie8tSdooAN1Hov05asrUUp9qgg==" 889 - }, 890 - "node_modules/@xmldom/xmldom": { 891 - "version": "0.8.10", 892 - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", 893 - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", 894 - "engines": { 895 - "node": ">=10.0.0" 896 - } 897 - }, 898 - "node_modules/detect-libc": { 899 - "version": "1.0.3", 900 - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 901 - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", 902 - "bin": { 903 - "detect-libc": "bin/detect-libc.js" 904 - }, 905 - "engines": { 906 - "node": ">=0.10" 907 - } 908 - }, 909 - "node_modules/earcut": { 910 - "version": "2.2.4", 911 - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", 912 - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" 913 - }, 914 - "node_modules/enhanced-resolve": { 915 - "version": "5.18.0", 916 - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", 917 - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", 918 - "dependencies": { 919 - "graceful-fs": "^4.2.4", 920 - "tapable": "^2.2.0" 921 - }, 922 - "engines": { 923 - "node": ">=10.13.0" 924 - } 925 - }, 926 - "node_modules/esbuild": { 927 - "version": "0.24.2", 928 - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", 929 - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", 930 - "hasInstallScript": true, 931 - "bin": { 932 - "esbuild": "bin/esbuild" 933 - }, 934 - "engines": { 935 - "node": ">=18" 936 - }, 937 - "optionalDependencies": { 938 - "@esbuild/aix-ppc64": "0.24.2", 939 - "@esbuild/android-arm": "0.24.2", 940 - "@esbuild/android-arm64": "0.24.2", 941 - "@esbuild/android-x64": "0.24.2", 942 - "@esbuild/darwin-arm64": "0.24.2", 943 - "@esbuild/darwin-x64": "0.24.2", 944 - "@esbuild/freebsd-arm64": "0.24.2", 945 - "@esbuild/freebsd-x64": "0.24.2", 946 - "@esbuild/linux-arm": "0.24.2", 947 - "@esbuild/linux-arm64": "0.24.2", 948 - "@esbuild/linux-ia32": "0.24.2", 949 - "@esbuild/linux-loong64": "0.24.2", 950 - "@esbuild/linux-mips64el": "0.24.2", 951 - "@esbuild/linux-ppc64": "0.24.2", 952 - "@esbuild/linux-riscv64": "0.24.2", 953 - "@esbuild/linux-s390x": "0.24.2", 954 - "@esbuild/linux-x64": "0.24.2", 955 - "@esbuild/netbsd-arm64": "0.24.2", 956 - "@esbuild/netbsd-x64": "0.24.2", 957 - "@esbuild/openbsd-arm64": "0.24.2", 958 - "@esbuild/openbsd-x64": "0.24.2", 959 - "@esbuild/sunos-x64": "0.24.2", 960 - "@esbuild/win32-arm64": "0.24.2", 961 - "@esbuild/win32-ia32": "0.24.2", 962 - "@esbuild/win32-x64": "0.24.2" 963 - } 964 - }, 965 - "node_modules/eventemitter3": { 966 - "version": "5.0.1", 967 - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 968 - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" 969 - }, 970 - "node_modules/fflate": { 971 - "version": "0.8.2", 972 - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", 973 - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" 974 - }, 975 - "node_modules/fsevents": { 976 - "version": "2.3.3", 977 - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 978 - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 979 - "hasInstallScript": true, 980 - "optional": true, 981 - "os": [ 982 - "darwin" 983 - ], 984 - "engines": { 985 - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 986 - } 987 - }, 988 - "node_modules/graceful-fs": { 989 - "version": "4.2.11", 990 - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 991 - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 992 - }, 993 - "node_modules/ismobilejs": { 994 - "version": "1.1.1", 995 - "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", 996 - "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==" 997 - }, 998 - "node_modules/jiti": { 999 - "version": "2.4.2", 1000 - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", 1001 - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", 1002 - "bin": { 1003 - "jiti": "lib/jiti-cli.mjs" 1004 - } 1005 - }, 1006 - "node_modules/lightningcss": { 1007 - "version": "1.29.1", 1008 - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.1.tgz", 1009 - "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==", 1010 - "dependencies": { 1011 - "detect-libc": "^1.0.3" 1012 - }, 1013 - "engines": { 1014 - "node": ">= 12.0.0" 1015 - }, 1016 - "funding": { 1017 - "type": "opencollective", 1018 - "url": "https://opencollective.com/parcel" 1019 - }, 1020 - "optionalDependencies": { 1021 - "lightningcss-darwin-arm64": "1.29.1", 1022 - "lightningcss-darwin-x64": "1.29.1", 1023 - "lightningcss-freebsd-x64": "1.29.1", 1024 - "lightningcss-linux-arm-gnueabihf": "1.29.1", 1025 - "lightningcss-linux-arm64-gnu": "1.29.1", 1026 - "lightningcss-linux-arm64-musl": "1.29.1", 1027 - "lightningcss-linux-x64-gnu": "1.29.1", 1028 - "lightningcss-linux-x64-musl": "1.29.1", 1029 - "lightningcss-win32-arm64-msvc": "1.29.1", 1030 - "lightningcss-win32-x64-msvc": "1.29.1" 1031 - } 1032 - }, 1033 - "node_modules/lightningcss-darwin-arm64": { 1034 - "version": "1.29.1", 1035 - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.1.tgz", 1036 - "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==", 1037 - "cpu": [ 1038 - "arm64" 1039 - ], 1040 - "optional": true, 1041 - "os": [ 1042 - "darwin" 1043 - ], 1044 - "engines": { 1045 - "node": ">= 12.0.0" 1046 - }, 1047 - "funding": { 1048 - "type": "opencollective", 1049 - "url": "https://opencollective.com/parcel" 1050 - } 1051 - }, 1052 - "node_modules/lightningcss-darwin-x64": { 1053 - "version": "1.29.1", 1054 - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.1.tgz", 1055 - "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==", 1056 - "cpu": [ 1057 - "x64" 1058 - ], 1059 - "optional": true, 1060 - "os": [ 1061 - "darwin" 1062 - ], 1063 - "engines": { 1064 - "node": ">= 12.0.0" 1065 - }, 1066 - "funding": { 1067 - "type": "opencollective", 1068 - "url": "https://opencollective.com/parcel" 1069 - } 1070 - }, 1071 - "node_modules/lightningcss-freebsd-x64": { 1072 - "version": "1.29.1", 1073 - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.1.tgz", 1074 - "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==", 1075 - "cpu": [ 1076 - "x64" 1077 - ], 1078 - "optional": true, 1079 - "os": [ 1080 - "freebsd" 1081 - ], 1082 - "engines": { 1083 - "node": ">= 12.0.0" 1084 - }, 1085 - "funding": { 1086 - "type": "opencollective", 1087 - "url": "https://opencollective.com/parcel" 1088 - } 1089 - }, 1090 - "node_modules/lightningcss-linux-arm-gnueabihf": { 1091 - "version": "1.29.1", 1092 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.1.tgz", 1093 - "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==", 1094 - "cpu": [ 1095 - "arm" 1096 - ], 1097 - "optional": true, 1098 - "os": [ 1099 - "linux" 1100 - ], 1101 - "engines": { 1102 - "node": ">= 12.0.0" 1103 - }, 1104 - "funding": { 1105 - "type": "opencollective", 1106 - "url": "https://opencollective.com/parcel" 1107 - } 1108 - }, 1109 - "node_modules/lightningcss-linux-arm64-gnu": { 1110 - "version": "1.29.1", 1111 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.1.tgz", 1112 - "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==", 1113 - "cpu": [ 1114 - "arm64" 1115 - ], 1116 - "optional": true, 1117 - "os": [ 1118 - "linux" 1119 - ], 1120 - "engines": { 1121 - "node": ">= 12.0.0" 1122 - }, 1123 - "funding": { 1124 - "type": "opencollective", 1125 - "url": "https://opencollective.com/parcel" 1126 - } 1127 - }, 1128 - "node_modules/lightningcss-linux-arm64-musl": { 1129 - "version": "1.29.1", 1130 - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.1.tgz", 1131 - "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==", 1132 - "cpu": [ 1133 - "arm64" 1134 - ], 1135 - "optional": true, 1136 - "os": [ 1137 - "linux" 1138 - ], 1139 - "engines": { 1140 - "node": ">= 12.0.0" 1141 - }, 1142 - "funding": { 1143 - "type": "opencollective", 1144 - "url": "https://opencollective.com/parcel" 1145 - } 1146 - }, 1147 - "node_modules/lightningcss-linux-x64-gnu": { 1148 - "version": "1.29.1", 1149 - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.1.tgz", 1150 - "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==", 1151 - "cpu": [ 1152 - "x64" 1153 - ], 1154 - "optional": true, 1155 - "os": [ 1156 - "linux" 1157 - ], 1158 - "engines": { 1159 - "node": ">= 12.0.0" 1160 - }, 1161 - "funding": { 1162 - "type": "opencollective", 1163 - "url": "https://opencollective.com/parcel" 1164 - } 1165 - }, 1166 - "node_modules/lightningcss-linux-x64-musl": { 1167 - "version": "1.29.1", 1168 - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.1.tgz", 1169 - "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==", 1170 - "cpu": [ 1171 - "x64" 1172 - ], 1173 - "optional": true, 1174 - "os": [ 1175 - "linux" 1176 - ], 1177 - "engines": { 1178 - "node": ">= 12.0.0" 1179 - }, 1180 - "funding": { 1181 - "type": "opencollective", 1182 - "url": "https://opencollective.com/parcel" 1183 - } 1184 - }, 1185 - "node_modules/lightningcss-win32-arm64-msvc": { 1186 - "version": "1.29.1", 1187 - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.1.tgz", 1188 - "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==", 1189 - "cpu": [ 1190 - "arm64" 1191 - ], 1192 - "optional": true, 1193 - "os": [ 1194 - "win32" 1195 - ], 1196 - "engines": { 1197 - "node": ">= 12.0.0" 1198 - }, 1199 - "funding": { 1200 - "type": "opencollective", 1201 - "url": "https://opencollective.com/parcel" 1202 - } 1203 - }, 1204 - "node_modules/lightningcss-win32-x64-msvc": { 1205 - "version": "1.29.1", 1206 - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.1.tgz", 1207 - "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==", 1208 - "cpu": [ 1209 - "x64" 1210 - ], 1211 - "optional": true, 1212 - "os": [ 1213 - "win32" 1214 - ], 1215 - "engines": { 1216 - "node": ">= 12.0.0" 1217 - }, 1218 - "funding": { 1219 - "type": "opencollective", 1220 - "url": "https://opencollective.com/parcel" 1221 - } 1222 - }, 1223 - "node_modules/meshoptimizer": { 1224 - "version": "0.18.1", 1225 - "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", 1226 - "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==" 1227 - }, 1228 - "node_modules/nanoid": { 1229 - "version": "3.3.8", 1230 - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 1231 - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 1232 - "funding": [ 1233 - { 1234 - "type": "github", 1235 - "url": "https://github.com/sponsors/ai" 1236 - } 1237 - ], 1238 - "bin": { 1239 - "nanoid": "bin/nanoid.cjs" 1240 - }, 1241 - "engines": { 1242 - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1243 - } 1244 - }, 1245 - "node_modules/parse-svg-path": { 1246 - "version": "0.1.2", 1247 - "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", 1248 - "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" 1249 - }, 1250 - "node_modules/picocolors": { 1251 - "version": "1.1.1", 1252 - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1253 - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" 1254 - }, 1255 - "node_modules/pixi.js": { 1256 - "version": "8.7.3", 1257 - "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.7.3.tgz", 1258 - "integrity": "sha512-wfWlhJYnGx1s4f2yoouevQjaeacbJ12LTkJGa+n9AIYNIjOnmJylBtZ2mARX7iFk3mr2xv0wuo//XPe2hk5OBw==", 1259 - "dependencies": { 1260 - "@pixi/colord": "^2.9.6", 1261 - "@types/css-font-loading-module": "^0.0.12", 1262 - "@types/earcut": "^2.1.4", 1263 - "@webgpu/types": "^0.1.40", 1264 - "@xmldom/xmldom": "^0.8.10", 1265 - "earcut": "^2.2.4", 1266 - "eventemitter3": "^5.0.1", 1267 - "ismobilejs": "^1.1.1", 1268 - "parse-svg-path": "^0.1.2" 1269 - } 1270 - }, 1271 - "node_modules/postcss": { 1272 - "version": "8.5.1", 1273 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", 1274 - "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", 1275 - "funding": [ 1276 - { 1277 - "type": "opencollective", 1278 - "url": "https://opencollective.com/postcss/" 1279 - }, 1280 - { 1281 - "type": "tidelift", 1282 - "url": "https://tidelift.com/funding/github/npm/postcss" 1283 - }, 1284 - { 1285 - "type": "github", 1286 - "url": "https://github.com/sponsors/ai" 1287 - } 1288 - ], 1289 - "dependencies": { 1290 - "nanoid": "^3.3.8", 1291 - "picocolors": "^1.1.1", 1292 - "source-map-js": "^1.2.1" 1293 - }, 1294 - "engines": { 1295 - "node": "^10 || ^12 || >=14" 1296 - } 1297 - }, 1298 - "node_modules/prettier": { 1299 - "version": "3.4.2", 1300 - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", 1301 - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", 1302 - "bin": { 1303 - "prettier": "bin/prettier.cjs" 1304 - }, 1305 - "engines": { 1306 - "node": ">=14" 1307 - }, 1308 - "funding": { 1309 - "url": "https://github.com/prettier/prettier?sponsor=1" 1310 - } 1311 - }, 1312 - "node_modules/rollup": { 1313 - "version": "4.34.0", 1314 - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.0.tgz", 1315 - "integrity": "sha512-+4C/cgJ9w6sudisA0nZz0+O7lTP9a3CzNLsoDwaRumM8QHwghUsu6tqHXiTmNUp/rqNiM14++7dkzHDyCRs0Jg==", 1316 - "dependencies": { 1317 - "@types/estree": "1.0.6" 1318 - }, 1319 - "bin": { 1320 - "rollup": "dist/bin/rollup" 1321 - }, 1322 - "engines": { 1323 - "node": ">=18.0.0", 1324 - "npm": ">=8.0.0" 1325 - }, 1326 - "optionalDependencies": { 1327 - "@rollup/rollup-android-arm-eabi": "4.34.0", 1328 - "@rollup/rollup-android-arm64": "4.34.0", 1329 - "@rollup/rollup-darwin-arm64": "4.34.0", 1330 - "@rollup/rollup-darwin-x64": "4.34.0", 1331 - "@rollup/rollup-freebsd-arm64": "4.34.0", 1332 - "@rollup/rollup-freebsd-x64": "4.34.0", 1333 - "@rollup/rollup-linux-arm-gnueabihf": "4.34.0", 1334 - "@rollup/rollup-linux-arm-musleabihf": "4.34.0", 1335 - "@rollup/rollup-linux-arm64-gnu": "4.34.0", 1336 - "@rollup/rollup-linux-arm64-musl": "4.34.0", 1337 - "@rollup/rollup-linux-loongarch64-gnu": "4.34.0", 1338 - "@rollup/rollup-linux-powerpc64le-gnu": "4.34.0", 1339 - "@rollup/rollup-linux-riscv64-gnu": "4.34.0", 1340 - "@rollup/rollup-linux-s390x-gnu": "4.34.0", 1341 - "@rollup/rollup-linux-x64-gnu": "4.34.0", 1342 - "@rollup/rollup-linux-x64-musl": "4.34.0", 1343 - "@rollup/rollup-win32-arm64-msvc": "4.34.0", 1344 - "@rollup/rollup-win32-ia32-msvc": "4.34.0", 1345 - "@rollup/rollup-win32-x64-msvc": "4.34.0", 1346 - "fsevents": "~2.3.2" 1347 - } 1348 - }, 1349 - "node_modules/source-map-js": { 1350 - "version": "1.2.1", 1351 - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 1352 - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 1353 - "engines": { 1354 - "node": ">=0.10.0" 1355 - } 1356 - }, 1357 - "node_modules/tailwindcss": { 1358 - "version": "4.0.3", 1359 - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.3.tgz", 1360 - "integrity": "sha512-ImmZF0Lon5RrQpsEAKGxRvHwCvMgSC4XVlFRqmbzTEDb/3wvin9zfEZrMwgsa3yqBbPqahYcVI6lulM2S7IZAA==" 1361 - }, 1362 - "node_modules/tapable": { 1363 - "version": "2.2.1", 1364 - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 1365 - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 1366 - "engines": { 1367 - "node": ">=6" 1368 - } 1369 - }, 1370 - "node_modules/three": { 1371 - "version": "0.173.0", 1372 - "resolved": "https://registry.npmjs.org/three/-/three-0.173.0.tgz", 1373 - "integrity": "sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==" 1374 - }, 1375 - "node_modules/typescript": { 1376 - "version": "5.6.3", 1377 - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", 1378 - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", 1379 - "dev": true, 1380 - "bin": { 1381 - "tsc": "bin/tsc", 1382 - "tsserver": "bin/tsserver" 1383 - }, 1384 - "engines": { 1385 - "node": ">=14.17" 1386 - } 1387 - }, 1388 - "node_modules/vite": { 1389 - "version": "6.0.11", 1390 - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz", 1391 - "integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==", 1392 - "dependencies": { 1393 - "esbuild": "^0.24.2", 1394 - "postcss": "^8.4.49", 1395 - "rollup": "^4.23.0" 1396 - }, 1397 - "bin": { 1398 - "vite": "bin/vite.js" 1399 - }, 1400 - "engines": { 1401 - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 1402 - }, 1403 - "funding": { 1404 - "url": "https://github.com/vitejs/vite?sponsor=1" 1405 - }, 1406 - "optionalDependencies": { 1407 - "fsevents": "~2.3.3" 1408 - }, 1409 - "peerDependencies": { 1410 - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 1411 - "jiti": ">=1.21.0", 1412 - "less": "*", 1413 - "lightningcss": "^1.21.0", 1414 - "sass": "*", 1415 - "sass-embedded": "*", 1416 - "stylus": "*", 1417 - "sugarss": "*", 1418 - "terser": "^5.16.0", 1419 - "tsx": "^4.8.1", 1420 - "yaml": "^2.4.2" 1421 - }, 1422 - "peerDependenciesMeta": { 1423 - "@types/node": { 1424 - "optional": true 1425 - }, 1426 - "jiti": { 1427 - "optional": true 1428 - }, 1429 - "less": { 1430 - "optional": true 1431 - }, 1432 - "lightningcss": { 1433 - "optional": true 1434 - }, 1435 - "sass": { 1436 - "optional": true 1437 - }, 1438 - "sass-embedded": { 1439 - "optional": true 1440 - }, 1441 - "stylus": { 1442 - "optional": true 1443 - }, 1444 - "sugarss": { 1445 - "optional": true 1446 - }, 1447 - "terser": { 1448 - "optional": true 1449 - }, 1450 - "tsx": { 1451 - "optional": true 1452 - }, 1453 - "yaml": { 1454 - "optional": true 1455 - } 1456 - } 1457 - }, 1458 - "node_modules/wiggle": { 1459 - "version": "0.0.17", 1460 - "resolved": "https://registry.npmjs.org/wiggle/-/wiggle-0.0.17.tgz", 1461 - "integrity": "sha512-vF4Kx9a+lHVWia3ZLhZcMnam9VhFGND0+9WYnHq0rcnYDLlbL4iFzYUXJk2cx5reDolwt+EN5mhUP3uHGhWtRQ==", 1462 - "peerDependencies": { 1463 - "three": ">= 0.152.0" 1464 - } 1465 - } 1466 - } 2 + "name": "tiny-creature", 3 + "version": "0.0.1", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "tiny-creature", 9 + "version": "0.0.1", 10 + "dependencies": { 11 + "@sveltejs/adapter-static": "^3.0.8", 12 + "@threlte/core": "^8.0.1", 13 + "@threlte/extras": "^9.0.1", 14 + "@threlte/studio": "^0.1.3", 15 + "@types/three": "^0.173.0", 16 + "pixi.js": "^8.7.3", 17 + "three": "^0.173.0", 18 + "wiggle": "^0.0.17" 19 + }, 20 + "devDependencies": { 21 + "@eslint/compat": "^1.2.5", 22 + "@eslint/js": "^9.18.0", 23 + "@sveltejs/adapter-auto": "^4.0.0", 24 + "@sveltejs/kit": "^2.16.0", 25 + "@sveltejs/vite-plugin-svelte": "^5.0.0", 26 + "@tailwindcss/forms": "^0.5.10", 27 + "@tailwindcss/typography": "^0.5.16", 28 + "autoprefixer": "^10.4.20", 29 + "eslint": "^9.18.0", 30 + "eslint-config-prettier": "^10.0.1", 31 + "eslint-plugin-svelte": "^2.46.1", 32 + "globals": "^15.14.0", 33 + "prettier": "^3.4.2", 34 + "prettier-plugin-svelte": "^3.3.3", 35 + "prettier-plugin-tailwindcss": "^0.6.10", 36 + "svelte": "^5.0.0", 37 + "svelte-check": "^4.0.0", 38 + "tailwindcss": "^3.4.17", 39 + "typescript": "^5.0.0", 40 + "typescript-eslint": "^8.20.0", 41 + "vite": "^6.0.0" 42 + } 43 + }, 44 + "node_modules/@alloc/quick-lru": { 45 + "version": "5.2.0", 46 + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", 47 + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", 48 + "dev": true, 49 + "engines": { 50 + "node": ">=10" 51 + }, 52 + "funding": { 53 + "url": "https://github.com/sponsors/sindresorhus" 54 + } 55 + }, 56 + "node_modules/@ampproject/remapping": { 57 + "version": "2.3.0", 58 + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 59 + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 60 + "dependencies": { 61 + "@jridgewell/gen-mapping": "^0.3.5", 62 + "@jridgewell/trace-mapping": "^0.3.24" 63 + }, 64 + "engines": { 65 + "node": ">=6.0.0" 66 + } 67 + }, 68 + "node_modules/@esbuild/aix-ppc64": { 69 + "version": "0.24.2", 70 + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", 71 + "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", 72 + "cpu": [ 73 + "ppc64" 74 + ], 75 + "optional": true, 76 + "os": [ 77 + "aix" 78 + ], 79 + "engines": { 80 + "node": ">=18" 81 + } 82 + }, 83 + "node_modules/@esbuild/android-arm": { 84 + "version": "0.24.2", 85 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", 86 + "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", 87 + "cpu": [ 88 + "arm" 89 + ], 90 + "optional": true, 91 + "os": [ 92 + "android" 93 + ], 94 + "engines": { 95 + "node": ">=18" 96 + } 97 + }, 98 + "node_modules/@esbuild/android-arm64": { 99 + "version": "0.24.2", 100 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", 101 + "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", 102 + "cpu": [ 103 + "arm64" 104 + ], 105 + "optional": true, 106 + "os": [ 107 + "android" 108 + ], 109 + "engines": { 110 + "node": ">=18" 111 + } 112 + }, 113 + "node_modules/@esbuild/android-x64": { 114 + "version": "0.24.2", 115 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", 116 + "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", 117 + "cpu": [ 118 + "x64" 119 + ], 120 + "optional": true, 121 + "os": [ 122 + "android" 123 + ], 124 + "engines": { 125 + "node": ">=18" 126 + } 127 + }, 128 + "node_modules/@esbuild/darwin-arm64": { 129 + "version": "0.24.2", 130 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", 131 + "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", 132 + "cpu": [ 133 + "arm64" 134 + ], 135 + "optional": true, 136 + "os": [ 137 + "darwin" 138 + ], 139 + "engines": { 140 + "node": ">=18" 141 + } 142 + }, 143 + "node_modules/@esbuild/darwin-x64": { 144 + "version": "0.24.2", 145 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", 146 + "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", 147 + "cpu": [ 148 + "x64" 149 + ], 150 + "optional": true, 151 + "os": [ 152 + "darwin" 153 + ], 154 + "engines": { 155 + "node": ">=18" 156 + } 157 + }, 158 + "node_modules/@esbuild/freebsd-arm64": { 159 + "version": "0.24.2", 160 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", 161 + "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", 162 + "cpu": [ 163 + "arm64" 164 + ], 165 + "optional": true, 166 + "os": [ 167 + "freebsd" 168 + ], 169 + "engines": { 170 + "node": ">=18" 171 + } 172 + }, 173 + "node_modules/@esbuild/freebsd-x64": { 174 + "version": "0.24.2", 175 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", 176 + "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", 177 + "cpu": [ 178 + "x64" 179 + ], 180 + "optional": true, 181 + "os": [ 182 + "freebsd" 183 + ], 184 + "engines": { 185 + "node": ">=18" 186 + } 187 + }, 188 + "node_modules/@esbuild/linux-arm": { 189 + "version": "0.24.2", 190 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", 191 + "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", 192 + "cpu": [ 193 + "arm" 194 + ], 195 + "optional": true, 196 + "os": [ 197 + "linux" 198 + ], 199 + "engines": { 200 + "node": ">=18" 201 + } 202 + }, 203 + "node_modules/@esbuild/linux-arm64": { 204 + "version": "0.24.2", 205 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", 206 + "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", 207 + "cpu": [ 208 + "arm64" 209 + ], 210 + "optional": true, 211 + "os": [ 212 + "linux" 213 + ], 214 + "engines": { 215 + "node": ">=18" 216 + } 217 + }, 218 + "node_modules/@esbuild/linux-ia32": { 219 + "version": "0.24.2", 220 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", 221 + "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", 222 + "cpu": [ 223 + "ia32" 224 + ], 225 + "optional": true, 226 + "os": [ 227 + "linux" 228 + ], 229 + "engines": { 230 + "node": ">=18" 231 + } 232 + }, 233 + "node_modules/@esbuild/linux-loong64": { 234 + "version": "0.24.2", 235 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", 236 + "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", 237 + "cpu": [ 238 + "loong64" 239 + ], 240 + "optional": true, 241 + "os": [ 242 + "linux" 243 + ], 244 + "engines": { 245 + "node": ">=18" 246 + } 247 + }, 248 + "node_modules/@esbuild/linux-mips64el": { 249 + "version": "0.24.2", 250 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", 251 + "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", 252 + "cpu": [ 253 + "mips64el" 254 + ], 255 + "optional": true, 256 + "os": [ 257 + "linux" 258 + ], 259 + "engines": { 260 + "node": ">=18" 261 + } 262 + }, 263 + "node_modules/@esbuild/linux-ppc64": { 264 + "version": "0.24.2", 265 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", 266 + "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", 267 + "cpu": [ 268 + "ppc64" 269 + ], 270 + "optional": true, 271 + "os": [ 272 + "linux" 273 + ], 274 + "engines": { 275 + "node": ">=18" 276 + } 277 + }, 278 + "node_modules/@esbuild/linux-riscv64": { 279 + "version": "0.24.2", 280 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", 281 + "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", 282 + "cpu": [ 283 + "riscv64" 284 + ], 285 + "optional": true, 286 + "os": [ 287 + "linux" 288 + ], 289 + "engines": { 290 + "node": ">=18" 291 + } 292 + }, 293 + "node_modules/@esbuild/linux-s390x": { 294 + "version": "0.24.2", 295 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", 296 + "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", 297 + "cpu": [ 298 + "s390x" 299 + ], 300 + "optional": true, 301 + "os": [ 302 + "linux" 303 + ], 304 + "engines": { 305 + "node": ">=18" 306 + } 307 + }, 308 + "node_modules/@esbuild/linux-x64": { 309 + "version": "0.24.2", 310 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", 311 + "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", 312 + "cpu": [ 313 + "x64" 314 + ], 315 + "optional": true, 316 + "os": [ 317 + "linux" 318 + ], 319 + "engines": { 320 + "node": ">=18" 321 + } 322 + }, 323 + "node_modules/@esbuild/netbsd-arm64": { 324 + "version": "0.24.2", 325 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", 326 + "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", 327 + "cpu": [ 328 + "arm64" 329 + ], 330 + "optional": true, 331 + "os": [ 332 + "netbsd" 333 + ], 334 + "engines": { 335 + "node": ">=18" 336 + } 337 + }, 338 + "node_modules/@esbuild/netbsd-x64": { 339 + "version": "0.24.2", 340 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", 341 + "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", 342 + "cpu": [ 343 + "x64" 344 + ], 345 + "optional": true, 346 + "os": [ 347 + "netbsd" 348 + ], 349 + "engines": { 350 + "node": ">=18" 351 + } 352 + }, 353 + "node_modules/@esbuild/openbsd-arm64": { 354 + "version": "0.24.2", 355 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", 356 + "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", 357 + "cpu": [ 358 + "arm64" 359 + ], 360 + "optional": true, 361 + "os": [ 362 + "openbsd" 363 + ], 364 + "engines": { 365 + "node": ">=18" 366 + } 367 + }, 368 + "node_modules/@esbuild/openbsd-x64": { 369 + "version": "0.24.2", 370 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", 371 + "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", 372 + "cpu": [ 373 + "x64" 374 + ], 375 + "optional": true, 376 + "os": [ 377 + "openbsd" 378 + ], 379 + "engines": { 380 + "node": ">=18" 381 + } 382 + }, 383 + "node_modules/@esbuild/sunos-x64": { 384 + "version": "0.24.2", 385 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", 386 + "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", 387 + "cpu": [ 388 + "x64" 389 + ], 390 + "optional": true, 391 + "os": [ 392 + "sunos" 393 + ], 394 + "engines": { 395 + "node": ">=18" 396 + } 397 + }, 398 + "node_modules/@esbuild/win32-arm64": { 399 + "version": "0.24.2", 400 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", 401 + "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", 402 + "cpu": [ 403 + "arm64" 404 + ], 405 + "optional": true, 406 + "os": [ 407 + "win32" 408 + ], 409 + "engines": { 410 + "node": ">=18" 411 + } 412 + }, 413 + "node_modules/@esbuild/win32-ia32": { 414 + "version": "0.24.2", 415 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", 416 + "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", 417 + "cpu": [ 418 + "ia32" 419 + ], 420 + "optional": true, 421 + "os": [ 422 + "win32" 423 + ], 424 + "engines": { 425 + "node": ">=18" 426 + } 427 + }, 428 + "node_modules/@esbuild/win32-x64": { 429 + "version": "0.24.2", 430 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", 431 + "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", 432 + "cpu": [ 433 + "x64" 434 + ], 435 + "optional": true, 436 + "os": [ 437 + "win32" 438 + ], 439 + "engines": { 440 + "node": ">=18" 441 + } 442 + }, 443 + "node_modules/@eslint-community/eslint-utils": { 444 + "version": "4.4.1", 445 + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", 446 + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", 447 + "dev": true, 448 + "dependencies": { 449 + "eslint-visitor-keys": "^3.4.3" 450 + }, 451 + "engines": { 452 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 453 + }, 454 + "funding": { 455 + "url": "https://opencollective.com/eslint" 456 + }, 457 + "peerDependencies": { 458 + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 459 + } 460 + }, 461 + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { 462 + "version": "3.4.3", 463 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 464 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 465 + "dev": true, 466 + "engines": { 467 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 468 + }, 469 + "funding": { 470 + "url": "https://opencollective.com/eslint" 471 + } 472 + }, 473 + "node_modules/@eslint-community/regexpp": { 474 + "version": "4.12.1", 475 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 476 + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 477 + "dev": true, 478 + "engines": { 479 + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 480 + } 481 + }, 482 + "node_modules/@eslint/compat": { 483 + "version": "1.2.6", 484 + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.6.tgz", 485 + "integrity": "sha512-k7HNCqApoDHM6XzT30zGoETj+D+uUcZUb+IVAJmar3u6bvHf7hhHJcWx09QHj4/a2qrKZMWU0E16tvkiAdv06Q==", 486 + "dev": true, 487 + "engines": { 488 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 489 + }, 490 + "peerDependencies": { 491 + "eslint": "^9.10.0" 492 + }, 493 + "peerDependenciesMeta": { 494 + "eslint": { 495 + "optional": true 496 + } 497 + } 498 + }, 499 + "node_modules/@eslint/config-array": { 500 + "version": "0.19.2", 501 + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", 502 + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", 503 + "dev": true, 504 + "dependencies": { 505 + "@eslint/object-schema": "^2.1.6", 506 + "debug": "^4.3.1", 507 + "minimatch": "^3.1.2" 508 + }, 509 + "engines": { 510 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 511 + } 512 + }, 513 + "node_modules/@eslint/core": { 514 + "version": "0.10.0", 515 + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", 516 + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", 517 + "dev": true, 518 + "dependencies": { 519 + "@types/json-schema": "^7.0.15" 520 + }, 521 + "engines": { 522 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 523 + } 524 + }, 525 + "node_modules/@eslint/eslintrc": { 526 + "version": "3.2.0", 527 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", 528 + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", 529 + "dev": true, 530 + "dependencies": { 531 + "ajv": "^6.12.4", 532 + "debug": "^4.3.2", 533 + "espree": "^10.0.1", 534 + "globals": "^14.0.0", 535 + "ignore": "^5.2.0", 536 + "import-fresh": "^3.2.1", 537 + "js-yaml": "^4.1.0", 538 + "minimatch": "^3.1.2", 539 + "strip-json-comments": "^3.1.1" 540 + }, 541 + "engines": { 542 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 543 + }, 544 + "funding": { 545 + "url": "https://opencollective.com/eslint" 546 + } 547 + }, 548 + "node_modules/@eslint/eslintrc/node_modules/globals": { 549 + "version": "14.0.0", 550 + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 551 + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 552 + "dev": true, 553 + "engines": { 554 + "node": ">=18" 555 + }, 556 + "funding": { 557 + "url": "https://github.com/sponsors/sindresorhus" 558 + } 559 + }, 560 + "node_modules/@eslint/js": { 561 + "version": "9.19.0", 562 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", 563 + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", 564 + "dev": true, 565 + "engines": { 566 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 567 + } 568 + }, 569 + "node_modules/@eslint/object-schema": { 570 + "version": "2.1.6", 571 + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", 572 + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", 573 + "dev": true, 574 + "engines": { 575 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 576 + } 577 + }, 578 + "node_modules/@eslint/plugin-kit": { 579 + "version": "0.2.5", 580 + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", 581 + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", 582 + "dev": true, 583 + "dependencies": { 584 + "@eslint/core": "^0.10.0", 585 + "levn": "^0.4.1" 586 + }, 587 + "engines": { 588 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 589 + } 590 + }, 591 + "node_modules/@floating-ui/core": { 592 + "version": "1.6.9", 593 + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", 594 + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", 595 + "dependencies": { 596 + "@floating-ui/utils": "^0.2.9" 597 + } 598 + }, 599 + "node_modules/@floating-ui/dom": { 600 + "version": "1.6.13", 601 + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", 602 + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", 603 + "dependencies": { 604 + "@floating-ui/core": "^1.6.0", 605 + "@floating-ui/utils": "^0.2.9" 606 + } 607 + }, 608 + "node_modules/@floating-ui/utils": { 609 + "version": "0.2.9", 610 + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", 611 + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" 612 + }, 613 + "node_modules/@humanfs/core": { 614 + "version": "0.19.1", 615 + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 616 + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 617 + "dev": true, 618 + "engines": { 619 + "node": ">=18.18.0" 620 + } 621 + }, 622 + "node_modules/@humanfs/node": { 623 + "version": "0.16.6", 624 + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", 625 + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", 626 + "dev": true, 627 + "dependencies": { 628 + "@humanfs/core": "^0.19.1", 629 + "@humanwhocodes/retry": "^0.3.0" 630 + }, 631 + "engines": { 632 + "node": ">=18.18.0" 633 + } 634 + }, 635 + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { 636 + "version": "0.3.1", 637 + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", 638 + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", 639 + "dev": true, 640 + "engines": { 641 + "node": ">=18.18" 642 + }, 643 + "funding": { 644 + "type": "github", 645 + "url": "https://github.com/sponsors/nzakas" 646 + } 647 + }, 648 + "node_modules/@humanwhocodes/module-importer": { 649 + "version": "1.0.1", 650 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 651 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 652 + "dev": true, 653 + "engines": { 654 + "node": ">=12.22" 655 + }, 656 + "funding": { 657 + "type": "github", 658 + "url": "https://github.com/sponsors/nzakas" 659 + } 660 + }, 661 + "node_modules/@humanwhocodes/retry": { 662 + "version": "0.4.1", 663 + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", 664 + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", 665 + "dev": true, 666 + "engines": { 667 + "node": ">=18.18" 668 + }, 669 + "funding": { 670 + "type": "github", 671 + "url": "https://github.com/sponsors/nzakas" 672 + } 673 + }, 674 + "node_modules/@isaacs/cliui": { 675 + "version": "8.0.2", 676 + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 677 + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 678 + "dev": true, 679 + "dependencies": { 680 + "string-width": "^5.1.2", 681 + "string-width-cjs": "npm:string-width@^4.2.0", 682 + "strip-ansi": "^7.0.1", 683 + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 684 + "wrap-ansi": "^8.1.0", 685 + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 686 + }, 687 + "engines": { 688 + "node": ">=12" 689 + } 690 + }, 691 + "node_modules/@jridgewell/gen-mapping": { 692 + "version": "0.3.8", 693 + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 694 + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 695 + "dependencies": { 696 + "@jridgewell/set-array": "^1.2.1", 697 + "@jridgewell/sourcemap-codec": "^1.4.10", 698 + "@jridgewell/trace-mapping": "^0.3.24" 699 + }, 700 + "engines": { 701 + "node": ">=6.0.0" 702 + } 703 + }, 704 + "node_modules/@jridgewell/resolve-uri": { 705 + "version": "3.1.2", 706 + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 707 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 708 + "engines": { 709 + "node": ">=6.0.0" 710 + } 711 + }, 712 + "node_modules/@jridgewell/set-array": { 713 + "version": "1.2.1", 714 + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 715 + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 716 + "engines": { 717 + "node": ">=6.0.0" 718 + } 719 + }, 720 + "node_modules/@jridgewell/sourcemap-codec": { 721 + "version": "1.5.0", 722 + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 723 + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" 724 + }, 725 + "node_modules/@jridgewell/trace-mapping": { 726 + "version": "0.3.25", 727 + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 728 + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 729 + "dependencies": { 730 + "@jridgewell/resolve-uri": "^3.1.0", 731 + "@jridgewell/sourcemap-codec": "^1.4.14" 732 + } 733 + }, 734 + "node_modules/@kitschpatrol/tweakpane-plugin-camerakit": { 735 + "version": "0.3.1-beta.2", 736 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-camerakit/-/tweakpane-plugin-camerakit-0.3.1-beta.2.tgz", 737 + "integrity": "sha512-YxsuVQwCeJ02K8AyCD523nDEOgGLaZXcmQi83Lg3bGWKNQle9JDVOhY6NR4raD/moL7QpwJbm4hwNEefH+SfFw==", 738 + "dependencies": { 739 + "@tweakpane/core": "^2.0.4" 740 + }, 741 + "engines": { 742 + "node": ">=18.0.0", 743 + "pnpm": ">=9.0.0" 744 + }, 745 + "peerDependencies": { 746 + "tweakpane": "^4.0.0" 747 + } 748 + }, 749 + "node_modules/@kitschpatrol/tweakpane-plugin-essentials": { 750 + "version": "0.2.2-beta.2", 751 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-essentials/-/tweakpane-plugin-essentials-0.2.2-beta.2.tgz", 752 + "integrity": "sha512-j2Mgn+Xuy+N4Xu9jAhma+krshrEBjm0qYFssQK8zoQGP2l6C90xJ5CQevxeavaic9qQxMDNqaq2SDetxz0qVVw==", 753 + "dependencies": { 754 + "@tweakpane/core": "^2.0.4" 755 + }, 756 + "engines": { 757 + "node": ">=18.0.0", 758 + "pnpm": ">=9.0.0" 759 + }, 760 + "peerDependencies": { 761 + "tweakpane": "^4.0.0" 762 + } 763 + }, 764 + "node_modules/@kitschpatrol/tweakpane-plugin-file-import": { 765 + "version": "1.1.2-beta.1", 766 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-file-import/-/tweakpane-plugin-file-import-1.1.2-beta.1.tgz", 767 + "integrity": "sha512-wpKK2i4y0a5K5lnuP3huitcOq+l2cH8k+AY46j6NyNdGRK0aF3m0OuUQeIQYOAT6YuM4rzbbjAM0GaRuQwZDyg==", 768 + "dependencies": { 769 + "@tweakpane/core": "^2.0.4" 770 + }, 771 + "engines": { 772 + "node": ">=18.0.0", 773 + "pnpm": ">=9.0.0" 774 + }, 775 + "peerDependencies": { 776 + "tweakpane": "^4.0.0" 777 + } 778 + }, 779 + "node_modules/@kitschpatrol/tweakpane-plugin-image": { 780 + "version": "2.0.1-beta.4", 781 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-image/-/tweakpane-plugin-image-2.0.1-beta.4.tgz", 782 + "integrity": "sha512-/EHrhaBkuLFnIFD9Kpa3TYQFDgseKyTefx5NxRQ8aM47Pi8j/VRfUUrXfCnZy///K8wIQ1C82Q7aFoOYDK3EAw==", 783 + "dependencies": { 784 + "@tweakpane/core": "^2.0.4" 785 + }, 786 + "engines": { 787 + "node": ">=18.0.0", 788 + "pnpm": ">=9.0.0" 789 + }, 790 + "peerDependencies": { 791 + "tweakpane": "^4.0.0" 792 + } 793 + }, 794 + "node_modules/@kitschpatrol/tweakpane-plugin-inputs": { 795 + "version": "1.0.4-beta.3", 796 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-inputs/-/tweakpane-plugin-inputs-1.0.4-beta.3.tgz", 797 + "integrity": "sha512-77bvlTg4CjzXwzjnyy7XvNvknLcsJltO5bGSnzTKuhEzRn7ZfO2fbhc4Ejj5Fj6TCD7HbkHOGSPjgyieuXMNlA==", 798 + "dependencies": { 799 + "@tweakpane/core": "^2.0.4" 800 + }, 801 + "engines": { 802 + "node": ">=18.0.0", 803 + "pnpm": ">=9.0.0" 804 + }, 805 + "peerDependencies": { 806 + "tweakpane": "^4.0.0" 807 + } 808 + }, 809 + "node_modules/@kitschpatrol/tweakpane-plugin-profiler": { 810 + "version": "0.4.2-beta.2", 811 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-profiler/-/tweakpane-plugin-profiler-0.4.2-beta.2.tgz", 812 + "integrity": "sha512-rKaR+aVGIDo58JKRpDK7uLHF7JxYXZcIOnMA5UX4LmDRY9oMzzTZZBceqcPGfOAdlj/2VvOnSNWhqqYUsDzQTw==", 813 + "dependencies": { 814 + "@tweakpane/core": "^2.0.4" 815 + }, 816 + "engines": { 817 + "node": ">=18.0.0", 818 + "pnpm": ">=9.0.0" 819 + }, 820 + "peerDependencies": { 821 + "tweakpane": "^4.0.0" 822 + } 823 + }, 824 + "node_modules/@kitschpatrol/tweakpane-plugin-rotation": { 825 + "version": "0.2.1-beta.1", 826 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-rotation/-/tweakpane-plugin-rotation-0.2.1-beta.1.tgz", 827 + "integrity": "sha512-hWGJe2TWCSgGpadqh2UINbtUgsjbY7YLge+NrTCfmyqpjYEoBwQS3HVWRWSuvBdpILdjZKWBJa15JgrNdMX6Lw==", 828 + "dependencies": { 829 + "@tweakpane/core": "^2.0.4" 830 + }, 831 + "engines": { 832 + "node": ">=18.0.0", 833 + "pnpm": ">=9.0.0" 834 + }, 835 + "peerDependencies": { 836 + "tweakpane": "^4.0.0" 837 + } 838 + }, 839 + "node_modules/@kitschpatrol/tweakpane-plugin-textarea": { 840 + "version": "2.0.1-beta.1", 841 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-textarea/-/tweakpane-plugin-textarea-2.0.1-beta.1.tgz", 842 + "integrity": "sha512-3bo5iph7d9MGfvRgUAity4uz7Voj4DC5G7aQwVMBvEIpcFqNhUDAZrTCCZdKIOWZ8bz1dSJ06OVaq1pDvVaFuw==", 843 + "dependencies": { 844 + "@tweakpane/core": "^2.0.4" 845 + }, 846 + "peerDependencies": { 847 + "tweakpane": "^4.0.0" 848 + } 849 + }, 850 + "node_modules/@kitschpatrol/tweakpane-plugin-waveform": { 851 + "version": "1.0.4-beta.2", 852 + "resolved": "https://registry.npmjs.org/@kitschpatrol/tweakpane-plugin-waveform/-/tweakpane-plugin-waveform-1.0.4-beta.2.tgz", 853 + "integrity": "sha512-cyG1zBeJhQiM32cAsY7xfTnrsqoTLA6c5l+TfvXqi/ik3BSP769Ti/YL+nEsdL63Rm0FL0DwqUNF4wZtORJxsw==", 854 + "dependencies": { 855 + "@tweakpane/core": "^2.0.4" 856 + }, 857 + "peerDependencies": { 858 + "tweakpane": "^4.0.0" 859 + } 860 + }, 861 + "node_modules/@mdi/js": { 862 + "version": "7.4.47", 863 + "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.4.47.tgz", 864 + "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==" 865 + }, 866 + "node_modules/@nodelib/fs.scandir": { 867 + "version": "2.1.5", 868 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 869 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 870 + "dev": true, 871 + "dependencies": { 872 + "@nodelib/fs.stat": "2.0.5", 873 + "run-parallel": "^1.1.9" 874 + }, 875 + "engines": { 876 + "node": ">= 8" 877 + } 878 + }, 879 + "node_modules/@nodelib/fs.stat": { 880 + "version": "2.0.5", 881 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 882 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 883 + "dev": true, 884 + "engines": { 885 + "node": ">= 8" 886 + } 887 + }, 888 + "node_modules/@nodelib/fs.walk": { 889 + "version": "1.2.8", 890 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 891 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 892 + "dev": true, 893 + "dependencies": { 894 + "@nodelib/fs.scandir": "2.1.5", 895 + "fastq": "^1.6.0" 896 + }, 897 + "engines": { 898 + "node": ">= 8" 899 + } 900 + }, 901 + "node_modules/@parcel/watcher": { 902 + "version": "2.5.1", 903 + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", 904 + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", 905 + "hasInstallScript": true, 906 + "optional": true, 907 + "dependencies": { 908 + "detect-libc": "^1.0.3", 909 + "is-glob": "^4.0.3", 910 + "micromatch": "^4.0.5", 911 + "node-addon-api": "^7.0.0" 912 + }, 913 + "engines": { 914 + "node": ">= 10.0.0" 915 + }, 916 + "funding": { 917 + "type": "opencollective", 918 + "url": "https://opencollective.com/parcel" 919 + }, 920 + "optionalDependencies": { 921 + "@parcel/watcher-android-arm64": "2.5.1", 922 + "@parcel/watcher-darwin-arm64": "2.5.1", 923 + "@parcel/watcher-darwin-x64": "2.5.1", 924 + "@parcel/watcher-freebsd-x64": "2.5.1", 925 + "@parcel/watcher-linux-arm-glibc": "2.5.1", 926 + "@parcel/watcher-linux-arm-musl": "2.5.1", 927 + "@parcel/watcher-linux-arm64-glibc": "2.5.1", 928 + "@parcel/watcher-linux-arm64-musl": "2.5.1", 929 + "@parcel/watcher-linux-x64-glibc": "2.5.1", 930 + "@parcel/watcher-linux-x64-musl": "2.5.1", 931 + "@parcel/watcher-win32-arm64": "2.5.1", 932 + "@parcel/watcher-win32-ia32": "2.5.1", 933 + "@parcel/watcher-win32-x64": "2.5.1" 934 + } 935 + }, 936 + "node_modules/@parcel/watcher-android-arm64": { 937 + "version": "2.5.1", 938 + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", 939 + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", 940 + "cpu": [ 941 + "arm64" 942 + ], 943 + "optional": true, 944 + "os": [ 945 + "android" 946 + ], 947 + "engines": { 948 + "node": ">= 10.0.0" 949 + }, 950 + "funding": { 951 + "type": "opencollective", 952 + "url": "https://opencollective.com/parcel" 953 + } 954 + }, 955 + "node_modules/@parcel/watcher-darwin-arm64": { 956 + "version": "2.5.1", 957 + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", 958 + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", 959 + "cpu": [ 960 + "arm64" 961 + ], 962 + "optional": true, 963 + "os": [ 964 + "darwin" 965 + ], 966 + "engines": { 967 + "node": ">= 10.0.0" 968 + }, 969 + "funding": { 970 + "type": "opencollective", 971 + "url": "https://opencollective.com/parcel" 972 + } 973 + }, 974 + "node_modules/@parcel/watcher-darwin-x64": { 975 + "version": "2.5.1", 976 + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", 977 + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", 978 + "cpu": [ 979 + "x64" 980 + ], 981 + "optional": true, 982 + "os": [ 983 + "darwin" 984 + ], 985 + "engines": { 986 + "node": ">= 10.0.0" 987 + }, 988 + "funding": { 989 + "type": "opencollective", 990 + "url": "https://opencollective.com/parcel" 991 + } 992 + }, 993 + "node_modules/@parcel/watcher-freebsd-x64": { 994 + "version": "2.5.1", 995 + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", 996 + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", 997 + "cpu": [ 998 + "x64" 999 + ], 1000 + "optional": true, 1001 + "os": [ 1002 + "freebsd" 1003 + ], 1004 + "engines": { 1005 + "node": ">= 10.0.0" 1006 + }, 1007 + "funding": { 1008 + "type": "opencollective", 1009 + "url": "https://opencollective.com/parcel" 1010 + } 1011 + }, 1012 + "node_modules/@parcel/watcher-linux-arm-glibc": { 1013 + "version": "2.5.1", 1014 + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", 1015 + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", 1016 + "cpu": [ 1017 + "arm" 1018 + ], 1019 + "optional": true, 1020 + "os": [ 1021 + "linux" 1022 + ], 1023 + "engines": { 1024 + "node": ">= 10.0.0" 1025 + }, 1026 + "funding": { 1027 + "type": "opencollective", 1028 + "url": "https://opencollective.com/parcel" 1029 + } 1030 + }, 1031 + "node_modules/@parcel/watcher-linux-arm-musl": { 1032 + "version": "2.5.1", 1033 + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", 1034 + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", 1035 + "cpu": [ 1036 + "arm" 1037 + ], 1038 + "optional": true, 1039 + "os": [ 1040 + "linux" 1041 + ], 1042 + "engines": { 1043 + "node": ">= 10.0.0" 1044 + }, 1045 + "funding": { 1046 + "type": "opencollective", 1047 + "url": "https://opencollective.com/parcel" 1048 + } 1049 + }, 1050 + "node_modules/@parcel/watcher-linux-arm64-glibc": { 1051 + "version": "2.5.1", 1052 + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", 1053 + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", 1054 + "cpu": [ 1055 + "arm64" 1056 + ], 1057 + "optional": true, 1058 + "os": [ 1059 + "linux" 1060 + ], 1061 + "engines": { 1062 + "node": ">= 10.0.0" 1063 + }, 1064 + "funding": { 1065 + "type": "opencollective", 1066 + "url": "https://opencollective.com/parcel" 1067 + } 1068 + }, 1069 + "node_modules/@parcel/watcher-linux-arm64-musl": { 1070 + "version": "2.5.1", 1071 + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", 1072 + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", 1073 + "cpu": [ 1074 + "arm64" 1075 + ], 1076 + "optional": true, 1077 + "os": [ 1078 + "linux" 1079 + ], 1080 + "engines": { 1081 + "node": ">= 10.0.0" 1082 + }, 1083 + "funding": { 1084 + "type": "opencollective", 1085 + "url": "https://opencollective.com/parcel" 1086 + } 1087 + }, 1088 + "node_modules/@parcel/watcher-linux-x64-glibc": { 1089 + "version": "2.5.1", 1090 + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", 1091 + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", 1092 + "cpu": [ 1093 + "x64" 1094 + ], 1095 + "optional": true, 1096 + "os": [ 1097 + "linux" 1098 + ], 1099 + "engines": { 1100 + "node": ">= 10.0.0" 1101 + }, 1102 + "funding": { 1103 + "type": "opencollective", 1104 + "url": "https://opencollective.com/parcel" 1105 + } 1106 + }, 1107 + "node_modules/@parcel/watcher-linux-x64-musl": { 1108 + "version": "2.5.1", 1109 + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", 1110 + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", 1111 + "cpu": [ 1112 + "x64" 1113 + ], 1114 + "optional": true, 1115 + "os": [ 1116 + "linux" 1117 + ], 1118 + "engines": { 1119 + "node": ">= 10.0.0" 1120 + }, 1121 + "funding": { 1122 + "type": "opencollective", 1123 + "url": "https://opencollective.com/parcel" 1124 + } 1125 + }, 1126 + "node_modules/@parcel/watcher-win32-arm64": { 1127 + "version": "2.5.1", 1128 + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", 1129 + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", 1130 + "cpu": [ 1131 + "arm64" 1132 + ], 1133 + "optional": true, 1134 + "os": [ 1135 + "win32" 1136 + ], 1137 + "engines": { 1138 + "node": ">= 10.0.0" 1139 + }, 1140 + "funding": { 1141 + "type": "opencollective", 1142 + "url": "https://opencollective.com/parcel" 1143 + } 1144 + }, 1145 + "node_modules/@parcel/watcher-win32-ia32": { 1146 + "version": "2.5.1", 1147 + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", 1148 + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", 1149 + "cpu": [ 1150 + "ia32" 1151 + ], 1152 + "optional": true, 1153 + "os": [ 1154 + "win32" 1155 + ], 1156 + "engines": { 1157 + "node": ">= 10.0.0" 1158 + }, 1159 + "funding": { 1160 + "type": "opencollective", 1161 + "url": "https://opencollective.com/parcel" 1162 + } 1163 + }, 1164 + "node_modules/@parcel/watcher-win32-x64": { 1165 + "version": "2.5.1", 1166 + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", 1167 + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", 1168 + "cpu": [ 1169 + "x64" 1170 + ], 1171 + "optional": true, 1172 + "os": [ 1173 + "win32" 1174 + ], 1175 + "engines": { 1176 + "node": ">= 10.0.0" 1177 + }, 1178 + "funding": { 1179 + "type": "opencollective", 1180 + "url": "https://opencollective.com/parcel" 1181 + } 1182 + }, 1183 + "node_modules/@pixi/colord": { 1184 + "version": "2.9.6", 1185 + "resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz", 1186 + "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==" 1187 + }, 1188 + "node_modules/@pkgjs/parseargs": { 1189 + "version": "0.11.0", 1190 + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 1191 + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 1192 + "dev": true, 1193 + "optional": true, 1194 + "engines": { 1195 + "node": ">=14" 1196 + } 1197 + }, 1198 + "node_modules/@polka/url": { 1199 + "version": "1.0.0-next.28", 1200 + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", 1201 + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==" 1202 + }, 1203 + "node_modules/@rollup/rollup-android-arm-eabi": { 1204 + "version": "4.34.1", 1205 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.1.tgz", 1206 + "integrity": "sha512-kwctwVlswSEsr4ljpmxKrRKp1eG1v2NAhlzFzDf1x1OdYaMjBYjDCbHkzWm57ZXzTwqn8stMXgROrnMw8dJK3w==", 1207 + "cpu": [ 1208 + "arm" 1209 + ], 1210 + "optional": true, 1211 + "os": [ 1212 + "android" 1213 + ] 1214 + }, 1215 + "node_modules/@rollup/rollup-android-arm64": { 1216 + "version": "4.34.1", 1217 + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.1.tgz", 1218 + "integrity": "sha512-4H5ZtZitBPlbPsTv6HBB8zh1g5d0T8TzCmpndQdqq20Ugle/nroOyDMf9p7f88Gsu8vBLU78/cuh8FYHZqdXxw==", 1219 + "cpu": [ 1220 + "arm64" 1221 + ], 1222 + "optional": true, 1223 + "os": [ 1224 + "android" 1225 + ] 1226 + }, 1227 + "node_modules/@rollup/rollup-darwin-arm64": { 1228 + "version": "4.34.1", 1229 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.1.tgz", 1230 + "integrity": "sha512-f2AJ7Qwx9z25hikXvg+asco8Sfuc5NCLg8rmqQBIOUoWys5sb/ZX9RkMZDPdnnDevXAMJA5AWLnRBmgdXGEUiA==", 1231 + "cpu": [ 1232 + "arm64" 1233 + ], 1234 + "optional": true, 1235 + "os": [ 1236 + "darwin" 1237 + ] 1238 + }, 1239 + "node_modules/@rollup/rollup-darwin-x64": { 1240 + "version": "4.34.1", 1241 + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.1.tgz", 1242 + "integrity": "sha512-+/2JBrRfISCsWE4aEFXxd+7k9nWGXA8+wh7ZUHn/u8UDXOU9LN+QYKKhd57sIn6WRcorOnlqPMYFIwie/OHXWw==", 1243 + "cpu": [ 1244 + "x64" 1245 + ], 1246 + "optional": true, 1247 + "os": [ 1248 + "darwin" 1249 + ] 1250 + }, 1251 + "node_modules/@rollup/rollup-freebsd-arm64": { 1252 + "version": "4.34.1", 1253 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.1.tgz", 1254 + "integrity": "sha512-SUeB0pYjIXwT2vfAMQ7E4ERPq9VGRrPR7Z+S4AMssah5EHIilYqjWQoTn5dkDtuIJUSTs8H+C9dwoEcg3b0sCA==", 1255 + "cpu": [ 1256 + "arm64" 1257 + ], 1258 + "optional": true, 1259 + "os": [ 1260 + "freebsd" 1261 + ] 1262 + }, 1263 + "node_modules/@rollup/rollup-freebsd-x64": { 1264 + "version": "4.34.1", 1265 + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.1.tgz", 1266 + "integrity": "sha512-L3T66wAZiB/ooiPbxz0s6JEX6Sr2+HfgPSK+LMuZkaGZFAFCQAHiP3dbyqovYdNaiUXcl9TlgnIbcsIicAnOZg==", 1267 + "cpu": [ 1268 + "x64" 1269 + ], 1270 + "optional": true, 1271 + "os": [ 1272 + "freebsd" 1273 + ] 1274 + }, 1275 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1276 + "version": "4.34.1", 1277 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.1.tgz", 1278 + "integrity": "sha512-UBXdQ4+ATARuFgsFrQ+tAsKvBi/Hly99aSVdeCUiHV9dRTTpMU7OrM3WXGys1l40wKVNiOl0QYY6cZQJ2xhKlQ==", 1279 + "cpu": [ 1280 + "arm" 1281 + ], 1282 + "optional": true, 1283 + "os": [ 1284 + "linux" 1285 + ] 1286 + }, 1287 + "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1288 + "version": "4.34.1", 1289 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.1.tgz", 1290 + "integrity": "sha512-m/yfZ25HGdcCSwmopEJm00GP7xAUyVcBPjttGLRAqZ60X/bB4Qn6gP7XTwCIU6bITeKmIhhwZ4AMh2XLro+4+w==", 1291 + "cpu": [ 1292 + "arm" 1293 + ], 1294 + "optional": true, 1295 + "os": [ 1296 + "linux" 1297 + ] 1298 + }, 1299 + "node_modules/@rollup/rollup-linux-arm64-gnu": { 1300 + "version": "4.34.1", 1301 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.1.tgz", 1302 + "integrity": "sha512-Wy+cUmFuvziNL9qWRRzboNprqSQ/n38orbjRvd6byYWridp5TJ3CD+0+HUsbcWVSNz9bxkDUkyASGP0zS7GAvg==", 1303 + "cpu": [ 1304 + "arm64" 1305 + ], 1306 + "optional": true, 1307 + "os": [ 1308 + "linux" 1309 + ] 1310 + }, 1311 + "node_modules/@rollup/rollup-linux-arm64-musl": { 1312 + "version": "4.34.1", 1313 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.1.tgz", 1314 + "integrity": "sha512-CQ3MAGgiFmQW5XJX5W3wnxOBxKwFlUAgSXFA2SwgVRjrIiVt5LHfcQLeNSHKq5OEZwv+VCBwlD1+YKCjDG8cpg==", 1315 + "cpu": [ 1316 + "arm64" 1317 + ], 1318 + "optional": true, 1319 + "os": [ 1320 + "linux" 1321 + ] 1322 + }, 1323 + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 1324 + "version": "4.34.1", 1325 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.1.tgz", 1326 + "integrity": "sha512-rSzb1TsY4lSwH811cYC3OC2O2mzNMhM13vcnA7/0T6Mtreqr3/qs6WMDriMRs8yvHDI54qxHgOk8EV5YRAHFbw==", 1327 + "cpu": [ 1328 + "loong64" 1329 + ], 1330 + "optional": true, 1331 + "os": [ 1332 + "linux" 1333 + ] 1334 + }, 1335 + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 1336 + "version": "4.34.1", 1337 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.1.tgz", 1338 + "integrity": "sha512-fwr0n6NS0pG3QxxlqVYpfiY64Fd1Dqd8Cecje4ILAV01ROMp4aEdCj5ssHjRY3UwU7RJmeWd5fi89DBqMaTawg==", 1339 + "cpu": [ 1340 + "ppc64" 1341 + ], 1342 + "optional": true, 1343 + "os": [ 1344 + "linux" 1345 + ] 1346 + }, 1347 + "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1348 + "version": "4.34.1", 1349 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.1.tgz", 1350 + "integrity": "sha512-4uJb9qz7+Z/yUp5RPxDGGGUcoh0PnKF33QyWgEZ3X/GocpWb6Mb+skDh59FEt5d8+Skxqs9mng6Swa6B2AmQZg==", 1351 + "cpu": [ 1352 + "riscv64" 1353 + ], 1354 + "optional": true, 1355 + "os": [ 1356 + "linux" 1357 + ] 1358 + }, 1359 + "node_modules/@rollup/rollup-linux-s390x-gnu": { 1360 + "version": "4.34.1", 1361 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.1.tgz", 1362 + "integrity": "sha512-QlIo8ndocWBEnfmkYqj8vVtIUpIqJjfqKggjy7IdUncnt8BGixte1wDON7NJEvLg3Kzvqxtbo8tk+U1acYEBlw==", 1363 + "cpu": [ 1364 + "s390x" 1365 + ], 1366 + "optional": true, 1367 + "os": [ 1368 + "linux" 1369 + ] 1370 + }, 1371 + "node_modules/@rollup/rollup-linux-x64-gnu": { 1372 + "version": "4.34.1", 1373 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.1.tgz", 1374 + "integrity": "sha512-hzpleiKtq14GWjz3ahWvJXgU1DQC9DteiwcsY4HgqUJUGxZThlL66MotdUEK9zEo0PK/2ADeZGM9LIondE302A==", 1375 + "cpu": [ 1376 + "x64" 1377 + ], 1378 + "optional": true, 1379 + "os": [ 1380 + "linux" 1381 + ] 1382 + }, 1383 + "node_modules/@rollup/rollup-linux-x64-musl": { 1384 + "version": "4.34.1", 1385 + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.1.tgz", 1386 + "integrity": "sha512-jqtKrO715hDlvUcEsPn55tZt2TEiBvBtCMkUuU0R6fO/WPT7lO9AONjPbd8II7/asSiNVQHCMn4OLGigSuxVQA==", 1387 + "cpu": [ 1388 + "x64" 1389 + ], 1390 + "optional": true, 1391 + "os": [ 1392 + "linux" 1393 + ] 1394 + }, 1395 + "node_modules/@rollup/rollup-win32-arm64-msvc": { 1396 + "version": "4.34.1", 1397 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.1.tgz", 1398 + "integrity": "sha512-RnHy7yFf2Wz8Jj1+h8klB93N0NHNHXFhNwAmiy9zJdpY7DE01VbEVtPdrK1kkILeIbHGRJjvfBDBhnxBr8kD4g==", 1399 + "cpu": [ 1400 + "arm64" 1401 + ], 1402 + "optional": true, 1403 + "os": [ 1404 + "win32" 1405 + ] 1406 + }, 1407 + "node_modules/@rollup/rollup-win32-ia32-msvc": { 1408 + "version": "4.34.1", 1409 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.1.tgz", 1410 + "integrity": "sha512-i7aT5HdiZIcd7quhzvwQ2oAuX7zPYrYfkrd1QFfs28Po/i0q6kas/oRrzGlDhAEyug+1UfUtkWdmoVlLJj5x9Q==", 1411 + "cpu": [ 1412 + "ia32" 1413 + ], 1414 + "optional": true, 1415 + "os": [ 1416 + "win32" 1417 + ] 1418 + }, 1419 + "node_modules/@rollup/rollup-win32-x64-msvc": { 1420 + "version": "4.34.1", 1421 + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.1.tgz", 1422 + "integrity": "sha512-k3MVFD9Oq+laHkw2N2v7ILgoa9017ZMF/inTtHzyTVZjYs9cSH18sdyAf6spBAJIGwJ5UaC7et2ZH1WCdlhkMw==", 1423 + "cpu": [ 1424 + "x64" 1425 + ], 1426 + "optional": true, 1427 + "os": [ 1428 + "win32" 1429 + ] 1430 + }, 1431 + "node_modules/@sveltejs/adapter-auto": { 1432 + "version": "4.0.0", 1433 + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-4.0.0.tgz", 1434 + "integrity": "sha512-kmuYSQdD2AwThymQF0haQhM8rE5rhutQXG4LNbnbShwhMO4qQGnKaaTy+88DuNSuoQDi58+thpq8XpHc1+oEKQ==", 1435 + "dev": true, 1436 + "dependencies": { 1437 + "import-meta-resolve": "^4.1.0" 1438 + }, 1439 + "peerDependencies": { 1440 + "@sveltejs/kit": "^2.0.0" 1441 + } 1442 + }, 1443 + "node_modules/@sveltejs/adapter-static": { 1444 + "version": "3.0.8", 1445 + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz", 1446 + "integrity": "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==", 1447 + "peerDependencies": { 1448 + "@sveltejs/kit": "^2.0.0" 1449 + } 1450 + }, 1451 + "node_modules/@sveltejs/kit": { 1452 + "version": "2.17.1", 1453 + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.17.1.tgz", 1454 + "integrity": "sha512-CpoGSLqE2MCmcQwA2CWJvOsZ9vW+p/1H3itrFykdgajUNAEyQPbsaSn7fZb6PLHQwe+07njxje9ss0fjZoCAyw==", 1455 + "dependencies": { 1456 + "@types/cookie": "^0.6.0", 1457 + "cookie": "^0.6.0", 1458 + "devalue": "^5.1.0", 1459 + "esm-env": "^1.2.2", 1460 + "import-meta-resolve": "^4.1.0", 1461 + "kleur": "^4.1.5", 1462 + "magic-string": "^0.30.5", 1463 + "mrmime": "^2.0.0", 1464 + "sade": "^1.8.1", 1465 + "set-cookie-parser": "^2.6.0", 1466 + "sirv": "^3.0.0" 1467 + }, 1468 + "bin": { 1469 + "svelte-kit": "svelte-kit.js" 1470 + }, 1471 + "engines": { 1472 + "node": ">=18.13" 1473 + }, 1474 + "peerDependencies": { 1475 + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0", 1476 + "svelte": "^4.0.0 || ^5.0.0-next.0", 1477 + "vite": "^5.0.3 || ^6.0.0" 1478 + } 1479 + }, 1480 + "node_modules/@sveltejs/vite-plugin-svelte": { 1481 + "version": "5.0.3", 1482 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.0.3.tgz", 1483 + "integrity": "sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==", 1484 + "dependencies": { 1485 + "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", 1486 + "debug": "^4.4.0", 1487 + "deepmerge": "^4.3.1", 1488 + "kleur": "^4.1.5", 1489 + "magic-string": "^0.30.15", 1490 + "vitefu": "^1.0.4" 1491 + }, 1492 + "engines": { 1493 + "node": "^18.0.0 || ^20.0.0 || >=22" 1494 + }, 1495 + "peerDependencies": { 1496 + "svelte": "^5.0.0", 1497 + "vite": "^6.0.0" 1498 + } 1499 + }, 1500 + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 1501 + "version": "4.0.1", 1502 + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", 1503 + "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", 1504 + "dependencies": { 1505 + "debug": "^4.3.7" 1506 + }, 1507 + "engines": { 1508 + "node": "^18.0.0 || ^20.0.0 || >=22" 1509 + }, 1510 + "peerDependencies": { 1511 + "@sveltejs/vite-plugin-svelte": "^5.0.0", 1512 + "svelte": "^5.0.0", 1513 + "vite": "^6.0.0" 1514 + } 1515 + }, 1516 + "node_modules/@tailwindcss/forms": { 1517 + "version": "0.5.10", 1518 + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", 1519 + "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", 1520 + "dev": true, 1521 + "dependencies": { 1522 + "mini-svg-data-uri": "^1.2.3" 1523 + }, 1524 + "peerDependencies": { 1525 + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" 1526 + } 1527 + }, 1528 + "node_modules/@tailwindcss/typography": { 1529 + "version": "0.5.16", 1530 + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", 1531 + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", 1532 + "dev": true, 1533 + "dependencies": { 1534 + "lodash.castarray": "^4.4.0", 1535 + "lodash.isplainobject": "^4.0.6", 1536 + "lodash.merge": "^4.6.2", 1537 + "postcss-selector-parser": "6.0.10" 1538 + }, 1539 + "peerDependencies": { 1540 + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" 1541 + } 1542 + }, 1543 + "node_modules/@threejs-kit/instanced-sprite-mesh": { 1544 + "version": "2.5.0", 1545 + "resolved": "https://registry.npmjs.org/@threejs-kit/instanced-sprite-mesh/-/instanced-sprite-mesh-2.5.0.tgz", 1546 + "integrity": "sha512-W4cRK7f1o15GtacvLi8h1022ySiMM5218eZJQYWHbVGKqpRezmj8hscdzgp4JFSCkRoAIdyIdLZg5U0Mtmcu/w==", 1547 + "dependencies": { 1548 + "diet-sprite": "^0.0.1", 1549 + "earcut": "^2.2.4", 1550 + "maath": "^0.10.7", 1551 + "three-instanced-uniforms-mesh": "^0.52.0", 1552 + "troika-three-utils": "^0.52.0" 1553 + }, 1554 + "peerDependencies": { 1555 + "three": ">=0.170.0" 1556 + } 1557 + }, 1558 + "node_modules/@threlte/core": { 1559 + "version": "8.0.1", 1560 + "resolved": "https://registry.npmjs.org/@threlte/core/-/core-8.0.1.tgz", 1561 + "integrity": "sha512-vy1xRQppJFNmfPTeiRQue+KmYFsbPgVhwuYXRTvVrwPeD2oYz43gxUeOpe1FACeGKxrxZykeKJF5ebVvl7gBxw==", 1562 + "dependencies": { 1563 + "mitt": "^3.0.1" 1564 + }, 1565 + "peerDependencies": { 1566 + "svelte": ">=5", 1567 + "three": ">=0.155" 1568 + } 1569 + }, 1570 + "node_modules/@threlte/extras": { 1571 + "version": "9.0.1", 1572 + "resolved": "https://registry.npmjs.org/@threlte/extras/-/extras-9.0.1.tgz", 1573 + "integrity": "sha512-xI0s5a/9NdBbUSaYCnTHfnVl44kZQUTuTPfzwv4gmMM2r2HewM5QsMDBBwBTcuVcYqkM9aUKl+5MWa20LnH/mg==", 1574 + "dependencies": { 1575 + "@threejs-kit/instanced-sprite-mesh": "^2.5.0", 1576 + "camera-controls": "^2.9.0", 1577 + "three-mesh-bvh": "^0.7.4", 1578 + "three-perf": "github:jerzakm/three-perf#three-kit-threlte-fork", 1579 + "three-viewport-gizmo": "^2.0.2", 1580 + "troika-three-text": "^0.50.3" 1581 + }, 1582 + "peerDependencies": { 1583 + "svelte": ">=5", 1584 + "three": ">=0.155" 1585 + } 1586 + }, 1587 + "node_modules/@threlte/studio": { 1588 + "version": "0.1.3", 1589 + "resolved": "https://registry.npmjs.org/@threlte/studio/-/studio-0.1.3.tgz", 1590 + "integrity": "sha512-YOL3lyLAw2uvxFYbjFOVt01VCQVNBYLsScyKJR7IhESf3npzJqK+N1yIoNUtA6+Jkzs9Wgt1WCi7N+U0ri4c/g==", 1591 + "dependencies": { 1592 + "@floating-ui/dom": "^1.6.4", 1593 + "@mdi/js": "^7.4.47", 1594 + "@tweakpane/plugin-camerakit": "^0.3.0", 1595 + "camera-controls": "^2.9.0", 1596 + "estree-walker": "^3.0.3", 1597 + "flexible-tree": "^0.1.6", 1598 + "index-to-position": "^1.0.0", 1599 + "json5": "^2.2.3", 1600 + "kleur": "^4.1.5", 1601 + "magic-string": "^0.30.10", 1602 + "svelte-tweakpane-ui": "^1.2.3", 1603 + "tweakpane": "4.0.3", 1604 + "vite-dev-rpc": "^0.1.4" 1605 + }, 1606 + "peerDependencies": { 1607 + "svelte": ">=5", 1608 + "three": ">=0.152", 1609 + "vite": ">=5" 1610 + } 1611 + }, 1612 + "node_modules/@tweakpane/core": { 1613 + "version": "2.0.5", 1614 + "resolved": "https://registry.npmjs.org/@tweakpane/core/-/core-2.0.5.tgz", 1615 + "integrity": "sha512-punBgD5rKCF5vcNo6BsSOXiDR/NSs9VM7SG65QSLJIxfRaGgj54ree9zQW6bO3pNFf3AogiGgaNODUVQRk9YqQ==" 1616 + }, 1617 + "node_modules/@tweakpane/plugin-camerakit": { 1618 + "version": "0.3.0", 1619 + "resolved": "https://registry.npmjs.org/@tweakpane/plugin-camerakit/-/plugin-camerakit-0.3.0.tgz", 1620 + "integrity": "sha512-6UwgwDKU+oaAgXJ2D/pOoIpEAZts0RyeLmVzBJGs+VVNqSfkiHzL0i5XD+XnmSL2PaLXBne0dlz0bYOrjmeELw==", 1621 + "peerDependencies": { 1622 + "tweakpane": "^4.0.0-beta.2" 1623 + } 1624 + }, 1625 + "node_modules/@tweenjs/tween.js": { 1626 + "version": "23.1.3", 1627 + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", 1628 + "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==" 1629 + }, 1630 + "node_modules/@types/cookie": { 1631 + "version": "0.6.0", 1632 + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", 1633 + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" 1634 + }, 1635 + "node_modules/@types/css-font-loading-module": { 1636 + "version": "0.0.12", 1637 + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", 1638 + "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==" 1639 + }, 1640 + "node_modules/@types/earcut": { 1641 + "version": "2.1.4", 1642 + "resolved": "https://registry.npmjs.org/@types/earcut/-/earcut-2.1.4.tgz", 1643 + "integrity": "sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==" 1644 + }, 1645 + "node_modules/@types/estree": { 1646 + "version": "1.0.6", 1647 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 1648 + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" 1649 + }, 1650 + "node_modules/@types/json-schema": { 1651 + "version": "7.0.15", 1652 + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 1653 + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 1654 + "dev": true 1655 + }, 1656 + "node_modules/@types/stats.js": { 1657 + "version": "0.17.3", 1658 + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", 1659 + "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==" 1660 + }, 1661 + "node_modules/@types/three": { 1662 + "version": "0.173.0", 1663 + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.173.0.tgz", 1664 + "integrity": "sha512-KtNjfI/CRB6JVKIVeZM1R3GYDX2wkoV2itNcQu2j4d7qkhjGOuB+s2oF6jl9mztycDLGMtrAnJQYxInC8Bb20A==", 1665 + "dependencies": { 1666 + "@tweenjs/tween.js": "~23.1.3", 1667 + "@types/stats.js": "*", 1668 + "@types/webxr": "*", 1669 + "@webgpu/types": "*", 1670 + "fflate": "~0.8.2", 1671 + "meshoptimizer": "~0.18.1" 1672 + } 1673 + }, 1674 + "node_modules/@types/webxr": { 1675 + "version": "0.5.21", 1676 + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.21.tgz", 1677 + "integrity": "sha512-geZIAtLzjGmgY2JUi6VxXdCrTb99A7yP49lxLr2Nm/uIK0PkkxcEi4OGhoGDO4pxCf3JwGz2GiJL2Ej4K2bKaA==" 1678 + }, 1679 + "node_modules/@typescript-eslint/eslint-plugin": { 1680 + "version": "8.22.0", 1681 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.22.0.tgz", 1682 + "integrity": "sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw==", 1683 + "dev": true, 1684 + "dependencies": { 1685 + "@eslint-community/regexpp": "^4.10.0", 1686 + "@typescript-eslint/scope-manager": "8.22.0", 1687 + "@typescript-eslint/type-utils": "8.22.0", 1688 + "@typescript-eslint/utils": "8.22.0", 1689 + "@typescript-eslint/visitor-keys": "8.22.0", 1690 + "graphemer": "^1.4.0", 1691 + "ignore": "^5.3.1", 1692 + "natural-compare": "^1.4.0", 1693 + "ts-api-utils": "^2.0.0" 1694 + }, 1695 + "engines": { 1696 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1697 + }, 1698 + "funding": { 1699 + "type": "opencollective", 1700 + "url": "https://opencollective.com/typescript-eslint" 1701 + }, 1702 + "peerDependencies": { 1703 + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", 1704 + "eslint": "^8.57.0 || ^9.0.0", 1705 + "typescript": ">=4.8.4 <5.8.0" 1706 + } 1707 + }, 1708 + "node_modules/@typescript-eslint/parser": { 1709 + "version": "8.22.0", 1710 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.22.0.tgz", 1711 + "integrity": "sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==", 1712 + "dev": true, 1713 + "dependencies": { 1714 + "@typescript-eslint/scope-manager": "8.22.0", 1715 + "@typescript-eslint/types": "8.22.0", 1716 + "@typescript-eslint/typescript-estree": "8.22.0", 1717 + "@typescript-eslint/visitor-keys": "8.22.0", 1718 + "debug": "^4.3.4" 1719 + }, 1720 + "engines": { 1721 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1722 + }, 1723 + "funding": { 1724 + "type": "opencollective", 1725 + "url": "https://opencollective.com/typescript-eslint" 1726 + }, 1727 + "peerDependencies": { 1728 + "eslint": "^8.57.0 || ^9.0.0", 1729 + "typescript": ">=4.8.4 <5.8.0" 1730 + } 1731 + }, 1732 + "node_modules/@typescript-eslint/scope-manager": { 1733 + "version": "8.22.0", 1734 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.22.0.tgz", 1735 + "integrity": "sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==", 1736 + "dev": true, 1737 + "dependencies": { 1738 + "@typescript-eslint/types": "8.22.0", 1739 + "@typescript-eslint/visitor-keys": "8.22.0" 1740 + }, 1741 + "engines": { 1742 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1743 + }, 1744 + "funding": { 1745 + "type": "opencollective", 1746 + "url": "https://opencollective.com/typescript-eslint" 1747 + } 1748 + }, 1749 + "node_modules/@typescript-eslint/type-utils": { 1750 + "version": "8.22.0", 1751 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.22.0.tgz", 1752 + "integrity": "sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA==", 1753 + "dev": true, 1754 + "dependencies": { 1755 + "@typescript-eslint/typescript-estree": "8.22.0", 1756 + "@typescript-eslint/utils": "8.22.0", 1757 + "debug": "^4.3.4", 1758 + "ts-api-utils": "^2.0.0" 1759 + }, 1760 + "engines": { 1761 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1762 + }, 1763 + "funding": { 1764 + "type": "opencollective", 1765 + "url": "https://opencollective.com/typescript-eslint" 1766 + }, 1767 + "peerDependencies": { 1768 + "eslint": "^8.57.0 || ^9.0.0", 1769 + "typescript": ">=4.8.4 <5.8.0" 1770 + } 1771 + }, 1772 + "node_modules/@typescript-eslint/types": { 1773 + "version": "8.22.0", 1774 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.22.0.tgz", 1775 + "integrity": "sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==", 1776 + "dev": true, 1777 + "engines": { 1778 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1779 + }, 1780 + "funding": { 1781 + "type": "opencollective", 1782 + "url": "https://opencollective.com/typescript-eslint" 1783 + } 1784 + }, 1785 + "node_modules/@typescript-eslint/typescript-estree": { 1786 + "version": "8.22.0", 1787 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.22.0.tgz", 1788 + "integrity": "sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==", 1789 + "dev": true, 1790 + "dependencies": { 1791 + "@typescript-eslint/types": "8.22.0", 1792 + "@typescript-eslint/visitor-keys": "8.22.0", 1793 + "debug": "^4.3.4", 1794 + "fast-glob": "^3.3.2", 1795 + "is-glob": "^4.0.3", 1796 + "minimatch": "^9.0.4", 1797 + "semver": "^7.6.0", 1798 + "ts-api-utils": "^2.0.0" 1799 + }, 1800 + "engines": { 1801 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1802 + }, 1803 + "funding": { 1804 + "type": "opencollective", 1805 + "url": "https://opencollective.com/typescript-eslint" 1806 + }, 1807 + "peerDependencies": { 1808 + "typescript": ">=4.8.4 <5.8.0" 1809 + } 1810 + }, 1811 + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { 1812 + "version": "2.0.1", 1813 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1814 + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1815 + "dev": true, 1816 + "dependencies": { 1817 + "balanced-match": "^1.0.0" 1818 + } 1819 + }, 1820 + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 1821 + "version": "9.0.5", 1822 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1823 + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1824 + "dev": true, 1825 + "dependencies": { 1826 + "brace-expansion": "^2.0.1" 1827 + }, 1828 + "engines": { 1829 + "node": ">=16 || 14 >=14.17" 1830 + }, 1831 + "funding": { 1832 + "url": "https://github.com/sponsors/isaacs" 1833 + } 1834 + }, 1835 + "node_modules/@typescript-eslint/utils": { 1836 + "version": "8.22.0", 1837 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.22.0.tgz", 1838 + "integrity": "sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==", 1839 + "dev": true, 1840 + "dependencies": { 1841 + "@eslint-community/eslint-utils": "^4.4.0", 1842 + "@typescript-eslint/scope-manager": "8.22.0", 1843 + "@typescript-eslint/types": "8.22.0", 1844 + "@typescript-eslint/typescript-estree": "8.22.0" 1845 + }, 1846 + "engines": { 1847 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1848 + }, 1849 + "funding": { 1850 + "type": "opencollective", 1851 + "url": "https://opencollective.com/typescript-eslint" 1852 + }, 1853 + "peerDependencies": { 1854 + "eslint": "^8.57.0 || ^9.0.0", 1855 + "typescript": ">=4.8.4 <5.8.0" 1856 + } 1857 + }, 1858 + "node_modules/@typescript-eslint/visitor-keys": { 1859 + "version": "8.22.0", 1860 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz", 1861 + "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==", 1862 + "dev": true, 1863 + "dependencies": { 1864 + "@typescript-eslint/types": "8.22.0", 1865 + "eslint-visitor-keys": "^4.2.0" 1866 + }, 1867 + "engines": { 1868 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1869 + }, 1870 + "funding": { 1871 + "type": "opencollective", 1872 + "url": "https://opencollective.com/typescript-eslint" 1873 + } 1874 + }, 1875 + "node_modules/@webgpu/types": { 1876 + "version": "0.1.54", 1877 + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.54.tgz", 1878 + "integrity": "sha512-81oaalC8LFrXjhsczomEQ0u3jG+TqE6V9QHLA8GNZq/Rnot0KDugu3LhSYSlie8tSdooAN1Hov05asrUUp9qgg==" 1879 + }, 1880 + "node_modules/@xmldom/xmldom": { 1881 + "version": "0.8.10", 1882 + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", 1883 + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", 1884 + "engines": { 1885 + "node": ">=10.0.0" 1886 + } 1887 + }, 1888 + "node_modules/acorn": { 1889 + "version": "8.14.0", 1890 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 1891 + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 1892 + "bin": { 1893 + "acorn": "bin/acorn" 1894 + }, 1895 + "engines": { 1896 + "node": ">=0.4.0" 1897 + } 1898 + }, 1899 + "node_modules/acorn-jsx": { 1900 + "version": "5.3.2", 1901 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1902 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1903 + "dev": true, 1904 + "peerDependencies": { 1905 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 1906 + } 1907 + }, 1908 + "node_modules/acorn-typescript": { 1909 + "version": "1.4.13", 1910 + "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", 1911 + "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", 1912 + "peerDependencies": { 1913 + "acorn": ">=8.9.0" 1914 + } 1915 + }, 1916 + "node_modules/ajv": { 1917 + "version": "6.12.6", 1918 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1919 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1920 + "dev": true, 1921 + "dependencies": { 1922 + "fast-deep-equal": "^3.1.1", 1923 + "fast-json-stable-stringify": "^2.0.0", 1924 + "json-schema-traverse": "^0.4.1", 1925 + "uri-js": "^4.2.2" 1926 + }, 1927 + "funding": { 1928 + "type": "github", 1929 + "url": "https://github.com/sponsors/epoberezkin" 1930 + } 1931 + }, 1932 + "node_modules/ansi-regex": { 1933 + "version": "6.1.0", 1934 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 1935 + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 1936 + "dev": true, 1937 + "engines": { 1938 + "node": ">=12" 1939 + }, 1940 + "funding": { 1941 + "url": "https://github.com/chalk/ansi-regex?sponsor=1" 1942 + } 1943 + }, 1944 + "node_modules/ansi-styles": { 1945 + "version": "4.3.0", 1946 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1947 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1948 + "dev": true, 1949 + "dependencies": { 1950 + "color-convert": "^2.0.1" 1951 + }, 1952 + "engines": { 1953 + "node": ">=8" 1954 + }, 1955 + "funding": { 1956 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1957 + } 1958 + }, 1959 + "node_modules/any-promise": { 1960 + "version": "1.3.0", 1961 + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 1962 + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 1963 + "dev": true 1964 + }, 1965 + "node_modules/anymatch": { 1966 + "version": "3.1.3", 1967 + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1968 + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1969 + "dev": true, 1970 + "dependencies": { 1971 + "normalize-path": "^3.0.0", 1972 + "picomatch": "^2.0.4" 1973 + }, 1974 + "engines": { 1975 + "node": ">= 8" 1976 + } 1977 + }, 1978 + "node_modules/anymatch/node_modules/picomatch": { 1979 + "version": "2.3.1", 1980 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1981 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1982 + "dev": true, 1983 + "engines": { 1984 + "node": ">=8.6" 1985 + }, 1986 + "funding": { 1987 + "url": "https://github.com/sponsors/jonschlinkert" 1988 + } 1989 + }, 1990 + "node_modules/arg": { 1991 + "version": "5.0.2", 1992 + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 1993 + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 1994 + "dev": true 1995 + }, 1996 + "node_modules/argparse": { 1997 + "version": "2.0.1", 1998 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1999 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 2000 + "dev": true 2001 + }, 2002 + "node_modules/aria-query": { 2003 + "version": "5.3.2", 2004 + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", 2005 + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", 2006 + "engines": { 2007 + "node": ">= 0.4" 2008 + } 2009 + }, 2010 + "node_modules/autoprefixer": { 2011 + "version": "10.4.20", 2012 + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", 2013 + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", 2014 + "dev": true, 2015 + "funding": [ 2016 + { 2017 + "type": "opencollective", 2018 + "url": "https://opencollective.com/postcss/" 2019 + }, 2020 + { 2021 + "type": "tidelift", 2022 + "url": "https://tidelift.com/funding/github/npm/autoprefixer" 2023 + }, 2024 + { 2025 + "type": "github", 2026 + "url": "https://github.com/sponsors/ai" 2027 + } 2028 + ], 2029 + "dependencies": { 2030 + "browserslist": "^4.23.3", 2031 + "caniuse-lite": "^1.0.30001646", 2032 + "fraction.js": "^4.3.7", 2033 + "normalize-range": "^0.1.2", 2034 + "picocolors": "^1.0.1", 2035 + "postcss-value-parser": "^4.2.0" 2036 + }, 2037 + "bin": { 2038 + "autoprefixer": "bin/autoprefixer" 2039 + }, 2040 + "engines": { 2041 + "node": "^10 || ^12 || >=14" 2042 + }, 2043 + "peerDependencies": { 2044 + "postcss": "^8.1.0" 2045 + } 2046 + }, 2047 + "node_modules/axobject-query": { 2048 + "version": "4.1.0", 2049 + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 2050 + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 2051 + "engines": { 2052 + "node": ">= 0.4" 2053 + } 2054 + }, 2055 + "node_modules/balanced-match": { 2056 + "version": "1.0.2", 2057 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2058 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2059 + "dev": true 2060 + }, 2061 + "node_modules/bidi-js": { 2062 + "version": "1.0.3", 2063 + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", 2064 + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", 2065 + "dependencies": { 2066 + "require-from-string": "^2.0.2" 2067 + } 2068 + }, 2069 + "node_modules/binary-extensions": { 2070 + "version": "2.3.0", 2071 + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 2072 + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 2073 + "dev": true, 2074 + "engines": { 2075 + "node": ">=8" 2076 + }, 2077 + "funding": { 2078 + "url": "https://github.com/sponsors/sindresorhus" 2079 + } 2080 + }, 2081 + "node_modules/birpc": { 2082 + "version": "0.2.19", 2083 + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz", 2084 + "integrity": "sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==", 2085 + "funding": { 2086 + "url": "https://github.com/sponsors/antfu" 2087 + } 2088 + }, 2089 + "node_modules/brace-expansion": { 2090 + "version": "1.1.11", 2091 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2092 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2093 + "dev": true, 2094 + "dependencies": { 2095 + "balanced-match": "^1.0.0", 2096 + "concat-map": "0.0.1" 2097 + } 2098 + }, 2099 + "node_modules/braces": { 2100 + "version": "3.0.3", 2101 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 2102 + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 2103 + "devOptional": true, 2104 + "dependencies": { 2105 + "fill-range": "^7.1.1" 2106 + }, 2107 + "engines": { 2108 + "node": ">=8" 2109 + } 2110 + }, 2111 + "node_modules/browserslist": { 2112 + "version": "4.24.4", 2113 + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", 2114 + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", 2115 + "dev": true, 2116 + "funding": [ 2117 + { 2118 + "type": "opencollective", 2119 + "url": "https://opencollective.com/browserslist" 2120 + }, 2121 + { 2122 + "type": "tidelift", 2123 + "url": "https://tidelift.com/funding/github/npm/browserslist" 2124 + }, 2125 + { 2126 + "type": "github", 2127 + "url": "https://github.com/sponsors/ai" 2128 + } 2129 + ], 2130 + "dependencies": { 2131 + "caniuse-lite": "^1.0.30001688", 2132 + "electron-to-chromium": "^1.5.73", 2133 + "node-releases": "^2.0.19", 2134 + "update-browserslist-db": "^1.1.1" 2135 + }, 2136 + "bin": { 2137 + "browserslist": "cli.js" 2138 + }, 2139 + "engines": { 2140 + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 2141 + } 2142 + }, 2143 + "node_modules/callsites": { 2144 + "version": "3.1.0", 2145 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2146 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2147 + "dev": true, 2148 + "engines": { 2149 + "node": ">=6" 2150 + } 2151 + }, 2152 + "node_modules/camelcase-css": { 2153 + "version": "2.0.1", 2154 + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 2155 + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 2156 + "dev": true, 2157 + "engines": { 2158 + "node": ">= 6" 2159 + } 2160 + }, 2161 + "node_modules/camera-controls": { 2162 + "version": "2.9.0", 2163 + "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-2.9.0.tgz", 2164 + "integrity": "sha512-TpCujnP0vqPppTXXJRYpvIy0xq9Tro6jQf2iYUxlDpPCNxkvE/XGaTuwIxnhINOkVP/ob2CRYXtY3iVYXeMEzA==", 2165 + "peerDependencies": { 2166 + "three": ">=0.126.1" 2167 + } 2168 + }, 2169 + "node_modules/caniuse-lite": { 2170 + "version": "1.0.30001696", 2171 + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", 2172 + "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", 2173 + "dev": true, 2174 + "funding": [ 2175 + { 2176 + "type": "opencollective", 2177 + "url": "https://opencollective.com/browserslist" 2178 + }, 2179 + { 2180 + "type": "tidelift", 2181 + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 2182 + }, 2183 + { 2184 + "type": "github", 2185 + "url": "https://github.com/sponsors/ai" 2186 + } 2187 + ] 2188 + }, 2189 + "node_modules/chalk": { 2190 + "version": "4.1.2", 2191 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2192 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2193 + "dev": true, 2194 + "dependencies": { 2195 + "ansi-styles": "^4.1.0", 2196 + "supports-color": "^7.1.0" 2197 + }, 2198 + "engines": { 2199 + "node": ">=10" 2200 + }, 2201 + "funding": { 2202 + "url": "https://github.com/chalk/chalk?sponsor=1" 2203 + } 2204 + }, 2205 + "node_modules/chokidar": { 2206 + "version": "4.0.3", 2207 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 2208 + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 2209 + "dependencies": { 2210 + "readdirp": "^4.0.1" 2211 + }, 2212 + "engines": { 2213 + "node": ">= 14.16.0" 2214 + }, 2215 + "funding": { 2216 + "url": "https://paulmillr.com/funding/" 2217 + } 2218 + }, 2219 + "node_modules/clsx": { 2220 + "version": "2.1.1", 2221 + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", 2222 + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", 2223 + "engines": { 2224 + "node": ">=6" 2225 + } 2226 + }, 2227 + "node_modules/color-convert": { 2228 + "version": "2.0.1", 2229 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2230 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2231 + "dev": true, 2232 + "dependencies": { 2233 + "color-name": "~1.1.4" 2234 + }, 2235 + "engines": { 2236 + "node": ">=7.0.0" 2237 + } 2238 + }, 2239 + "node_modules/color-name": { 2240 + "version": "1.1.4", 2241 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2242 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2243 + "dev": true 2244 + }, 2245 + "node_modules/commander": { 2246 + "version": "4.1.1", 2247 + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 2248 + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 2249 + "dev": true, 2250 + "engines": { 2251 + "node": ">= 6" 2252 + } 2253 + }, 2254 + "node_modules/concat-map": { 2255 + "version": "0.0.1", 2256 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2257 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 2258 + "dev": true 2259 + }, 2260 + "node_modules/cookie": { 2261 + "version": "0.6.0", 2262 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", 2263 + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", 2264 + "engines": { 2265 + "node": ">= 0.6" 2266 + } 2267 + }, 2268 + "node_modules/cross-spawn": { 2269 + "version": "7.0.6", 2270 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 2271 + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 2272 + "dev": true, 2273 + "dependencies": { 2274 + "path-key": "^3.1.0", 2275 + "shebang-command": "^2.0.0", 2276 + "which": "^2.0.1" 2277 + }, 2278 + "engines": { 2279 + "node": ">= 8" 2280 + } 2281 + }, 2282 + "node_modules/cssesc": { 2283 + "version": "3.0.0", 2284 + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 2285 + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 2286 + "dev": true, 2287 + "bin": { 2288 + "cssesc": "bin/cssesc" 2289 + }, 2290 + "engines": { 2291 + "node": ">=4" 2292 + } 2293 + }, 2294 + "node_modules/debug": { 2295 + "version": "4.4.0", 2296 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 2297 + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 2298 + "dependencies": { 2299 + "ms": "^2.1.3" 2300 + }, 2301 + "engines": { 2302 + "node": ">=6.0" 2303 + }, 2304 + "peerDependenciesMeta": { 2305 + "supports-color": { 2306 + "optional": true 2307 + } 2308 + } 2309 + }, 2310 + "node_modules/deep-is": { 2311 + "version": "0.1.4", 2312 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 2313 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 2314 + "dev": true 2315 + }, 2316 + "node_modules/deepmerge": { 2317 + "version": "4.3.1", 2318 + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 2319 + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 2320 + "engines": { 2321 + "node": ">=0.10.0" 2322 + } 2323 + }, 2324 + "node_modules/detect-libc": { 2325 + "version": "1.0.3", 2326 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 2327 + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", 2328 + "optional": true, 2329 + "bin": { 2330 + "detect-libc": "bin/detect-libc.js" 2331 + }, 2332 + "engines": { 2333 + "node": ">=0.10" 2334 + } 2335 + }, 2336 + "node_modules/devalue": { 2337 + "version": "5.1.1", 2338 + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", 2339 + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==" 2340 + }, 2341 + "node_modules/didyoumean": { 2342 + "version": "1.2.2", 2343 + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 2344 + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 2345 + "dev": true 2346 + }, 2347 + "node_modules/diet-sprite": { 2348 + "version": "0.0.1", 2349 + "resolved": "https://registry.npmjs.org/diet-sprite/-/diet-sprite-0.0.1.tgz", 2350 + "integrity": "sha512-zSHI2WDAn1wJqJYxcmjWfJv3Iw8oL9reQIbEyx2x2/EZ4/qmUTIo8/5qOCurnAcq61EwtJJaZ0XTy2NRYqpB5A==" 2351 + }, 2352 + "node_modules/dlv": { 2353 + "version": "1.1.3", 2354 + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 2355 + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 2356 + "dev": true 2357 + }, 2358 + "node_modules/earcut": { 2359 + "version": "2.2.4", 2360 + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", 2361 + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" 2362 + }, 2363 + "node_modules/eastasianwidth": { 2364 + "version": "0.2.0", 2365 + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 2366 + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 2367 + "dev": true 2368 + }, 2369 + "node_modules/electron-to-chromium": { 2370 + "version": "1.5.90", 2371 + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.90.tgz", 2372 + "integrity": "sha512-C3PN4aydfW91Natdyd449Kw+BzhLmof6tzy5W1pFC5SpQxVXT+oyiyOG9AgYYSN9OdA/ik3YkCrpwqI8ug5Tug==", 2373 + "dev": true 2374 + }, 2375 + "node_modules/emoji-regex": { 2376 + "version": "9.2.2", 2377 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 2378 + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 2379 + "dev": true 2380 + }, 2381 + "node_modules/esbuild": { 2382 + "version": "0.24.2", 2383 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", 2384 + "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", 2385 + "hasInstallScript": true, 2386 + "bin": { 2387 + "esbuild": "bin/esbuild" 2388 + }, 2389 + "engines": { 2390 + "node": ">=18" 2391 + }, 2392 + "optionalDependencies": { 2393 + "@esbuild/aix-ppc64": "0.24.2", 2394 + "@esbuild/android-arm": "0.24.2", 2395 + "@esbuild/android-arm64": "0.24.2", 2396 + "@esbuild/android-x64": "0.24.2", 2397 + "@esbuild/darwin-arm64": "0.24.2", 2398 + "@esbuild/darwin-x64": "0.24.2", 2399 + "@esbuild/freebsd-arm64": "0.24.2", 2400 + "@esbuild/freebsd-x64": "0.24.2", 2401 + "@esbuild/linux-arm": "0.24.2", 2402 + "@esbuild/linux-arm64": "0.24.2", 2403 + "@esbuild/linux-ia32": "0.24.2", 2404 + "@esbuild/linux-loong64": "0.24.2", 2405 + "@esbuild/linux-mips64el": "0.24.2", 2406 + "@esbuild/linux-ppc64": "0.24.2", 2407 + "@esbuild/linux-riscv64": "0.24.2", 2408 + "@esbuild/linux-s390x": "0.24.2", 2409 + "@esbuild/linux-x64": "0.24.2", 2410 + "@esbuild/netbsd-arm64": "0.24.2", 2411 + "@esbuild/netbsd-x64": "0.24.2", 2412 + "@esbuild/openbsd-arm64": "0.24.2", 2413 + "@esbuild/openbsd-x64": "0.24.2", 2414 + "@esbuild/sunos-x64": "0.24.2", 2415 + "@esbuild/win32-arm64": "0.24.2", 2416 + "@esbuild/win32-ia32": "0.24.2", 2417 + "@esbuild/win32-x64": "0.24.2" 2418 + } 2419 + }, 2420 + "node_modules/escalade": { 2421 + "version": "3.2.0", 2422 + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 2423 + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 2424 + "dev": true, 2425 + "engines": { 2426 + "node": ">=6" 2427 + } 2428 + }, 2429 + "node_modules/escape-string-regexp": { 2430 + "version": "4.0.0", 2431 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2432 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2433 + "dev": true, 2434 + "engines": { 2435 + "node": ">=10" 2436 + }, 2437 + "funding": { 2438 + "url": "https://github.com/sponsors/sindresorhus" 2439 + } 2440 + }, 2441 + "node_modules/eslint": { 2442 + "version": "9.19.0", 2443 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", 2444 + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", 2445 + "dev": true, 2446 + "dependencies": { 2447 + "@eslint-community/eslint-utils": "^4.2.0", 2448 + "@eslint-community/regexpp": "^4.12.1", 2449 + "@eslint/config-array": "^0.19.0", 2450 + "@eslint/core": "^0.10.0", 2451 + "@eslint/eslintrc": "^3.2.0", 2452 + "@eslint/js": "9.19.0", 2453 + "@eslint/plugin-kit": "^0.2.5", 2454 + "@humanfs/node": "^0.16.6", 2455 + "@humanwhocodes/module-importer": "^1.0.1", 2456 + "@humanwhocodes/retry": "^0.4.1", 2457 + "@types/estree": "^1.0.6", 2458 + "@types/json-schema": "^7.0.15", 2459 + "ajv": "^6.12.4", 2460 + "chalk": "^4.0.0", 2461 + "cross-spawn": "^7.0.6", 2462 + "debug": "^4.3.2", 2463 + "escape-string-regexp": "^4.0.0", 2464 + "eslint-scope": "^8.2.0", 2465 + "eslint-visitor-keys": "^4.2.0", 2466 + "espree": "^10.3.0", 2467 + "esquery": "^1.5.0", 2468 + "esutils": "^2.0.2", 2469 + "fast-deep-equal": "^3.1.3", 2470 + "file-entry-cache": "^8.0.0", 2471 + "find-up": "^5.0.0", 2472 + "glob-parent": "^6.0.2", 2473 + "ignore": "^5.2.0", 2474 + "imurmurhash": "^0.1.4", 2475 + "is-glob": "^4.0.0", 2476 + "json-stable-stringify-without-jsonify": "^1.0.1", 2477 + "lodash.merge": "^4.6.2", 2478 + "minimatch": "^3.1.2", 2479 + "natural-compare": "^1.4.0", 2480 + "optionator": "^0.9.3" 2481 + }, 2482 + "bin": { 2483 + "eslint": "bin/eslint.js" 2484 + }, 2485 + "engines": { 2486 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2487 + }, 2488 + "funding": { 2489 + "url": "https://eslint.org/donate" 2490 + }, 2491 + "peerDependencies": { 2492 + "jiti": "*" 2493 + }, 2494 + "peerDependenciesMeta": { 2495 + "jiti": { 2496 + "optional": true 2497 + } 2498 + } 2499 + }, 2500 + "node_modules/eslint-compat-utils": { 2501 + "version": "0.5.1", 2502 + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", 2503 + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", 2504 + "dev": true, 2505 + "dependencies": { 2506 + "semver": "^7.5.4" 2507 + }, 2508 + "engines": { 2509 + "node": ">=12" 2510 + }, 2511 + "peerDependencies": { 2512 + "eslint": ">=6.0.0" 2513 + } 2514 + }, 2515 + "node_modules/eslint-config-prettier": { 2516 + "version": "10.0.1", 2517 + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", 2518 + "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", 2519 + "dev": true, 2520 + "bin": { 2521 + "eslint-config-prettier": "build/bin/cli.js" 2522 + }, 2523 + "peerDependencies": { 2524 + "eslint": ">=7.0.0" 2525 + } 2526 + }, 2527 + "node_modules/eslint-plugin-svelte": { 2528 + "version": "2.46.1", 2529 + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz", 2530 + "integrity": "sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==", 2531 + "dev": true, 2532 + "dependencies": { 2533 + "@eslint-community/eslint-utils": "^4.4.0", 2534 + "@jridgewell/sourcemap-codec": "^1.4.15", 2535 + "eslint-compat-utils": "^0.5.1", 2536 + "esutils": "^2.0.3", 2537 + "known-css-properties": "^0.35.0", 2538 + "postcss": "^8.4.38", 2539 + "postcss-load-config": "^3.1.4", 2540 + "postcss-safe-parser": "^6.0.0", 2541 + "postcss-selector-parser": "^6.1.0", 2542 + "semver": "^7.6.2", 2543 + "svelte-eslint-parser": "^0.43.0" 2544 + }, 2545 + "engines": { 2546 + "node": "^14.17.0 || >=16.0.0" 2547 + }, 2548 + "funding": { 2549 + "url": "https://github.com/sponsors/ota-meshi" 2550 + }, 2551 + "peerDependencies": { 2552 + "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", 2553 + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" 2554 + }, 2555 + "peerDependenciesMeta": { 2556 + "svelte": { 2557 + "optional": true 2558 + } 2559 + } 2560 + }, 2561 + "node_modules/eslint-plugin-svelte/node_modules/postcss-selector-parser": { 2562 + "version": "6.1.2", 2563 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", 2564 + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", 2565 + "dev": true, 2566 + "dependencies": { 2567 + "cssesc": "^3.0.0", 2568 + "util-deprecate": "^1.0.2" 2569 + }, 2570 + "engines": { 2571 + "node": ">=4" 2572 + } 2573 + }, 2574 + "node_modules/eslint-scope": { 2575 + "version": "8.2.0", 2576 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", 2577 + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", 2578 + "dev": true, 2579 + "dependencies": { 2580 + "esrecurse": "^4.3.0", 2581 + "estraverse": "^5.2.0" 2582 + }, 2583 + "engines": { 2584 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2585 + }, 2586 + "funding": { 2587 + "url": "https://opencollective.com/eslint" 2588 + } 2589 + }, 2590 + "node_modules/eslint-visitor-keys": { 2591 + "version": "4.2.0", 2592 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", 2593 + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", 2594 + "dev": true, 2595 + "engines": { 2596 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2597 + }, 2598 + "funding": { 2599 + "url": "https://opencollective.com/eslint" 2600 + } 2601 + }, 2602 + "node_modules/esm-env": { 2603 + "version": "1.2.2", 2604 + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", 2605 + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" 2606 + }, 2607 + "node_modules/espree": { 2608 + "version": "10.3.0", 2609 + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", 2610 + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", 2611 + "dev": true, 2612 + "dependencies": { 2613 + "acorn": "^8.14.0", 2614 + "acorn-jsx": "^5.3.2", 2615 + "eslint-visitor-keys": "^4.2.0" 2616 + }, 2617 + "engines": { 2618 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 2619 + }, 2620 + "funding": { 2621 + "url": "https://opencollective.com/eslint" 2622 + } 2623 + }, 2624 + "node_modules/esquery": { 2625 + "version": "1.6.0", 2626 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 2627 + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 2628 + "dev": true, 2629 + "dependencies": { 2630 + "estraverse": "^5.1.0" 2631 + }, 2632 + "engines": { 2633 + "node": ">=0.10" 2634 + } 2635 + }, 2636 + "node_modules/esrap": { 2637 + "version": "1.4.3", 2638 + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.3.tgz", 2639 + "integrity": "sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw==", 2640 + "dependencies": { 2641 + "@jridgewell/sourcemap-codec": "^1.4.15" 2642 + } 2643 + }, 2644 + "node_modules/esrecurse": { 2645 + "version": "4.3.0", 2646 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2647 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2648 + "dev": true, 2649 + "dependencies": { 2650 + "estraverse": "^5.2.0" 2651 + }, 2652 + "engines": { 2653 + "node": ">=4.0" 2654 + } 2655 + }, 2656 + "node_modules/estraverse": { 2657 + "version": "5.3.0", 2658 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2659 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2660 + "dev": true, 2661 + "engines": { 2662 + "node": ">=4.0" 2663 + } 2664 + }, 2665 + "node_modules/estree-walker": { 2666 + "version": "3.0.3", 2667 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 2668 + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 2669 + "dependencies": { 2670 + "@types/estree": "^1.0.0" 2671 + } 2672 + }, 2673 + "node_modules/esutils": { 2674 + "version": "2.0.3", 2675 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2676 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2677 + "dev": true, 2678 + "engines": { 2679 + "node": ">=0.10.0" 2680 + } 2681 + }, 2682 + "node_modules/eventemitter3": { 2683 + "version": "5.0.1", 2684 + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 2685 + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" 2686 + }, 2687 + "node_modules/fast-copy": { 2688 + "version": "3.0.2", 2689 + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", 2690 + "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==" 2691 + }, 2692 + "node_modules/fast-deep-equal": { 2693 + "version": "3.1.3", 2694 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2695 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2696 + "dev": true 2697 + }, 2698 + "node_modules/fast-equals": { 2699 + "version": "5.2.2", 2700 + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", 2701 + "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", 2702 + "engines": { 2703 + "node": ">=6.0.0" 2704 + } 2705 + }, 2706 + "node_modules/fast-glob": { 2707 + "version": "3.3.3", 2708 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 2709 + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 2710 + "dev": true, 2711 + "dependencies": { 2712 + "@nodelib/fs.stat": "^2.0.2", 2713 + "@nodelib/fs.walk": "^1.2.3", 2714 + "glob-parent": "^5.1.2", 2715 + "merge2": "^1.3.0", 2716 + "micromatch": "^4.0.8" 2717 + }, 2718 + "engines": { 2719 + "node": ">=8.6.0" 2720 + } 2721 + }, 2722 + "node_modules/fast-glob/node_modules/glob-parent": { 2723 + "version": "5.1.2", 2724 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2725 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2726 + "dev": true, 2727 + "dependencies": { 2728 + "is-glob": "^4.0.1" 2729 + }, 2730 + "engines": { 2731 + "node": ">= 6" 2732 + } 2733 + }, 2734 + "node_modules/fast-json-stable-stringify": { 2735 + "version": "2.1.0", 2736 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2737 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2738 + "dev": true 2739 + }, 2740 + "node_modules/fast-levenshtein": { 2741 + "version": "2.0.6", 2742 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2743 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 2744 + "dev": true 2745 + }, 2746 + "node_modules/fastq": { 2747 + "version": "1.19.0", 2748 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", 2749 + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", 2750 + "dev": true, 2751 + "dependencies": { 2752 + "reusify": "^1.0.4" 2753 + } 2754 + }, 2755 + "node_modules/fdir": { 2756 + "version": "6.4.3", 2757 + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", 2758 + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", 2759 + "dev": true, 2760 + "peerDependencies": { 2761 + "picomatch": "^3 || ^4" 2762 + }, 2763 + "peerDependenciesMeta": { 2764 + "picomatch": { 2765 + "optional": true 2766 + } 2767 + } 2768 + }, 2769 + "node_modules/fflate": { 2770 + "version": "0.8.2", 2771 + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", 2772 + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==" 2773 + }, 2774 + "node_modules/file-entry-cache": { 2775 + "version": "8.0.0", 2776 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 2777 + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 2778 + "dev": true, 2779 + "dependencies": { 2780 + "flat-cache": "^4.0.0" 2781 + }, 2782 + "engines": { 2783 + "node": ">=16.0.0" 2784 + } 2785 + }, 2786 + "node_modules/fill-range": { 2787 + "version": "7.1.1", 2788 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 2789 + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 2790 + "devOptional": true, 2791 + "dependencies": { 2792 + "to-regex-range": "^5.0.1" 2793 + }, 2794 + "engines": { 2795 + "node": ">=8" 2796 + } 2797 + }, 2798 + "node_modules/find-up": { 2799 + "version": "5.0.0", 2800 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2801 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2802 + "dev": true, 2803 + "dependencies": { 2804 + "locate-path": "^6.0.0", 2805 + "path-exists": "^4.0.0" 2806 + }, 2807 + "engines": { 2808 + "node": ">=10" 2809 + }, 2810 + "funding": { 2811 + "url": "https://github.com/sponsors/sindresorhus" 2812 + } 2813 + }, 2814 + "node_modules/flat-cache": { 2815 + "version": "4.0.1", 2816 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 2817 + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 2818 + "dev": true, 2819 + "dependencies": { 2820 + "flatted": "^3.2.9", 2821 + "keyv": "^4.5.4" 2822 + }, 2823 + "engines": { 2824 + "node": ">=16" 2825 + } 2826 + }, 2827 + "node_modules/flatted": { 2828 + "version": "3.3.2", 2829 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", 2830 + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", 2831 + "dev": true 2832 + }, 2833 + "node_modules/flexible-tree": { 2834 + "version": "0.1.6", 2835 + "resolved": "https://registry.npmjs.org/flexible-tree/-/flexible-tree-0.1.6.tgz", 2836 + "integrity": "sha512-dlYlpajmUhuoCTwOjqF4+2E9vUf9a9lwNdrXqfw7pPo7fULnQMZ6h/bmCk1bB7BwzPP4HtgAvy/ioyQmGhztEA==", 2837 + "dependencies": { 2838 + "sass": "^1.63.6" 2839 + } 2840 + }, 2841 + "node_modules/foreground-child": { 2842 + "version": "3.3.0", 2843 + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 2844 + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 2845 + "dev": true, 2846 + "dependencies": { 2847 + "cross-spawn": "^7.0.0", 2848 + "signal-exit": "^4.0.1" 2849 + }, 2850 + "engines": { 2851 + "node": ">=14" 2852 + }, 2853 + "funding": { 2854 + "url": "https://github.com/sponsors/isaacs" 2855 + } 2856 + }, 2857 + "node_modules/fraction.js": { 2858 + "version": "4.3.7", 2859 + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", 2860 + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", 2861 + "dev": true, 2862 + "engines": { 2863 + "node": "*" 2864 + }, 2865 + "funding": { 2866 + "type": "patreon", 2867 + "url": "https://github.com/sponsors/rawify" 2868 + } 2869 + }, 2870 + "node_modules/fsevents": { 2871 + "version": "2.3.3", 2872 + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 2873 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 2874 + "hasInstallScript": true, 2875 + "optional": true, 2876 + "os": [ 2877 + "darwin" 2878 + ], 2879 + "engines": { 2880 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2881 + } 2882 + }, 2883 + "node_modules/function-bind": { 2884 + "version": "1.1.2", 2885 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 2886 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2887 + "dev": true, 2888 + "funding": { 2889 + "url": "https://github.com/sponsors/ljharb" 2890 + } 2891 + }, 2892 + "node_modules/glob": { 2893 + "version": "10.4.5", 2894 + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 2895 + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 2896 + "dev": true, 2897 + "dependencies": { 2898 + "foreground-child": "^3.1.0", 2899 + "jackspeak": "^3.1.2", 2900 + "minimatch": "^9.0.4", 2901 + "minipass": "^7.1.2", 2902 + "package-json-from-dist": "^1.0.0", 2903 + "path-scurry": "^1.11.1" 2904 + }, 2905 + "bin": { 2906 + "glob": "dist/esm/bin.mjs" 2907 + }, 2908 + "funding": { 2909 + "url": "https://github.com/sponsors/isaacs" 2910 + } 2911 + }, 2912 + "node_modules/glob-parent": { 2913 + "version": "6.0.2", 2914 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2915 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2916 + "dev": true, 2917 + "dependencies": { 2918 + "is-glob": "^4.0.3" 2919 + }, 2920 + "engines": { 2921 + "node": ">=10.13.0" 2922 + } 2923 + }, 2924 + "node_modules/glob/node_modules/brace-expansion": { 2925 + "version": "2.0.1", 2926 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2927 + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2928 + "dev": true, 2929 + "dependencies": { 2930 + "balanced-match": "^1.0.0" 2931 + } 2932 + }, 2933 + "node_modules/glob/node_modules/minimatch": { 2934 + "version": "9.0.5", 2935 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 2936 + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 2937 + "dev": true, 2938 + "dependencies": { 2939 + "brace-expansion": "^2.0.1" 2940 + }, 2941 + "engines": { 2942 + "node": ">=16 || 14 >=14.17" 2943 + }, 2944 + "funding": { 2945 + "url": "https://github.com/sponsors/isaacs" 2946 + } 2947 + }, 2948 + "node_modules/globals": { 2949 + "version": "15.14.0", 2950 + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", 2951 + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", 2952 + "dev": true, 2953 + "engines": { 2954 + "node": ">=18" 2955 + }, 2956 + "funding": { 2957 + "url": "https://github.com/sponsors/sindresorhus" 2958 + } 2959 + }, 2960 + "node_modules/graphemer": { 2961 + "version": "1.4.0", 2962 + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 2963 + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 2964 + "dev": true 2965 + }, 2966 + "node_modules/has-flag": { 2967 + "version": "4.0.0", 2968 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2969 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2970 + "dev": true, 2971 + "engines": { 2972 + "node": ">=8" 2973 + } 2974 + }, 2975 + "node_modules/hasown": { 2976 + "version": "2.0.2", 2977 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 2978 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 2979 + "dev": true, 2980 + "dependencies": { 2981 + "function-bind": "^1.1.2" 2982 + }, 2983 + "engines": { 2984 + "node": ">= 0.4" 2985 + } 2986 + }, 2987 + "node_modules/ignore": { 2988 + "version": "5.3.2", 2989 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 2990 + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 2991 + "dev": true, 2992 + "engines": { 2993 + "node": ">= 4" 2994 + } 2995 + }, 2996 + "node_modules/immutable": { 2997 + "version": "5.0.3", 2998 + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", 2999 + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==" 3000 + }, 3001 + "node_modules/import-fresh": { 3002 + "version": "3.3.1", 3003 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 3004 + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 3005 + "dev": true, 3006 + "dependencies": { 3007 + "parent-module": "^1.0.0", 3008 + "resolve-from": "^4.0.0" 3009 + }, 3010 + "engines": { 3011 + "node": ">=6" 3012 + }, 3013 + "funding": { 3014 + "url": "https://github.com/sponsors/sindresorhus" 3015 + } 3016 + }, 3017 + "node_modules/import-meta-resolve": { 3018 + "version": "4.1.0", 3019 + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", 3020 + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", 3021 + "funding": { 3022 + "type": "github", 3023 + "url": "https://github.com/sponsors/wooorm" 3024 + } 3025 + }, 3026 + "node_modules/imurmurhash": { 3027 + "version": "0.1.4", 3028 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3029 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 3030 + "dev": true, 3031 + "engines": { 3032 + "node": ">=0.8.19" 3033 + } 3034 + }, 3035 + "node_modules/index-to-position": { 3036 + "version": "1.0.0", 3037 + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.0.0.tgz", 3038 + "integrity": "sha512-sCO7uaLVhRJ25vz1o8s9IFM3nVS4DkuQnyjMwiQPKvQuBYBDmb8H7zx8ki7nVh4HJQOdVWebyvLE0qt+clruxA==", 3039 + "engines": { 3040 + "node": ">=18" 3041 + }, 3042 + "funding": { 3043 + "url": "https://github.com/sponsors/sindresorhus" 3044 + } 3045 + }, 3046 + "node_modules/is-binary-path": { 3047 + "version": "2.1.0", 3048 + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 3049 + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 3050 + "dev": true, 3051 + "dependencies": { 3052 + "binary-extensions": "^2.0.0" 3053 + }, 3054 + "engines": { 3055 + "node": ">=8" 3056 + } 3057 + }, 3058 + "node_modules/is-core-module": { 3059 + "version": "2.16.1", 3060 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", 3061 + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", 3062 + "dev": true, 3063 + "dependencies": { 3064 + "hasown": "^2.0.2" 3065 + }, 3066 + "engines": { 3067 + "node": ">= 0.4" 3068 + }, 3069 + "funding": { 3070 + "url": "https://github.com/sponsors/ljharb" 3071 + } 3072 + }, 3073 + "node_modules/is-extglob": { 3074 + "version": "2.1.1", 3075 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3076 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 3077 + "devOptional": true, 3078 + "engines": { 3079 + "node": ">=0.10.0" 3080 + } 3081 + }, 3082 + "node_modules/is-fullwidth-code-point": { 3083 + "version": "3.0.0", 3084 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3085 + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3086 + "dev": true, 3087 + "engines": { 3088 + "node": ">=8" 3089 + } 3090 + }, 3091 + "node_modules/is-glob": { 3092 + "version": "4.0.3", 3093 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 3094 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 3095 + "devOptional": true, 3096 + "dependencies": { 3097 + "is-extglob": "^2.1.1" 3098 + }, 3099 + "engines": { 3100 + "node": ">=0.10.0" 3101 + } 3102 + }, 3103 + "node_modules/is-number": { 3104 + "version": "7.0.0", 3105 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3106 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3107 + "devOptional": true, 3108 + "engines": { 3109 + "node": ">=0.12.0" 3110 + } 3111 + }, 3112 + "node_modules/is-reference": { 3113 + "version": "3.0.3", 3114 + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", 3115 + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", 3116 + "dependencies": { 3117 + "@types/estree": "^1.0.6" 3118 + } 3119 + }, 3120 + "node_modules/isexe": { 3121 + "version": "2.0.0", 3122 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3123 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 3124 + "dev": true 3125 + }, 3126 + "node_modules/ismobilejs": { 3127 + "version": "1.1.1", 3128 + "resolved": "https://registry.npmjs.org/ismobilejs/-/ismobilejs-1.1.1.tgz", 3129 + "integrity": "sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==" 3130 + }, 3131 + "node_modules/jackspeak": { 3132 + "version": "3.4.3", 3133 + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 3134 + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 3135 + "dev": true, 3136 + "dependencies": { 3137 + "@isaacs/cliui": "^8.0.2" 3138 + }, 3139 + "funding": { 3140 + "url": "https://github.com/sponsors/isaacs" 3141 + }, 3142 + "optionalDependencies": { 3143 + "@pkgjs/parseargs": "^0.11.0" 3144 + } 3145 + }, 3146 + "node_modules/jiti": { 3147 + "version": "1.21.7", 3148 + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", 3149 + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", 3150 + "devOptional": true, 3151 + "bin": { 3152 + "jiti": "bin/jiti.js" 3153 + } 3154 + }, 3155 + "node_modules/js-yaml": { 3156 + "version": "4.1.0", 3157 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 3158 + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 3159 + "dev": true, 3160 + "dependencies": { 3161 + "argparse": "^2.0.1" 3162 + }, 3163 + "bin": { 3164 + "js-yaml": "bin/js-yaml.js" 3165 + } 3166 + }, 3167 + "node_modules/json-buffer": { 3168 + "version": "3.0.1", 3169 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 3170 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 3171 + "dev": true 3172 + }, 3173 + "node_modules/json-schema-traverse": { 3174 + "version": "0.4.1", 3175 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3176 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3177 + "dev": true 3178 + }, 3179 + "node_modules/json-stable-stringify-without-jsonify": { 3180 + "version": "1.0.1", 3181 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 3182 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 3183 + "dev": true 3184 + }, 3185 + "node_modules/json5": { 3186 + "version": "2.2.3", 3187 + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", 3188 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 3189 + "bin": { 3190 + "json5": "lib/cli.js" 3191 + }, 3192 + "engines": { 3193 + "node": ">=6" 3194 + } 3195 + }, 3196 + "node_modules/keyv": { 3197 + "version": "4.5.4", 3198 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 3199 + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 3200 + "dev": true, 3201 + "dependencies": { 3202 + "json-buffer": "3.0.1" 3203 + } 3204 + }, 3205 + "node_modules/kleur": { 3206 + "version": "4.1.5", 3207 + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 3208 + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 3209 + "engines": { 3210 + "node": ">=6" 3211 + } 3212 + }, 3213 + "node_modules/known-css-properties": { 3214 + "version": "0.35.0", 3215 + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", 3216 + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", 3217 + "dev": true 3218 + }, 3219 + "node_modules/levn": { 3220 + "version": "0.4.1", 3221 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 3222 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 3223 + "dev": true, 3224 + "dependencies": { 3225 + "prelude-ls": "^1.2.1", 3226 + "type-check": "~0.4.0" 3227 + }, 3228 + "engines": { 3229 + "node": ">= 0.8.0" 3230 + } 3231 + }, 3232 + "node_modules/lilconfig": { 3233 + "version": "2.1.0", 3234 + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", 3235 + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 3236 + "dev": true, 3237 + "engines": { 3238 + "node": ">=10" 3239 + } 3240 + }, 3241 + "node_modules/lines-and-columns": { 3242 + "version": "1.2.4", 3243 + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 3244 + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 3245 + "dev": true 3246 + }, 3247 + "node_modules/locate-character": { 3248 + "version": "3.0.0", 3249 + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 3250 + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" 3251 + }, 3252 + "node_modules/locate-path": { 3253 + "version": "6.0.0", 3254 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 3255 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 3256 + "dev": true, 3257 + "dependencies": { 3258 + "p-locate": "^5.0.0" 3259 + }, 3260 + "engines": { 3261 + "node": ">=10" 3262 + }, 3263 + "funding": { 3264 + "url": "https://github.com/sponsors/sindresorhus" 3265 + } 3266 + }, 3267 + "node_modules/lodash.castarray": { 3268 + "version": "4.4.0", 3269 + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", 3270 + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", 3271 + "dev": true 3272 + }, 3273 + "node_modules/lodash.isplainobject": { 3274 + "version": "4.0.6", 3275 + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 3276 + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", 3277 + "dev": true 3278 + }, 3279 + "node_modules/lodash.merge": { 3280 + "version": "4.6.2", 3281 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 3282 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 3283 + "dev": true 3284 + }, 3285 + "node_modules/lru-cache": { 3286 + "version": "10.4.3", 3287 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 3288 + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 3289 + "dev": true 3290 + }, 3291 + "node_modules/maath": { 3292 + "version": "0.10.8", 3293 + "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz", 3294 + "integrity": "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==", 3295 + "peerDependencies": { 3296 + "@types/three": ">=0.134.0", 3297 + "three": ">=0.134.0" 3298 + } 3299 + }, 3300 + "node_modules/magic-string": { 3301 + "version": "0.30.17", 3302 + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 3303 + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 3304 + "dependencies": { 3305 + "@jridgewell/sourcemap-codec": "^1.5.0" 3306 + } 3307 + }, 3308 + "node_modules/merge2": { 3309 + "version": "1.4.1", 3310 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 3311 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 3312 + "dev": true, 3313 + "engines": { 3314 + "node": ">= 8" 3315 + } 3316 + }, 3317 + "node_modules/meshoptimizer": { 3318 + "version": "0.18.1", 3319 + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", 3320 + "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==" 3321 + }, 3322 + "node_modules/micromatch": { 3323 + "version": "4.0.8", 3324 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 3325 + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 3326 + "devOptional": true, 3327 + "dependencies": { 3328 + "braces": "^3.0.3", 3329 + "picomatch": "^2.3.1" 3330 + }, 3331 + "engines": { 3332 + "node": ">=8.6" 3333 + } 3334 + }, 3335 + "node_modules/micromatch/node_modules/picomatch": { 3336 + "version": "2.3.1", 3337 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3338 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3339 + "devOptional": true, 3340 + "engines": { 3341 + "node": ">=8.6" 3342 + }, 3343 + "funding": { 3344 + "url": "https://github.com/sponsors/jonschlinkert" 3345 + } 3346 + }, 3347 + "node_modules/mini-svg-data-uri": { 3348 + "version": "1.4.4", 3349 + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", 3350 + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", 3351 + "dev": true, 3352 + "bin": { 3353 + "mini-svg-data-uri": "cli.js" 3354 + } 3355 + }, 3356 + "node_modules/minimatch": { 3357 + "version": "3.1.2", 3358 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3359 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3360 + "dev": true, 3361 + "dependencies": { 3362 + "brace-expansion": "^1.1.7" 3363 + }, 3364 + "engines": { 3365 + "node": "*" 3366 + } 3367 + }, 3368 + "node_modules/minipass": { 3369 + "version": "7.1.2", 3370 + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 3371 + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 3372 + "dev": true, 3373 + "engines": { 3374 + "node": ">=16 || 14 >=14.17" 3375 + } 3376 + }, 3377 + "node_modules/mitt": { 3378 + "version": "3.0.1", 3379 + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", 3380 + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" 3381 + }, 3382 + "node_modules/mri": { 3383 + "version": "1.2.0", 3384 + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 3385 + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 3386 + "engines": { 3387 + "node": ">=4" 3388 + } 3389 + }, 3390 + "node_modules/mrmime": { 3391 + "version": "2.0.0", 3392 + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", 3393 + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", 3394 + "engines": { 3395 + "node": ">=10" 3396 + } 3397 + }, 3398 + "node_modules/ms": { 3399 + "version": "2.1.3", 3400 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 3401 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 3402 + }, 3403 + "node_modules/mz": { 3404 + "version": "2.7.0", 3405 + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 3406 + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 3407 + "dev": true, 3408 + "dependencies": { 3409 + "any-promise": "^1.0.0", 3410 + "object-assign": "^4.0.1", 3411 + "thenify-all": "^1.0.0" 3412 + } 3413 + }, 3414 + "node_modules/nanoid": { 3415 + "version": "3.3.8", 3416 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 3417 + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 3418 + "funding": [ 3419 + { 3420 + "type": "github", 3421 + "url": "https://github.com/sponsors/ai" 3422 + } 3423 + ], 3424 + "bin": { 3425 + "nanoid": "bin/nanoid.cjs" 3426 + }, 3427 + "engines": { 3428 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 3429 + } 3430 + }, 3431 + "node_modules/natural-compare": { 3432 + "version": "1.4.0", 3433 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3434 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 3435 + "dev": true 3436 + }, 3437 + "node_modules/node-addon-api": { 3438 + "version": "7.1.1", 3439 + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", 3440 + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", 3441 + "optional": true 3442 + }, 3443 + "node_modules/node-releases": { 3444 + "version": "2.0.19", 3445 + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 3446 + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 3447 + "dev": true 3448 + }, 3449 + "node_modules/normalize-path": { 3450 + "version": "3.0.0", 3451 + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3452 + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3453 + "dev": true, 3454 + "engines": { 3455 + "node": ">=0.10.0" 3456 + } 3457 + }, 3458 + "node_modules/normalize-range": { 3459 + "version": "0.1.2", 3460 + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 3461 + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", 3462 + "dev": true, 3463 + "engines": { 3464 + "node": ">=0.10.0" 3465 + } 3466 + }, 3467 + "node_modules/object-assign": { 3468 + "version": "4.1.1", 3469 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3470 + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 3471 + "dev": true, 3472 + "engines": { 3473 + "node": ">=0.10.0" 3474 + } 3475 + }, 3476 + "node_modules/object-hash": { 3477 + "version": "3.0.0", 3478 + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 3479 + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 3480 + "dev": true, 3481 + "engines": { 3482 + "node": ">= 6" 3483 + } 3484 + }, 3485 + "node_modules/optionator": { 3486 + "version": "0.9.4", 3487 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 3488 + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 3489 + "dev": true, 3490 + "dependencies": { 3491 + "deep-is": "^0.1.3", 3492 + "fast-levenshtein": "^2.0.6", 3493 + "levn": "^0.4.1", 3494 + "prelude-ls": "^1.2.1", 3495 + "type-check": "^0.4.0", 3496 + "word-wrap": "^1.2.5" 3497 + }, 3498 + "engines": { 3499 + "node": ">= 0.8.0" 3500 + } 3501 + }, 3502 + "node_modules/p-limit": { 3503 + "version": "3.1.0", 3504 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3505 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3506 + "dev": true, 3507 + "dependencies": { 3508 + "yocto-queue": "^0.1.0" 3509 + }, 3510 + "engines": { 3511 + "node": ">=10" 3512 + }, 3513 + "funding": { 3514 + "url": "https://github.com/sponsors/sindresorhus" 3515 + } 3516 + }, 3517 + "node_modules/p-locate": { 3518 + "version": "5.0.0", 3519 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 3520 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 3521 + "dev": true, 3522 + "dependencies": { 3523 + "p-limit": "^3.0.2" 3524 + }, 3525 + "engines": { 3526 + "node": ">=10" 3527 + }, 3528 + "funding": { 3529 + "url": "https://github.com/sponsors/sindresorhus" 3530 + } 3531 + }, 3532 + "node_modules/package-json-from-dist": { 3533 + "version": "1.0.1", 3534 + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 3535 + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 3536 + "dev": true 3537 + }, 3538 + "node_modules/parent-module": { 3539 + "version": "1.0.1", 3540 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3541 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3542 + "dev": true, 3543 + "dependencies": { 3544 + "callsites": "^3.0.0" 3545 + }, 3546 + "engines": { 3547 + "node": ">=6" 3548 + } 3549 + }, 3550 + "node_modules/parse-svg-path": { 3551 + "version": "0.1.2", 3552 + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", 3553 + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" 3554 + }, 3555 + "node_modules/path-exists": { 3556 + "version": "4.0.0", 3557 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3558 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3559 + "dev": true, 3560 + "engines": { 3561 + "node": ">=8" 3562 + } 3563 + }, 3564 + "node_modules/path-key": { 3565 + "version": "3.1.1", 3566 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3567 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3568 + "dev": true, 3569 + "engines": { 3570 + "node": ">=8" 3571 + } 3572 + }, 3573 + "node_modules/path-parse": { 3574 + "version": "1.0.7", 3575 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3576 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3577 + "dev": true 3578 + }, 3579 + "node_modules/path-scurry": { 3580 + "version": "1.11.1", 3581 + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 3582 + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 3583 + "dev": true, 3584 + "dependencies": { 3585 + "lru-cache": "^10.2.0", 3586 + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 3587 + }, 3588 + "engines": { 3589 + "node": ">=16 || 14 >=14.18" 3590 + }, 3591 + "funding": { 3592 + "url": "https://github.com/sponsors/isaacs" 3593 + } 3594 + }, 3595 + "node_modules/picocolors": { 3596 + "version": "1.1.1", 3597 + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 3598 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" 3599 + }, 3600 + "node_modules/picomatch": { 3601 + "version": "4.0.2", 3602 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 3603 + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 3604 + "dev": true, 3605 + "optional": true, 3606 + "peer": true, 3607 + "engines": { 3608 + "node": ">=12" 3609 + }, 3610 + "funding": { 3611 + "url": "https://github.com/sponsors/jonschlinkert" 3612 + } 3613 + }, 3614 + "node_modules/pify": { 3615 + "version": "2.3.0", 3616 + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 3617 + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 3618 + "dev": true, 3619 + "engines": { 3620 + "node": ">=0.10.0" 3621 + } 3622 + }, 3623 + "node_modules/pirates": { 3624 + "version": "4.0.6", 3625 + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 3626 + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 3627 + "dev": true, 3628 + "engines": { 3629 + "node": ">= 6" 3630 + } 3631 + }, 3632 + "node_modules/pixi.js": { 3633 + "version": "8.7.3", 3634 + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.7.3.tgz", 3635 + "integrity": "sha512-wfWlhJYnGx1s4f2yoouevQjaeacbJ12LTkJGa+n9AIYNIjOnmJylBtZ2mARX7iFk3mr2xv0wuo//XPe2hk5OBw==", 3636 + "dependencies": { 3637 + "@pixi/colord": "^2.9.6", 3638 + "@types/css-font-loading-module": "^0.0.12", 3639 + "@types/earcut": "^2.1.4", 3640 + "@webgpu/types": "^0.1.40", 3641 + "@xmldom/xmldom": "^0.8.10", 3642 + "earcut": "^2.2.4", 3643 + "eventemitter3": "^5.0.1", 3644 + "ismobilejs": "^1.1.1", 3645 + "parse-svg-path": "^0.1.2" 3646 + } 3647 + }, 3648 + "node_modules/postcss": { 3649 + "version": "8.5.1", 3650 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", 3651 + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", 3652 + "funding": [ 3653 + { 3654 + "type": "opencollective", 3655 + "url": "https://opencollective.com/postcss/" 3656 + }, 3657 + { 3658 + "type": "tidelift", 3659 + "url": "https://tidelift.com/funding/github/npm/postcss" 3660 + }, 3661 + { 3662 + "type": "github", 3663 + "url": "https://github.com/sponsors/ai" 3664 + } 3665 + ], 3666 + "dependencies": { 3667 + "nanoid": "^3.3.8", 3668 + "picocolors": "^1.1.1", 3669 + "source-map-js": "^1.2.1" 3670 + }, 3671 + "engines": { 3672 + "node": "^10 || ^12 || >=14" 3673 + } 3674 + }, 3675 + "node_modules/postcss-import": { 3676 + "version": "15.1.0", 3677 + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", 3678 + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", 3679 + "dev": true, 3680 + "dependencies": { 3681 + "postcss-value-parser": "^4.0.0", 3682 + "read-cache": "^1.0.0", 3683 + "resolve": "^1.1.7" 3684 + }, 3685 + "engines": { 3686 + "node": ">=14.0.0" 3687 + }, 3688 + "peerDependencies": { 3689 + "postcss": "^8.0.0" 3690 + } 3691 + }, 3692 + "node_modules/postcss-js": { 3693 + "version": "4.0.1", 3694 + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", 3695 + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", 3696 + "dev": true, 3697 + "dependencies": { 3698 + "camelcase-css": "^2.0.1" 3699 + }, 3700 + "engines": { 3701 + "node": "^12 || ^14 || >= 16" 3702 + }, 3703 + "funding": { 3704 + "type": "opencollective", 3705 + "url": "https://opencollective.com/postcss/" 3706 + }, 3707 + "peerDependencies": { 3708 + "postcss": "^8.4.21" 3709 + } 3710 + }, 3711 + "node_modules/postcss-load-config": { 3712 + "version": "3.1.4", 3713 + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 3714 + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 3715 + "dev": true, 3716 + "dependencies": { 3717 + "lilconfig": "^2.0.5", 3718 + "yaml": "^1.10.2" 3719 + }, 3720 + "engines": { 3721 + "node": ">= 10" 3722 + }, 3723 + "funding": { 3724 + "type": "opencollective", 3725 + "url": "https://opencollective.com/postcss/" 3726 + }, 3727 + "peerDependencies": { 3728 + "postcss": ">=8.0.9", 3729 + "ts-node": ">=9.0.0" 3730 + }, 3731 + "peerDependenciesMeta": { 3732 + "postcss": { 3733 + "optional": true 3734 + }, 3735 + "ts-node": { 3736 + "optional": true 3737 + } 3738 + } 3739 + }, 3740 + "node_modules/postcss-load-config/node_modules/yaml": { 3741 + "version": "1.10.2", 3742 + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 3743 + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", 3744 + "dev": true, 3745 + "engines": { 3746 + "node": ">= 6" 3747 + } 3748 + }, 3749 + "node_modules/postcss-nested": { 3750 + "version": "6.2.0", 3751 + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", 3752 + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", 3753 + "dev": true, 3754 + "funding": [ 3755 + { 3756 + "type": "opencollective", 3757 + "url": "https://opencollective.com/postcss/" 3758 + }, 3759 + { 3760 + "type": "github", 3761 + "url": "https://github.com/sponsors/ai" 3762 + } 3763 + ], 3764 + "dependencies": { 3765 + "postcss-selector-parser": "^6.1.1" 3766 + }, 3767 + "engines": { 3768 + "node": ">=12.0" 3769 + }, 3770 + "peerDependencies": { 3771 + "postcss": "^8.2.14" 3772 + } 3773 + }, 3774 + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { 3775 + "version": "6.1.2", 3776 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", 3777 + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", 3778 + "dev": true, 3779 + "dependencies": { 3780 + "cssesc": "^3.0.0", 3781 + "util-deprecate": "^1.0.2" 3782 + }, 3783 + "engines": { 3784 + "node": ">=4" 3785 + } 3786 + }, 3787 + "node_modules/postcss-safe-parser": { 3788 + "version": "6.0.0", 3789 + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", 3790 + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", 3791 + "dev": true, 3792 + "engines": { 3793 + "node": ">=12.0" 3794 + }, 3795 + "funding": { 3796 + "type": "opencollective", 3797 + "url": "https://opencollective.com/postcss/" 3798 + }, 3799 + "peerDependencies": { 3800 + "postcss": "^8.3.3" 3801 + } 3802 + }, 3803 + "node_modules/postcss-scss": { 3804 + "version": "4.0.9", 3805 + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", 3806 + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", 3807 + "dev": true, 3808 + "funding": [ 3809 + { 3810 + "type": "opencollective", 3811 + "url": "https://opencollective.com/postcss/" 3812 + }, 3813 + { 3814 + "type": "tidelift", 3815 + "url": "https://tidelift.com/funding/github/npm/postcss-scss" 3816 + }, 3817 + { 3818 + "type": "github", 3819 + "url": "https://github.com/sponsors/ai" 3820 + } 3821 + ], 3822 + "engines": { 3823 + "node": ">=12.0" 3824 + }, 3825 + "peerDependencies": { 3826 + "postcss": "^8.4.29" 3827 + } 3828 + }, 3829 + "node_modules/postcss-selector-parser": { 3830 + "version": "6.0.10", 3831 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 3832 + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 3833 + "dev": true, 3834 + "dependencies": { 3835 + "cssesc": "^3.0.0", 3836 + "util-deprecate": "^1.0.2" 3837 + }, 3838 + "engines": { 3839 + "node": ">=4" 3840 + } 3841 + }, 3842 + "node_modules/postcss-value-parser": { 3843 + "version": "4.2.0", 3844 + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 3845 + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 3846 + "dev": true 3847 + }, 3848 + "node_modules/prelude-ls": { 3849 + "version": "1.2.1", 3850 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3851 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3852 + "dev": true, 3853 + "engines": { 3854 + "node": ">= 0.8.0" 3855 + } 3856 + }, 3857 + "node_modules/prettier": { 3858 + "version": "3.4.2", 3859 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", 3860 + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", 3861 + "dev": true, 3862 + "bin": { 3863 + "prettier": "bin/prettier.cjs" 3864 + }, 3865 + "engines": { 3866 + "node": ">=14" 3867 + }, 3868 + "funding": { 3869 + "url": "https://github.com/prettier/prettier?sponsor=1" 3870 + } 3871 + }, 3872 + "node_modules/prettier-plugin-svelte": { 3873 + "version": "3.3.3", 3874 + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.3.tgz", 3875 + "integrity": "sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==", 3876 + "dev": true, 3877 + "peerDependencies": { 3878 + "prettier": "^3.0.0", 3879 + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" 3880 + } 3881 + }, 3882 + "node_modules/prettier-plugin-tailwindcss": { 3883 + "version": "0.6.11", 3884 + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", 3885 + "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", 3886 + "dev": true, 3887 + "engines": { 3888 + "node": ">=14.21.3" 3889 + }, 3890 + "peerDependencies": { 3891 + "@ianvs/prettier-plugin-sort-imports": "*", 3892 + "@prettier/plugin-pug": "*", 3893 + "@shopify/prettier-plugin-liquid": "*", 3894 + "@trivago/prettier-plugin-sort-imports": "*", 3895 + "@zackad/prettier-plugin-twig": "*", 3896 + "prettier": "^3.0", 3897 + "prettier-plugin-astro": "*", 3898 + "prettier-plugin-css-order": "*", 3899 + "prettier-plugin-import-sort": "*", 3900 + "prettier-plugin-jsdoc": "*", 3901 + "prettier-plugin-marko": "*", 3902 + "prettier-plugin-multiline-arrays": "*", 3903 + "prettier-plugin-organize-attributes": "*", 3904 + "prettier-plugin-organize-imports": "*", 3905 + "prettier-plugin-sort-imports": "*", 3906 + "prettier-plugin-style-order": "*", 3907 + "prettier-plugin-svelte": "*" 3908 + }, 3909 + "peerDependenciesMeta": { 3910 + "@ianvs/prettier-plugin-sort-imports": { 3911 + "optional": true 3912 + }, 3913 + "@prettier/plugin-pug": { 3914 + "optional": true 3915 + }, 3916 + "@shopify/prettier-plugin-liquid": { 3917 + "optional": true 3918 + }, 3919 + "@trivago/prettier-plugin-sort-imports": { 3920 + "optional": true 3921 + }, 3922 + "@zackad/prettier-plugin-twig": { 3923 + "optional": true 3924 + }, 3925 + "prettier-plugin-astro": { 3926 + "optional": true 3927 + }, 3928 + "prettier-plugin-css-order": { 3929 + "optional": true 3930 + }, 3931 + "prettier-plugin-import-sort": { 3932 + "optional": true 3933 + }, 3934 + "prettier-plugin-jsdoc": { 3935 + "optional": true 3936 + }, 3937 + "prettier-plugin-marko": { 3938 + "optional": true 3939 + }, 3940 + "prettier-plugin-multiline-arrays": { 3941 + "optional": true 3942 + }, 3943 + "prettier-plugin-organize-attributes": { 3944 + "optional": true 3945 + }, 3946 + "prettier-plugin-organize-imports": { 3947 + "optional": true 3948 + }, 3949 + "prettier-plugin-sort-imports": { 3950 + "optional": true 3951 + }, 3952 + "prettier-plugin-style-order": { 3953 + "optional": true 3954 + }, 3955 + "prettier-plugin-svelte": { 3956 + "optional": true 3957 + } 3958 + } 3959 + }, 3960 + "node_modules/punycode": { 3961 + "version": "2.3.1", 3962 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 3963 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 3964 + "dev": true, 3965 + "engines": { 3966 + "node": ">=6" 3967 + } 3968 + }, 3969 + "node_modules/queue-microtask": { 3970 + "version": "1.2.3", 3971 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3972 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3973 + "dev": true, 3974 + "funding": [ 3975 + { 3976 + "type": "github", 3977 + "url": "https://github.com/sponsors/feross" 3978 + }, 3979 + { 3980 + "type": "patreon", 3981 + "url": "https://www.patreon.com/feross" 3982 + }, 3983 + { 3984 + "type": "consulting", 3985 + "url": "https://feross.org/support" 3986 + } 3987 + ] 3988 + }, 3989 + "node_modules/read-cache": { 3990 + "version": "1.0.0", 3991 + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 3992 + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 3993 + "dev": true, 3994 + "dependencies": { 3995 + "pify": "^2.3.0" 3996 + } 3997 + }, 3998 + "node_modules/readdirp": { 3999 + "version": "4.1.1", 4000 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", 4001 + "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", 4002 + "engines": { 4003 + "node": ">= 14.18.0" 4004 + }, 4005 + "funding": { 4006 + "type": "individual", 4007 + "url": "https://paulmillr.com/funding/" 4008 + } 4009 + }, 4010 + "node_modules/require-from-string": { 4011 + "version": "2.0.2", 4012 + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 4013 + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 4014 + "engines": { 4015 + "node": ">=0.10.0" 4016 + } 4017 + }, 4018 + "node_modules/resolve": { 4019 + "version": "1.22.10", 4020 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", 4021 + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", 4022 + "dev": true, 4023 + "dependencies": { 4024 + "is-core-module": "^2.16.0", 4025 + "path-parse": "^1.0.7", 4026 + "supports-preserve-symlinks-flag": "^1.0.0" 4027 + }, 4028 + "bin": { 4029 + "resolve": "bin/resolve" 4030 + }, 4031 + "engines": { 4032 + "node": ">= 0.4" 4033 + }, 4034 + "funding": { 4035 + "url": "https://github.com/sponsors/ljharb" 4036 + } 4037 + }, 4038 + "node_modules/resolve-from": { 4039 + "version": "4.0.0", 4040 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 4041 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 4042 + "dev": true, 4043 + "engines": { 4044 + "node": ">=4" 4045 + } 4046 + }, 4047 + "node_modules/reusify": { 4048 + "version": "1.0.4", 4049 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 4050 + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 4051 + "dev": true, 4052 + "engines": { 4053 + "iojs": ">=1.0.0", 4054 + "node": ">=0.10.0" 4055 + } 4056 + }, 4057 + "node_modules/rollup": { 4058 + "version": "4.34.1", 4059 + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.1.tgz", 4060 + "integrity": "sha512-iYZ/+PcdLYSGfH3S+dGahlW/RWmsqDhLgj1BT9DH/xXJ0ggZN7xkdP9wipPNjjNLczI+fmMLmTB9pye+d2r4GQ==", 4061 + "dependencies": { 4062 + "@types/estree": "1.0.6" 4063 + }, 4064 + "bin": { 4065 + "rollup": "dist/bin/rollup" 4066 + }, 4067 + "engines": { 4068 + "node": ">=18.0.0", 4069 + "npm": ">=8.0.0" 4070 + }, 4071 + "optionalDependencies": { 4072 + "@rollup/rollup-android-arm-eabi": "4.34.1", 4073 + "@rollup/rollup-android-arm64": "4.34.1", 4074 + "@rollup/rollup-darwin-arm64": "4.34.1", 4075 + "@rollup/rollup-darwin-x64": "4.34.1", 4076 + "@rollup/rollup-freebsd-arm64": "4.34.1", 4077 + "@rollup/rollup-freebsd-x64": "4.34.1", 4078 + "@rollup/rollup-linux-arm-gnueabihf": "4.34.1", 4079 + "@rollup/rollup-linux-arm-musleabihf": "4.34.1", 4080 + "@rollup/rollup-linux-arm64-gnu": "4.34.1", 4081 + "@rollup/rollup-linux-arm64-musl": "4.34.1", 4082 + "@rollup/rollup-linux-loongarch64-gnu": "4.34.1", 4083 + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.1", 4084 + "@rollup/rollup-linux-riscv64-gnu": "4.34.1", 4085 + "@rollup/rollup-linux-s390x-gnu": "4.34.1", 4086 + "@rollup/rollup-linux-x64-gnu": "4.34.1", 4087 + "@rollup/rollup-linux-x64-musl": "4.34.1", 4088 + "@rollup/rollup-win32-arm64-msvc": "4.34.1", 4089 + "@rollup/rollup-win32-ia32-msvc": "4.34.1", 4090 + "@rollup/rollup-win32-x64-msvc": "4.34.1", 4091 + "fsevents": "~2.3.2" 4092 + } 4093 + }, 4094 + "node_modules/run-parallel": { 4095 + "version": "1.2.0", 4096 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 4097 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 4098 + "dev": true, 4099 + "funding": [ 4100 + { 4101 + "type": "github", 4102 + "url": "https://github.com/sponsors/feross" 4103 + }, 4104 + { 4105 + "type": "patreon", 4106 + "url": "https://www.patreon.com/feross" 4107 + }, 4108 + { 4109 + "type": "consulting", 4110 + "url": "https://feross.org/support" 4111 + } 4112 + ], 4113 + "dependencies": { 4114 + "queue-microtask": "^1.2.2" 4115 + } 4116 + }, 4117 + "node_modules/sade": { 4118 + "version": "1.8.1", 4119 + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 4120 + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 4121 + "dependencies": { 4122 + "mri": "^1.1.0" 4123 + }, 4124 + "engines": { 4125 + "node": ">=6" 4126 + } 4127 + }, 4128 + "node_modules/sass": { 4129 + "version": "1.83.4", 4130 + "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.4.tgz", 4131 + "integrity": "sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==", 4132 + "dependencies": { 4133 + "chokidar": "^4.0.0", 4134 + "immutable": "^5.0.2", 4135 + "source-map-js": ">=0.6.2 <2.0.0" 4136 + }, 4137 + "bin": { 4138 + "sass": "sass.js" 4139 + }, 4140 + "engines": { 4141 + "node": ">=14.0.0" 4142 + }, 4143 + "optionalDependencies": { 4144 + "@parcel/watcher": "^2.4.1" 4145 + } 4146 + }, 4147 + "node_modules/semver": { 4148 + "version": "7.7.0", 4149 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", 4150 + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", 4151 + "dev": true, 4152 + "bin": { 4153 + "semver": "bin/semver.js" 4154 + }, 4155 + "engines": { 4156 + "node": ">=10" 4157 + } 4158 + }, 4159 + "node_modules/set-cookie-parser": { 4160 + "version": "2.7.1", 4161 + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", 4162 + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==" 4163 + }, 4164 + "node_modules/shebang-command": { 4165 + "version": "2.0.0", 4166 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 4167 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 4168 + "dev": true, 4169 + "dependencies": { 4170 + "shebang-regex": "^3.0.0" 4171 + }, 4172 + "engines": { 4173 + "node": ">=8" 4174 + } 4175 + }, 4176 + "node_modules/shebang-regex": { 4177 + "version": "3.0.0", 4178 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 4179 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 4180 + "dev": true, 4181 + "engines": { 4182 + "node": ">=8" 4183 + } 4184 + }, 4185 + "node_modules/signal-exit": { 4186 + "version": "4.1.0", 4187 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 4188 + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 4189 + "dev": true, 4190 + "engines": { 4191 + "node": ">=14" 4192 + }, 4193 + "funding": { 4194 + "url": "https://github.com/sponsors/isaacs" 4195 + } 4196 + }, 4197 + "node_modules/sirv": { 4198 + "version": "3.0.0", 4199 + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", 4200 + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", 4201 + "dependencies": { 4202 + "@polka/url": "^1.0.0-next.24", 4203 + "mrmime": "^2.0.0", 4204 + "totalist": "^3.0.0" 4205 + }, 4206 + "engines": { 4207 + "node": ">=18" 4208 + } 4209 + }, 4210 + "node_modules/source-map-js": { 4211 + "version": "1.2.1", 4212 + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 4213 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 4214 + "engines": { 4215 + "node": ">=0.10.0" 4216 + } 4217 + }, 4218 + "node_modules/string-width": { 4219 + "version": "5.1.2", 4220 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 4221 + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 4222 + "dev": true, 4223 + "dependencies": { 4224 + "eastasianwidth": "^0.2.0", 4225 + "emoji-regex": "^9.2.2", 4226 + "strip-ansi": "^7.0.1" 4227 + }, 4228 + "engines": { 4229 + "node": ">=12" 4230 + }, 4231 + "funding": { 4232 + "url": "https://github.com/sponsors/sindresorhus" 4233 + } 4234 + }, 4235 + "node_modules/string-width-cjs": { 4236 + "name": "string-width", 4237 + "version": "4.2.3", 4238 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4239 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4240 + "dev": true, 4241 + "dependencies": { 4242 + "emoji-regex": "^8.0.0", 4243 + "is-fullwidth-code-point": "^3.0.0", 4244 + "strip-ansi": "^6.0.1" 4245 + }, 4246 + "engines": { 4247 + "node": ">=8" 4248 + } 4249 + }, 4250 + "node_modules/string-width-cjs/node_modules/ansi-regex": { 4251 + "version": "5.0.1", 4252 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 4253 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 4254 + "dev": true, 4255 + "engines": { 4256 + "node": ">=8" 4257 + } 4258 + }, 4259 + "node_modules/string-width-cjs/node_modules/emoji-regex": { 4260 + "version": "8.0.0", 4261 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 4262 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 4263 + "dev": true 4264 + }, 4265 + "node_modules/string-width-cjs/node_modules/strip-ansi": { 4266 + "version": "6.0.1", 4267 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4268 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4269 + "dev": true, 4270 + "dependencies": { 4271 + "ansi-regex": "^5.0.1" 4272 + }, 4273 + "engines": { 4274 + "node": ">=8" 4275 + } 4276 + }, 4277 + "node_modules/strip-ansi": { 4278 + "version": "7.1.0", 4279 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 4280 + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 4281 + "dev": true, 4282 + "dependencies": { 4283 + "ansi-regex": "^6.0.1" 4284 + }, 4285 + "engines": { 4286 + "node": ">=12" 4287 + }, 4288 + "funding": { 4289 + "url": "https://github.com/chalk/strip-ansi?sponsor=1" 4290 + } 4291 + }, 4292 + "node_modules/strip-ansi-cjs": { 4293 + "name": "strip-ansi", 4294 + "version": "6.0.1", 4295 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4296 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4297 + "dev": true, 4298 + "dependencies": { 4299 + "ansi-regex": "^5.0.1" 4300 + }, 4301 + "engines": { 4302 + "node": ">=8" 4303 + } 4304 + }, 4305 + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 4306 + "version": "5.0.1", 4307 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 4308 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 4309 + "dev": true, 4310 + "engines": { 4311 + "node": ">=8" 4312 + } 4313 + }, 4314 + "node_modules/strip-json-comments": { 4315 + "version": "3.1.1", 4316 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 4317 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 4318 + "dev": true, 4319 + "engines": { 4320 + "node": ">=8" 4321 + }, 4322 + "funding": { 4323 + "url": "https://github.com/sponsors/sindresorhus" 4324 + } 4325 + }, 4326 + "node_modules/sucrase": { 4327 + "version": "3.35.0", 4328 + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", 4329 + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 4330 + "dev": true, 4331 + "dependencies": { 4332 + "@jridgewell/gen-mapping": "^0.3.2", 4333 + "commander": "^4.0.0", 4334 + "glob": "^10.3.10", 4335 + "lines-and-columns": "^1.1.6", 4336 + "mz": "^2.7.0", 4337 + "pirates": "^4.0.1", 4338 + "ts-interface-checker": "^0.1.9" 4339 + }, 4340 + "bin": { 4341 + "sucrase": "bin/sucrase", 4342 + "sucrase-node": "bin/sucrase-node" 4343 + }, 4344 + "engines": { 4345 + "node": ">=16 || 14 >=14.17" 4346 + } 4347 + }, 4348 + "node_modules/supports-color": { 4349 + "version": "7.2.0", 4350 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 4351 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 4352 + "dev": true, 4353 + "dependencies": { 4354 + "has-flag": "^4.0.0" 4355 + }, 4356 + "engines": { 4357 + "node": ">=8" 4358 + } 4359 + }, 4360 + "node_modules/supports-preserve-symlinks-flag": { 4361 + "version": "1.0.0", 4362 + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 4363 + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 4364 + "dev": true, 4365 + "engines": { 4366 + "node": ">= 0.4" 4367 + }, 4368 + "funding": { 4369 + "url": "https://github.com/sponsors/ljharb" 4370 + } 4371 + }, 4372 + "node_modules/svelte": { 4373 + "version": "5.19.6", 4374 + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.19.6.tgz", 4375 + "integrity": "sha512-6ydekB3qyqUal+UhfMjmVOjRGtxysR8vuiMhi2nwuBtPJWnctVlsGspjVFB05qmR+TXI1emuqtZt81c0XiFleA==", 4376 + "dependencies": { 4377 + "@ampproject/remapping": "^2.3.0", 4378 + "@jridgewell/sourcemap-codec": "^1.5.0", 4379 + "@types/estree": "^1.0.5", 4380 + "acorn": "^8.12.1", 4381 + "acorn-typescript": "^1.4.13", 4382 + "aria-query": "^5.3.1", 4383 + "axobject-query": "^4.1.0", 4384 + "clsx": "^2.1.1", 4385 + "esm-env": "^1.2.1", 4386 + "esrap": "^1.4.3", 4387 + "is-reference": "^3.0.3", 4388 + "locate-character": "^3.0.0", 4389 + "magic-string": "^0.30.11", 4390 + "zimmerframe": "^1.1.2" 4391 + }, 4392 + "engines": { 4393 + "node": ">=18" 4394 + } 4395 + }, 4396 + "node_modules/svelte-check": { 4397 + "version": "4.1.4", 4398 + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.4.tgz", 4399 + "integrity": "sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==", 4400 + "dev": true, 4401 + "dependencies": { 4402 + "@jridgewell/trace-mapping": "^0.3.25", 4403 + "chokidar": "^4.0.1", 4404 + "fdir": "^6.2.0", 4405 + "picocolors": "^1.0.0", 4406 + "sade": "^1.7.4" 4407 + }, 4408 + "bin": { 4409 + "svelte-check": "bin/svelte-check" 4410 + }, 4411 + "engines": { 4412 + "node": ">= 18.0.0" 4413 + }, 4414 + "peerDependencies": { 4415 + "svelte": "^4.0.0 || ^5.0.0-next.0", 4416 + "typescript": ">=5.0.0" 4417 + } 4418 + }, 4419 + "node_modules/svelte-eslint-parser": { 4420 + "version": "0.43.0", 4421 + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.43.0.tgz", 4422 + "integrity": "sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==", 4423 + "dev": true, 4424 + "dependencies": { 4425 + "eslint-scope": "^7.2.2", 4426 + "eslint-visitor-keys": "^3.4.3", 4427 + "espree": "^9.6.1", 4428 + "postcss": "^8.4.39", 4429 + "postcss-scss": "^4.0.9" 4430 + }, 4431 + "engines": { 4432 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4433 + }, 4434 + "funding": { 4435 + "url": "https://github.com/sponsors/ota-meshi" 4436 + }, 4437 + "peerDependencies": { 4438 + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" 4439 + }, 4440 + "peerDependenciesMeta": { 4441 + "svelte": { 4442 + "optional": true 4443 + } 4444 + } 4445 + }, 4446 + "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { 4447 + "version": "7.2.2", 4448 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 4449 + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 4450 + "dev": true, 4451 + "dependencies": { 4452 + "esrecurse": "^4.3.0", 4453 + "estraverse": "^5.2.0" 4454 + }, 4455 + "engines": { 4456 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4457 + }, 4458 + "funding": { 4459 + "url": "https://opencollective.com/eslint" 4460 + } 4461 + }, 4462 + "node_modules/svelte-eslint-parser/node_modules/eslint-visitor-keys": { 4463 + "version": "3.4.3", 4464 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 4465 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 4466 + "dev": true, 4467 + "engines": { 4468 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4469 + }, 4470 + "funding": { 4471 + "url": "https://opencollective.com/eslint" 4472 + } 4473 + }, 4474 + "node_modules/svelte-eslint-parser/node_modules/espree": { 4475 + "version": "9.6.1", 4476 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 4477 + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 4478 + "dev": true, 4479 + "dependencies": { 4480 + "acorn": "^8.9.0", 4481 + "acorn-jsx": "^5.3.2", 4482 + "eslint-visitor-keys": "^3.4.1" 4483 + }, 4484 + "engines": { 4485 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 4486 + }, 4487 + "funding": { 4488 + "url": "https://opencollective.com/eslint" 4489 + } 4490 + }, 4491 + "node_modules/svelte-persisted-store": { 4492 + "version": "0.12.0", 4493 + "resolved": "https://registry.npmjs.org/svelte-persisted-store/-/svelte-persisted-store-0.12.0.tgz", 4494 + "integrity": "sha512-BdBQr2SGSJ+rDWH8/aEV5GthBJDapVP0GP3fuUCA7TjYG5ctcB+O9Mj9ZC0+Jo1oJMfZUd1y9H68NFRR5MyIJA==", 4495 + "engines": { 4496 + "node": ">=0.14" 4497 + }, 4498 + "peerDependencies": { 4499 + "svelte": "^3.48.0 || ^4 || ^5" 4500 + } 4501 + }, 4502 + "node_modules/svelte-tweakpane-ui": { 4503 + "version": "1.5.2", 4504 + "resolved": "https://registry.npmjs.org/svelte-tweakpane-ui/-/svelte-tweakpane-ui-1.5.2.tgz", 4505 + "integrity": "sha512-8rDWTDWvsuBqnMF1vro7iGDbYxY7SRZk5jPSLdv3Qmkx3vgKjS1z0pbf+N2+bAyWJ3bWIihVitqVgcN5acAx5A==", 4506 + "dependencies": { 4507 + "@kitschpatrol/tweakpane-plugin-camerakit": "0.3.1-beta.2", 4508 + "@kitschpatrol/tweakpane-plugin-essentials": "0.2.2-beta.2", 4509 + "@kitschpatrol/tweakpane-plugin-file-import": "1.1.2-beta.1", 4510 + "@kitschpatrol/tweakpane-plugin-image": "2.0.1-beta.4", 4511 + "@kitschpatrol/tweakpane-plugin-inputs": "1.0.4-beta.3", 4512 + "@kitschpatrol/tweakpane-plugin-profiler": "0.4.2-beta.2", 4513 + "@kitschpatrol/tweakpane-plugin-rotation": "0.2.1-beta.1", 4514 + "@kitschpatrol/tweakpane-plugin-textarea": "2.0.1-beta.1", 4515 + "@kitschpatrol/tweakpane-plugin-waveform": "1.0.4-beta.2", 4516 + "@tweakpane/core": "2.0.5", 4517 + "esm-env": "^1.2.2", 4518 + "fast-copy": "^3.0.2", 4519 + "fast-equals": "^5.2.2", 4520 + "nanoid": "^5.0.9", 4521 + "svelte-persisted-store": "0.12.0", 4522 + "tweakpane": "4.0.5" 4523 + }, 4524 + "engines": { 4525 + "node": ">=18.0.0 <23.0.0", 4526 + "pnpm": ">=9.0.0" 4527 + }, 4528 + "peerDependencies": { 4529 + "svelte": "^4.0.0 || ^5.0.0" 4530 + } 4531 + }, 4532 + "node_modules/svelte-tweakpane-ui/node_modules/nanoid": { 4533 + "version": "5.0.9", 4534 + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", 4535 + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", 4536 + "funding": [ 4537 + { 4538 + "type": "github", 4539 + "url": "https://github.com/sponsors/ai" 4540 + } 4541 + ], 4542 + "bin": { 4543 + "nanoid": "bin/nanoid.js" 4544 + }, 4545 + "engines": { 4546 + "node": "^18 || >=20" 4547 + } 4548 + }, 4549 + "node_modules/svelte-tweakpane-ui/node_modules/tweakpane": { 4550 + "version": "4.0.5", 4551 + "resolved": "https://registry.npmjs.org/tweakpane/-/tweakpane-4.0.5.tgz", 4552 + "integrity": "sha512-rxEXdSI+ArlG1RyO6FghC4ZUX8JkEfz8F3v1JuteXSV0pEtHJzyo07fcDG+NsJfN5L39kSbCYbB9cBGHyuI/tQ==", 4553 + "funding": { 4554 + "url": "https://github.com/sponsors/cocopon" 4555 + } 4556 + }, 4557 + "node_modules/tailwindcss": { 4558 + "version": "3.4.17", 4559 + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", 4560 + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", 4561 + "dev": true, 4562 + "dependencies": { 4563 + "@alloc/quick-lru": "^5.2.0", 4564 + "arg": "^5.0.2", 4565 + "chokidar": "^3.6.0", 4566 + "didyoumean": "^1.2.2", 4567 + "dlv": "^1.1.3", 4568 + "fast-glob": "^3.3.2", 4569 + "glob-parent": "^6.0.2", 4570 + "is-glob": "^4.0.3", 4571 + "jiti": "^1.21.6", 4572 + "lilconfig": "^3.1.3", 4573 + "micromatch": "^4.0.8", 4574 + "normalize-path": "^3.0.0", 4575 + "object-hash": "^3.0.0", 4576 + "picocolors": "^1.1.1", 4577 + "postcss": "^8.4.47", 4578 + "postcss-import": "^15.1.0", 4579 + "postcss-js": "^4.0.1", 4580 + "postcss-load-config": "^4.0.2", 4581 + "postcss-nested": "^6.2.0", 4582 + "postcss-selector-parser": "^6.1.2", 4583 + "resolve": "^1.22.8", 4584 + "sucrase": "^3.35.0" 4585 + }, 4586 + "bin": { 4587 + "tailwind": "lib/cli.js", 4588 + "tailwindcss": "lib/cli.js" 4589 + }, 4590 + "engines": { 4591 + "node": ">=14.0.0" 4592 + } 4593 + }, 4594 + "node_modules/tailwindcss/node_modules/chokidar": { 4595 + "version": "3.6.0", 4596 + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 4597 + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 4598 + "dev": true, 4599 + "dependencies": { 4600 + "anymatch": "~3.1.2", 4601 + "braces": "~3.0.2", 4602 + "glob-parent": "~5.1.2", 4603 + "is-binary-path": "~2.1.0", 4604 + "is-glob": "~4.0.1", 4605 + "normalize-path": "~3.0.0", 4606 + "readdirp": "~3.6.0" 4607 + }, 4608 + "engines": { 4609 + "node": ">= 8.10.0" 4610 + }, 4611 + "funding": { 4612 + "url": "https://paulmillr.com/funding/" 4613 + }, 4614 + "optionalDependencies": { 4615 + "fsevents": "~2.3.2" 4616 + } 4617 + }, 4618 + "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { 4619 + "version": "5.1.2", 4620 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 4621 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 4622 + "dev": true, 4623 + "dependencies": { 4624 + "is-glob": "^4.0.1" 4625 + }, 4626 + "engines": { 4627 + "node": ">= 6" 4628 + } 4629 + }, 4630 + "node_modules/tailwindcss/node_modules/lilconfig": { 4631 + "version": "3.1.3", 4632 + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", 4633 + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", 4634 + "dev": true, 4635 + "engines": { 4636 + "node": ">=14" 4637 + }, 4638 + "funding": { 4639 + "url": "https://github.com/sponsors/antonk52" 4640 + } 4641 + }, 4642 + "node_modules/tailwindcss/node_modules/picomatch": { 4643 + "version": "2.3.1", 4644 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 4645 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 4646 + "dev": true, 4647 + "engines": { 4648 + "node": ">=8.6" 4649 + }, 4650 + "funding": { 4651 + "url": "https://github.com/sponsors/jonschlinkert" 4652 + } 4653 + }, 4654 + "node_modules/tailwindcss/node_modules/postcss-load-config": { 4655 + "version": "4.0.2", 4656 + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", 4657 + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", 4658 + "dev": true, 4659 + "funding": [ 4660 + { 4661 + "type": "opencollective", 4662 + "url": "https://opencollective.com/postcss/" 4663 + }, 4664 + { 4665 + "type": "github", 4666 + "url": "https://github.com/sponsors/ai" 4667 + } 4668 + ], 4669 + "dependencies": { 4670 + "lilconfig": "^3.0.0", 4671 + "yaml": "^2.3.4" 4672 + }, 4673 + "engines": { 4674 + "node": ">= 14" 4675 + }, 4676 + "peerDependencies": { 4677 + "postcss": ">=8.0.9", 4678 + "ts-node": ">=9.0.0" 4679 + }, 4680 + "peerDependenciesMeta": { 4681 + "postcss": { 4682 + "optional": true 4683 + }, 4684 + "ts-node": { 4685 + "optional": true 4686 + } 4687 + } 4688 + }, 4689 + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { 4690 + "version": "6.1.2", 4691 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", 4692 + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", 4693 + "dev": true, 4694 + "dependencies": { 4695 + "cssesc": "^3.0.0", 4696 + "util-deprecate": "^1.0.2" 4697 + }, 4698 + "engines": { 4699 + "node": ">=4" 4700 + } 4701 + }, 4702 + "node_modules/tailwindcss/node_modules/readdirp": { 4703 + "version": "3.6.0", 4704 + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 4705 + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 4706 + "dev": true, 4707 + "dependencies": { 4708 + "picomatch": "^2.2.1" 4709 + }, 4710 + "engines": { 4711 + "node": ">=8.10.0" 4712 + } 4713 + }, 4714 + "node_modules/thenify": { 4715 + "version": "3.3.1", 4716 + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 4717 + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 4718 + "dev": true, 4719 + "dependencies": { 4720 + "any-promise": "^1.0.0" 4721 + } 4722 + }, 4723 + "node_modules/thenify-all": { 4724 + "version": "1.6.0", 4725 + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 4726 + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 4727 + "dev": true, 4728 + "dependencies": { 4729 + "thenify": ">= 3.1.0 < 4" 4730 + }, 4731 + "engines": { 4732 + "node": ">=0.8" 4733 + } 4734 + }, 4735 + "node_modules/three": { 4736 + "version": "0.173.0", 4737 + "resolved": "https://registry.npmjs.org/three/-/three-0.173.0.tgz", 4738 + "integrity": "sha512-AUwVmViIEUgBwxJJ7stnF0NkPpZxx1aZ6WiAbQ/Qq61h6I9UR4grXtZDmO8mnlaNORhHnIBlXJ1uBxILEKuVyw==" 4739 + }, 4740 + "node_modules/three-instanced-uniforms-mesh": { 4741 + "version": "0.52.0", 4742 + "resolved": "https://registry.npmjs.org/three-instanced-uniforms-mesh/-/three-instanced-uniforms-mesh-0.52.0.tgz", 4743 + "integrity": "sha512-YuJigan74qBmt2X8XX4DCxGl42GQXQZWSyy8jos1kqjPyzR7IVl9Jk4HvOGEzb5pI7phVcaArImhaW2FZH3zpA==", 4744 + "dependencies": { 4745 + "troika-three-utils": "^0.52.0" 4746 + }, 4747 + "peerDependencies": { 4748 + "three": ">=0.125.0" 4749 + } 4750 + }, 4751 + "node_modules/three-mesh-bvh": { 4752 + "version": "0.7.6", 4753 + "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.7.6.tgz", 4754 + "integrity": "sha512-rCjsnxEqR9r1/C/lCqzGLS67NDty/S/eT6rAJfDvsanrIctTWdNoR4ZOGWewCB13h1QkVo2BpmC0wakj1+0m8A==", 4755 + "peerDependencies": { 4756 + "three": ">= 0.151.0" 4757 + } 4758 + }, 4759 + "node_modules/three-perf": { 4760 + "version": "1.0.10", 4761 + "resolved": "git+ssh://git@github.com/jerzakm/three-perf.git#322d7d38a17069f2b6e9734913edad0fc4a29169", 4762 + "license": "MIT", 4763 + "dependencies": { 4764 + "troika-three-text": "^0.52.0", 4765 + "tweakpane": "^3.1.10" 4766 + }, 4767 + "peerDependencies": { 4768 + "three": ">=0.170" 4769 + } 4770 + }, 4771 + "node_modules/three-perf/node_modules/troika-three-text": { 4772 + "version": "0.52.3", 4773 + "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.52.3.tgz", 4774 + "integrity": "sha512-jLhiwgV8kEkwWjvK12f2fHVpbOC75p7SgPQ0cgcz+IMtN5Bdyg4EuFdwuTOVu9ga8UeYdKBpzd1AxviyixtYTQ==", 4775 + "dependencies": { 4776 + "bidi-js": "^1.0.2", 4777 + "troika-three-utils": "^0.52.0", 4778 + "troika-worker-utils": "^0.52.0", 4779 + "webgl-sdf-generator": "1.1.1" 4780 + }, 4781 + "peerDependencies": { 4782 + "three": ">=0.125.0" 4783 + } 4784 + }, 4785 + "node_modules/three-perf/node_modules/troika-worker-utils": { 4786 + "version": "0.52.0", 4787 + "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.52.0.tgz", 4788 + "integrity": "sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==" 4789 + }, 4790 + "node_modules/three-perf/node_modules/tweakpane": { 4791 + "version": "3.1.10", 4792 + "resolved": "https://registry.npmjs.org/tweakpane/-/tweakpane-3.1.10.tgz", 4793 + "integrity": "sha512-rqwnl/pUa7+inhI2E9ayGTqqP0EPOOn/wVvSWjZsRbZUItzNShny7pzwL3hVlaN4m9t/aZhsP0aFQ9U5VVR2VQ==", 4794 + "funding": { 4795 + "url": "https://github.com/sponsors/cocopon" 4796 + } 4797 + }, 4798 + "node_modules/three-viewport-gizmo": { 4799 + "version": "2.0.2", 4800 + "resolved": "https://registry.npmjs.org/three-viewport-gizmo/-/three-viewport-gizmo-2.0.2.tgz", 4801 + "integrity": "sha512-PtdBqtPZbXoQgxXAla393iPs+ox0HbZVKqA1ym3w4z7Og0Ihevg/odxjEYA9R6xwtIqS5qgsz8RyK3z8lFHtpQ==", 4802 + "peerDependencies": { 4803 + "three": ">=0.162.0 <1.0.0" 4804 + } 4805 + }, 4806 + "node_modules/to-regex-range": { 4807 + "version": "5.0.1", 4808 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 4809 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 4810 + "devOptional": true, 4811 + "dependencies": { 4812 + "is-number": "^7.0.0" 4813 + }, 4814 + "engines": { 4815 + "node": ">=8.0" 4816 + } 4817 + }, 4818 + "node_modules/totalist": { 4819 + "version": "3.0.1", 4820 + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", 4821 + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", 4822 + "engines": { 4823 + "node": ">=6" 4824 + } 4825 + }, 4826 + "node_modules/troika-three-text": { 4827 + "version": "0.50.3", 4828 + "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.50.3.tgz", 4829 + "integrity": "sha512-UzbIrgV3fOFmFbFfWIBcBEXEyQovs+LLu15E5xGpSQbo1oZH49A+J9bul4H8H0xLtaLkRTO+LqEsmkaeDtZQfg==", 4830 + "dependencies": { 4831 + "bidi-js": "^1.0.2", 4832 + "troika-three-utils": "^0.50.3", 4833 + "troika-worker-utils": "^0.50.0", 4834 + "webgl-sdf-generator": "1.1.1" 4835 + }, 4836 + "peerDependencies": { 4837 + "three": ">=0.125.0" 4838 + } 4839 + }, 4840 + "node_modules/troika-three-text/node_modules/troika-three-utils": { 4841 + "version": "0.50.3", 4842 + "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.50.3.tgz", 4843 + "integrity": "sha512-asQWCESikU58y9cz4OgIjCRlITkDTwf7ds8T9IyWxn7OB2A7XItg2UbHjfexwooTefM+BYbEC4ZKxOUBfbNVLA==", 4844 + "peerDependencies": { 4845 + "three": ">=0.125.0" 4846 + } 4847 + }, 4848 + "node_modules/troika-three-utils": { 4849 + "version": "0.52.0", 4850 + "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.52.0.tgz", 4851 + "integrity": "sha512-00oxqIIehtEKInOTQekgyknBuRUj1POfOUE2q1OmL+Xlpp4gIu+S0oA0schTyXsDS4d9DkR04iqCdD40rF5R6w==", 4852 + "peerDependencies": { 4853 + "three": ">=0.125.0" 4854 + } 4855 + }, 4856 + "node_modules/troika-worker-utils": { 4857 + "version": "0.50.0", 4858 + "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.50.0.tgz", 4859 + "integrity": "sha512-BxNk0w6+d9NYd7El/3RzlzH/F2vovJI1FX9Zb+D7fArVM1EsUXj6+wVwJSrfucy6/HYhfbZPu/lD6Miiw9Byiw==" 4860 + }, 4861 + "node_modules/ts-api-utils": { 4862 + "version": "2.0.1", 4863 + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", 4864 + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", 4865 + "dev": true, 4866 + "engines": { 4867 + "node": ">=18.12" 4868 + }, 4869 + "peerDependencies": { 4870 + "typescript": ">=4.8.4" 4871 + } 4872 + }, 4873 + "node_modules/ts-interface-checker": { 4874 + "version": "0.1.13", 4875 + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 4876 + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 4877 + "dev": true 4878 + }, 4879 + "node_modules/tweakpane": { 4880 + "version": "4.0.3", 4881 + "resolved": "https://registry.npmjs.org/tweakpane/-/tweakpane-4.0.3.tgz", 4882 + "integrity": "sha512-BlcWOAe8oe4c+k9pmLBARGdWB6MVZMszayekkixQXTgkxTaYoTUpHpwVEp+3HkoamZkomodpbBf0CkguIHTgLg==", 4883 + "funding": { 4884 + "url": "https://github.com/sponsors/cocopon" 4885 + } 4886 + }, 4887 + "node_modules/type-check": { 4888 + "version": "0.4.0", 4889 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 4890 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 4891 + "dev": true, 4892 + "dependencies": { 4893 + "prelude-ls": "^1.2.1" 4894 + }, 4895 + "engines": { 4896 + "node": ">= 0.8.0" 4897 + } 4898 + }, 4899 + "node_modules/typescript": { 4900 + "version": "5.7.3", 4901 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", 4902 + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", 4903 + "dev": true, 4904 + "bin": { 4905 + "tsc": "bin/tsc", 4906 + "tsserver": "bin/tsserver" 4907 + }, 4908 + "engines": { 4909 + "node": ">=14.17" 4910 + } 4911 + }, 4912 + "node_modules/typescript-eslint": { 4913 + "version": "8.22.0", 4914 + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.22.0.tgz", 4915 + "integrity": "sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw==", 4916 + "dev": true, 4917 + "dependencies": { 4918 + "@typescript-eslint/eslint-plugin": "8.22.0", 4919 + "@typescript-eslint/parser": "8.22.0", 4920 + "@typescript-eslint/utils": "8.22.0" 4921 + }, 4922 + "engines": { 4923 + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 4924 + }, 4925 + "funding": { 4926 + "type": "opencollective", 4927 + "url": "https://opencollective.com/typescript-eslint" 4928 + }, 4929 + "peerDependencies": { 4930 + "eslint": "^8.57.0 || ^9.0.0", 4931 + "typescript": ">=4.8.4 <5.8.0" 4932 + } 4933 + }, 4934 + "node_modules/update-browserslist-db": { 4935 + "version": "1.1.2", 4936 + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", 4937 + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", 4938 + "dev": true, 4939 + "funding": [ 4940 + { 4941 + "type": "opencollective", 4942 + "url": "https://opencollective.com/browserslist" 4943 + }, 4944 + { 4945 + "type": "tidelift", 4946 + "url": "https://tidelift.com/funding/github/npm/browserslist" 4947 + }, 4948 + { 4949 + "type": "github", 4950 + "url": "https://github.com/sponsors/ai" 4951 + } 4952 + ], 4953 + "dependencies": { 4954 + "escalade": "^3.2.0", 4955 + "picocolors": "^1.1.1" 4956 + }, 4957 + "bin": { 4958 + "update-browserslist-db": "cli.js" 4959 + }, 4960 + "peerDependencies": { 4961 + "browserslist": ">= 4.21.0" 4962 + } 4963 + }, 4964 + "node_modules/uri-js": { 4965 + "version": "4.4.1", 4966 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 4967 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 4968 + "dev": true, 4969 + "dependencies": { 4970 + "punycode": "^2.1.0" 4971 + } 4972 + }, 4973 + "node_modules/util-deprecate": { 4974 + "version": "1.0.2", 4975 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4976 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 4977 + "dev": true 4978 + }, 4979 + "node_modules/vite": { 4980 + "version": "6.0.11", 4981 + "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz", 4982 + "integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==", 4983 + "dependencies": { 4984 + "esbuild": "^0.24.2", 4985 + "postcss": "^8.4.49", 4986 + "rollup": "^4.23.0" 4987 + }, 4988 + "bin": { 4989 + "vite": "bin/vite.js" 4990 + }, 4991 + "engines": { 4992 + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 4993 + }, 4994 + "funding": { 4995 + "url": "https://github.com/vitejs/vite?sponsor=1" 4996 + }, 4997 + "optionalDependencies": { 4998 + "fsevents": "~2.3.3" 4999 + }, 5000 + "peerDependencies": { 5001 + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 5002 + "jiti": ">=1.21.0", 5003 + "less": "*", 5004 + "lightningcss": "^1.21.0", 5005 + "sass": "*", 5006 + "sass-embedded": "*", 5007 + "stylus": "*", 5008 + "sugarss": "*", 5009 + "terser": "^5.16.0", 5010 + "tsx": "^4.8.1", 5011 + "yaml": "^2.4.2" 5012 + }, 5013 + "peerDependenciesMeta": { 5014 + "@types/node": { 5015 + "optional": true 5016 + }, 5017 + "jiti": { 5018 + "optional": true 5019 + }, 5020 + "less": { 5021 + "optional": true 5022 + }, 5023 + "lightningcss": { 5024 + "optional": true 5025 + }, 5026 + "sass": { 5027 + "optional": true 5028 + }, 5029 + "sass-embedded": { 5030 + "optional": true 5031 + }, 5032 + "stylus": { 5033 + "optional": true 5034 + }, 5035 + "sugarss": { 5036 + "optional": true 5037 + }, 5038 + "terser": { 5039 + "optional": true 5040 + }, 5041 + "tsx": { 5042 + "optional": true 5043 + }, 5044 + "yaml": { 5045 + "optional": true 5046 + } 5047 + } 5048 + }, 5049 + "node_modules/vite-dev-rpc": { 5050 + "version": "0.1.7", 5051 + "resolved": "https://registry.npmjs.org/vite-dev-rpc/-/vite-dev-rpc-0.1.7.tgz", 5052 + "integrity": "sha512-e5HCaGI/5cHSB6wzhQyaH/JhUsPLI+TylHYp8UxAypeZaFoEHvBvRPD0nTYQtUEqeZb8qSznbVM/VznKSVC8/Q==", 5053 + "dependencies": { 5054 + "birpc": "^0.2.19", 5055 + "vite-hot-client": "^0.2.4" 5056 + }, 5057 + "funding": { 5058 + "url": "https://github.com/sponsors/antfu" 5059 + }, 5060 + "peerDependencies": { 5061 + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1" 5062 + } 5063 + }, 5064 + "node_modules/vite-hot-client": { 5065 + "version": "0.2.4", 5066 + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.4.tgz", 5067 + "integrity": "sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==", 5068 + "funding": { 5069 + "url": "https://github.com/sponsors/antfu" 5070 + }, 5071 + "peerDependencies": { 5072 + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0" 5073 + } 5074 + }, 5075 + "node_modules/vitefu": { 5076 + "version": "1.0.5", 5077 + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.5.tgz", 5078 + "integrity": "sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==", 5079 + "peerDependencies": { 5080 + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" 5081 + }, 5082 + "peerDependenciesMeta": { 5083 + "vite": { 5084 + "optional": true 5085 + } 5086 + } 5087 + }, 5088 + "node_modules/webgl-sdf-generator": { 5089 + "version": "1.1.1", 5090 + "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz", 5091 + "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==" 5092 + }, 5093 + "node_modules/which": { 5094 + "version": "2.0.2", 5095 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 5096 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 5097 + "dev": true, 5098 + "dependencies": { 5099 + "isexe": "^2.0.0" 5100 + }, 5101 + "bin": { 5102 + "node-which": "bin/node-which" 5103 + }, 5104 + "engines": { 5105 + "node": ">= 8" 5106 + } 5107 + }, 5108 + "node_modules/wiggle": { 5109 + "version": "0.0.17", 5110 + "resolved": "https://registry.npmjs.org/wiggle/-/wiggle-0.0.17.tgz", 5111 + "integrity": "sha512-vF4Kx9a+lHVWia3ZLhZcMnam9VhFGND0+9WYnHq0rcnYDLlbL4iFzYUXJk2cx5reDolwt+EN5mhUP3uHGhWtRQ==", 5112 + "peerDependencies": { 5113 + "three": ">= 0.152.0" 5114 + } 5115 + }, 5116 + "node_modules/word-wrap": { 5117 + "version": "1.2.5", 5118 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 5119 + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 5120 + "dev": true, 5121 + "engines": { 5122 + "node": ">=0.10.0" 5123 + } 5124 + }, 5125 + "node_modules/wrap-ansi": { 5126 + "version": "8.1.0", 5127 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 5128 + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 5129 + "dev": true, 5130 + "dependencies": { 5131 + "ansi-styles": "^6.1.0", 5132 + "string-width": "^5.0.1", 5133 + "strip-ansi": "^7.0.1" 5134 + }, 5135 + "engines": { 5136 + "node": ">=12" 5137 + }, 5138 + "funding": { 5139 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 5140 + } 5141 + }, 5142 + "node_modules/wrap-ansi-cjs": { 5143 + "name": "wrap-ansi", 5144 + "version": "7.0.0", 5145 + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 5146 + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 5147 + "dev": true, 5148 + "dependencies": { 5149 + "ansi-styles": "^4.0.0", 5150 + "string-width": "^4.1.0", 5151 + "strip-ansi": "^6.0.0" 5152 + }, 5153 + "engines": { 5154 + "node": ">=10" 5155 + }, 5156 + "funding": { 5157 + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 5158 + } 5159 + }, 5160 + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 5161 + "version": "5.0.1", 5162 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 5163 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 5164 + "dev": true, 5165 + "engines": { 5166 + "node": ">=8" 5167 + } 5168 + }, 5169 + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 5170 + "version": "8.0.0", 5171 + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 5172 + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 5173 + "dev": true 5174 + }, 5175 + "node_modules/wrap-ansi-cjs/node_modules/string-width": { 5176 + "version": "4.2.3", 5177 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 5178 + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 5179 + "dev": true, 5180 + "dependencies": { 5181 + "emoji-regex": "^8.0.0", 5182 + "is-fullwidth-code-point": "^3.0.0", 5183 + "strip-ansi": "^6.0.1" 5184 + }, 5185 + "engines": { 5186 + "node": ">=8" 5187 + } 5188 + }, 5189 + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 5190 + "version": "6.0.1", 5191 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 5192 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 5193 + "dev": true, 5194 + "dependencies": { 5195 + "ansi-regex": "^5.0.1" 5196 + }, 5197 + "engines": { 5198 + "node": ">=8" 5199 + } 5200 + }, 5201 + "node_modules/wrap-ansi/node_modules/ansi-styles": { 5202 + "version": "6.2.1", 5203 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 5204 + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 5205 + "dev": true, 5206 + "engines": { 5207 + "node": ">=12" 5208 + }, 5209 + "funding": { 5210 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 5211 + } 5212 + }, 5213 + "node_modules/yaml": { 5214 + "version": "2.7.0", 5215 + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", 5216 + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", 5217 + "devOptional": true, 5218 + "bin": { 5219 + "yaml": "bin.mjs" 5220 + }, 5221 + "engines": { 5222 + "node": ">= 14" 5223 + } 5224 + }, 5225 + "node_modules/yocto-queue": { 5226 + "version": "0.1.0", 5227 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 5228 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 5229 + "dev": true, 5230 + "engines": { 5231 + "node": ">=10" 5232 + }, 5233 + "funding": { 5234 + "url": "https://github.com/sponsors/sindresorhus" 5235 + } 5236 + }, 5237 + "node_modules/zimmerframe": { 5238 + "version": "1.1.2", 5239 + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", 5240 + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==" 5241 + } 5242 + } 1467 5243 }
+48 -24
package.json
··· 1 1 { 2 - "name": "tiny-creature", 3 - "private": true, 4 - "version": "0.0.0", 5 - "type": "module", 6 - "scripts": { 7 - "dev": "vite", 8 - "build": "tsc && vite build", 9 - "preview": "vite preview" 10 - }, 11 - "devDependencies": { 12 - "typescript": "~5.6.2", 13 - "vite": "^6.0.5" 14 - }, 15 - "dependencies": { 16 - "@tailwindcss/vite": "^4.0.3", 17 - "@types/three": "^0.173.0", 18 - "pixi.js": "^8.7.3", 19 - "prettier": "^3.4.2", 20 - "tailwindcss": "^4.0.3", 21 - "three": "^0.173.0", 22 - "wiggle": "^0.0.17" 23 - }, 24 - "license": "MIT" 25 - } 2 + "name": "tiny-creature", 3 + "private": true, 4 + "version": "0.0.1", 5 + "type": "module", 6 + "scripts": { 7 + "dev": "vite dev", 8 + "build": "vite build", 9 + "preview": "vite preview", 10 + "prepare": "svelte-kit sync || echo ''", 11 + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 12 + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 13 + "format": "prettier --write .", 14 + "lint": "prettier --check . && eslint ." 15 + }, 16 + "devDependencies": { 17 + "@eslint/compat": "^1.2.5", 18 + "@eslint/js": "^9.18.0", 19 + "@sveltejs/adapter-auto": "^4.0.0", 20 + "@sveltejs/kit": "^2.16.0", 21 + "@sveltejs/vite-plugin-svelte": "^5.0.0", 22 + "@tailwindcss/forms": "^0.5.10", 23 + "@tailwindcss/typography": "^0.5.16", 24 + "autoprefixer": "^10.4.20", 25 + "eslint": "^9.18.0", 26 + "eslint-config-prettier": "^10.0.1", 27 + "eslint-plugin-svelte": "^2.46.1", 28 + "globals": "^15.14.0", 29 + "prettier": "^3.4.2", 30 + "prettier-plugin-svelte": "^3.3.3", 31 + "prettier-plugin-tailwindcss": "^0.6.10", 32 + "svelte": "^5.0.0", 33 + "svelte-check": "^4.0.0", 34 + "tailwindcss": "^3.4.17", 35 + "typescript": "^5.0.0", 36 + "typescript-eslint": "^8.20.0", 37 + "vite": "^6.0.0" 38 + }, 39 + "dependencies": { 40 + "@sveltejs/adapter-static": "^3.0.8", 41 + "@threlte/core": "^8.0.1", 42 + "@threlte/extras": "^9.0.1", 43 + "@threlte/studio": "^0.1.3", 44 + "@types/three": "^0.173.0", 45 + "pixi.js": "^8.7.3", 46 + "three": "^0.173.0", 47 + "wiggle": "^0.0.17" 48 + } 49 + }
+6
postcss.config.js
··· 1 + export default { 2 + plugins: { 3 + tailwindcss: {}, 4 + autoprefixer: {} 5 + } 6 + };
public/model.glb static/model.glb
public/room.glb static/room.glb
+3
src/app.css
··· 1 + @import 'tailwindcss/base'; 2 + @import 'tailwindcss/components'; 3 + @import 'tailwindcss/utilities';
+13
src/app.d.ts
··· 1 + // See https://svelte.dev/docs/kit/types#app.d.ts 2 + // for information about these interfaces 3 + declare global { 4 + namespace App { 5 + // interface Error {} 6 + // interface Locals {} 7 + // interface PageData {} 8 + // interface PageState {} 9 + // interface Platform {} 10 + } 11 + } 12 + 13 + export {};
+12
src/app.html
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="utf-8" /> 5 + <link rel="icon" href="%sveltekit.assets%/favicon.png" /> 6 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 7 + %sveltekit.head% 8 + </head> 9 + <body data-sveltekit-preload-data="hover" class="bg-stone-950"> 10 + <div style="display: contents">%sveltekit.body%</div> 11 + </body> 12 + </html>
src/face/eye.ts src/lib/face/eye.ts
-58
src/face/face.ts
··· 1 - import { Application, Graphics, Renderer } from "pixi.js"; 2 - import Eye from "./eye"; 3 - import Mouth from "./mouth"; 4 - 5 - let leftEye: Eye; 6 - let rightEye: Eye; 7 - 8 - let mouth: Mouth; 9 - 10 - export async function createFaceTexture({ 11 - width = 512, 12 - height = 512, 13 - }: { 14 - width?: number; 15 - height?: number; 16 - }): Promise<{ app: Application<Renderer> }> { 17 - const app = new Application(); 18 - 19 - await app.init({ 20 - width, 21 - height, 22 - background: "#db2777", 23 - }); 24 - 25 - rightEye = new Eye({ 26 - x: width * 0.5 + 75, 27 - y: height * 0.5 + 100, 28 - size: 50, 29 - }); 30 - 31 - leftEye = new Eye({ 32 - x: width * 0.5 - 75, 33 - y: height * 0.5 + 100, 34 - size: 50, 35 - }); 36 - 37 - app.stage.addChild(rightEye.container); 38 - app.stage.addChild(leftEye.container); 39 - 40 - mouth = new Mouth({ 41 - x: width * 0.5, 42 - y: height * 0.5 - 20, 43 - size: 50, 44 - }); 45 - app.stage.addChild(mouth.container); 46 - 47 - return { 48 - app, 49 - }; 50 - } 51 - 52 - export function updateFace(dt: number, x: number, y: number) { 53 - leftEye.lookAt(x, y); 54 - rightEye.lookAt(x, y); 55 - 56 - leftEye.update(dt); 57 - rightEye.update(dt); 58 - }
src/face/math-helper.ts src/lib/face/math-helper.ts
src/face/mouth.ts src/lib/face/mouth.ts
+80
src/lib/Creature.svelte
··· 1 + <script lang="ts"> 2 + import { GLTFLoader } from 'three/examples/jsm/Addons.js'; 3 + import * as THREE from 'three'; 4 + // @ts-ignore 5 + import { WiggleBone } from 'wiggle'; 6 + import { onMount } from 'svelte'; 7 + import { createFaceTexture, updateFace } from './face/face'; 8 + import { T, useTask, useThrelte } from '@threlte/core'; 9 + 10 + const { scene } = useThrelte(); 11 + 12 + let rootBone: THREE.Bone; 13 + const wiggleBones: WiggleBone[] = []; 14 + let creature: THREE.Group; 15 + 16 + let texture: THREE.CanvasTexture; 17 + 18 + onMount(async () => { 19 + const { app } = await createFaceTexture({ 20 + width: 512, 21 + height: 512 22 + }); 23 + 24 + texture = new THREE.CanvasTexture(app.canvas); 25 + 26 + const loader = new GLTFLoader(); 27 + 28 + loader.load('/tiny-creature/model.glb', ({ scene: obj }) => { 29 + const mesh = obj.getObjectByName('Icosphere'); 30 + if (!mesh) return; 31 + 32 + creature = obj; 33 + 34 + creature.position.y = 0.5; 35 + 36 + if (mesh instanceof THREE.Mesh) { 37 + mesh.material = new THREE.MeshStandardMaterial({ 38 + map: texture, 39 + }); 40 + } 41 + 42 + // obj.rotation.y = -Math.PI / 2; 43 + // obj.lookAt(camera.position); 44 + 45 + if (mesh instanceof THREE.SkinnedMesh) { 46 + 47 + mesh.skeleton.bones.forEach((bone) => { 48 + if (!(bone.parent instanceof THREE.Bone) || !bone.parent?.isBone) { 49 + rootBone = bone; 50 + 51 + rootBone.rotation.y = -Math.PI / 2; 52 + } else { 53 + const wiggleBone = new WiggleBone(bone, { 54 + velocity: 0.4 55 + }); 56 + wiggleBones.push(wiggleBone); 57 + } 58 + }); 59 + } 60 + }); 61 + }); 62 + 63 + let total = 0; 64 + useTask((dt) => { 65 + total += dt; 66 + wiggleBones.forEach((wiggleBone) => { 67 + wiggleBone.update(); 68 + }); 69 + 70 + if (texture) { 71 + updateFace(dt, 0, 0); 72 + texture.needsUpdate = true; 73 + } 74 + 75 + if (rootBone) rootBone.position.x = Math.sin(total * 5) * 0.5; 76 + }); 77 + </script> 78 + 79 + 80 + <T is={creature} />
+163
src/lib/Room.svelte
··· 1 + <!-- 2 + Auto-generated by: https://github.com/threlte/threlte/tree/main/packages/gltf 3 + Command: npx @threlte/gltf@3.0.0 room.glb -t -s 4 + --> 5 + 6 + <script lang="ts"> 7 + import * as THREE from 'three' 8 + 9 + import type { Snippet } from 'svelte' 10 + import { T, type Props } from '@threlte/core' 11 + import { useGltf } from '@threlte/extras' 12 + 13 + let { 14 + fallback, 15 + error, 16 + children, 17 + ref = $bindable(), 18 + ...props 19 + }: Props<THREE.Group> & { 20 + ref?: THREE.Group 21 + children?: Snippet<[{ ref: THREE.Group }]> 22 + fallback?: Snippet 23 + error?: Snippet<[{ error: Error }]> 24 + } = $props() 25 + 26 + type GLTFResult = { 27 + nodes: { 28 + Cube: THREE.Mesh 29 + couch001: THREE.Mesh 30 + armchair001: THREE.Mesh 31 + chair_C001: THREE.Mesh 32 + cabinet_medium_decorated001: THREE.Mesh 33 + table_small001: THREE.Mesh 34 + lamp_desk001: THREE.Mesh 35 + rug_rectangle_stripes_A001: THREE.Mesh 36 + shelf_B_small_decorated001: THREE.Mesh 37 + pictureframe_large_A001: THREE.Mesh 38 + pictureframe_medium001: THREE.Mesh 39 + pictureframe_large_B001: THREE.Mesh 40 + lamp_standing001: THREE.Mesh 41 + } 42 + materials: { 43 + furniture_texture: THREE.MeshStandardMaterial 44 + } 45 + } 46 + 47 + const gltf = useGltf<GLTFResult>('/tiny-creature/room.glb') 48 + </script> 49 + 50 + <T.Group 51 + bind:ref 52 + dispose={false} 53 + {...props} 54 + > 55 + {#await gltf} 56 + {@render fallback?.()} 57 + {:then gltf} 58 + <T.Mesh 59 + castShadow 60 + receiveShadow 61 + geometry={gltf.nodes.Cube.geometry} 62 + position={[0, 2, 0]} 63 + scale={[1, 0.5, 1]} 64 + > 65 + <T.MeshStandardMaterial side={THREE.DoubleSide} envMapIntensity={0.1} /> 66 + </T.Mesh> 67 + <T.Mesh 68 + castShadow 69 + receiveShadow 70 + geometry={gltf.nodes.couch001.geometry} 71 + material={gltf.materials.furniture_texture} 72 + position={[3.08, 0, -0.64]} 73 + rotation={[0, -1.53, 0]} 74 + /> 75 + <T.Mesh 76 + castShadow 77 + receiveShadow 78 + geometry={gltf.nodes.armchair001.geometry} 79 + material={gltf.materials.furniture_texture} 80 + position={[1.4, 0, -3.1]} 81 + rotation={[0, -0.23, 0]} 82 + /> 83 + <T.Mesh 84 + castShadow 85 + receiveShadow 86 + geometry={gltf.nodes.chair_C001.geometry} 87 + material={gltf.materials.furniture_texture} 88 + position={[-3.11, 0, -3.01]} 89 + rotation={[0, 0.47, 0]} 90 + /> 91 + <T.Mesh 92 + castShadow 93 + receiveShadow 94 + geometry={gltf.nodes.cabinet_medium_decorated001.geometry} 95 + material={gltf.materials.furniture_texture} 96 + position={[-1.02, 0, -3.56]} 97 + /> 98 + <T.Mesh 99 + castShadow 100 + receiveShadow 101 + geometry={gltf.nodes.table_small001.geometry} 102 + material={gltf.materials.furniture_texture} 103 + position={[3.2, 0, 1.64]} 104 + /> 105 + <T.Mesh 106 + castShadow 107 + receiveShadow 108 + geometry={gltf.nodes.lamp_desk001.geometry} 109 + material={gltf.materials.furniture_texture} 110 + position={[3.13, 0.97, 1.67]} 111 + rotation={[Math.PI, -1.17, Math.PI]} 112 + /> 113 + <T.Mesh 114 + castShadow 115 + receiveShadow 116 + geometry={gltf.nodes.rug_rectangle_stripes_A001.geometry} 117 + material={gltf.materials.furniture_texture} 118 + position={[-0.64, 0, 1.37]} 119 + rotation={[0, -0.64, 0]} 120 + /> 121 + <T.Mesh 122 + castShadow 123 + receiveShadow 124 + geometry={gltf.nodes.shelf_B_small_decorated001.geometry} 125 + material={gltf.materials.furniture_texture} 126 + position={[4, 2.25, 2.73]} 127 + rotation={[0, -Math.PI / 2, 0]} 128 + /> 129 + <T.Mesh 130 + castShadow 131 + receiveShadow 132 + geometry={gltf.nodes.pictureframe_large_A001.geometry} 133 + material={gltf.materials.furniture_texture} 134 + position={[-2.61, 2.38, -4.02]} 135 + /> 136 + <T.Mesh 137 + castShadow 138 + receiveShadow 139 + geometry={gltf.nodes.pictureframe_medium001.geometry} 140 + material={gltf.materials.furniture_texture} 141 + position={[-1.28, 2.57, -4.03]} 142 + /> 143 + <T.Mesh 144 + castShadow 145 + receiveShadow 146 + geometry={gltf.nodes.pictureframe_large_B001.geometry} 147 + material={gltf.materials.furniture_texture} 148 + position={[4, 2.77, -0.17]} 149 + rotation={[0, -Math.PI / 2, 0]} 150 + /> 151 + <T.Mesh 152 + castShadow 153 + receiveShadow 154 + geometry={gltf.nodes.lamp_standing001.geometry} 155 + material={gltf.materials.furniture_texture} 156 + position={[3.22, 0, -3.24]} 157 + /> 158 + {:catch err} 159 + {@render error?.({ error: err })} 160 + {/await} 161 + 162 + {@render children?.({ ref })} 163 + </T.Group>
+50
src/lib/Scene.svelte
··· 1 + <script lang="ts"> 2 + import { T } from '@threlte/core'; 3 + import Creature from './Creature.svelte'; 4 + import { Environment, OrbitControls, TransformControls, VirtualEnvironment } from '@threlte/extras'; 5 + import Room from './Room.svelte'; 6 + import { DoubleSide } from 'three'; 7 + 8 + let debug = $state(false); 9 + </script> 10 + 11 + <T.PerspectiveCamera makeDefault position={[-10, 10, 10]}> 12 + <OrbitControls /> 13 + </T.PerspectiveCamera> 14 + 15 + <Creature /> 16 + 17 + <Environment isBackground={false} url={'/tiny-creature/workshop.hdr'} /> 18 + 19 + <Room /> 20 + 21 + {#snippet lightformer( 22 + color: string, 23 + shape: 'circle' | 'plane', 24 + size: number, 25 + position: [number, number, number], 26 + visible: boolean 27 + )} 28 + <T.Group {position}> 29 + {#snippet children({ ref })} 30 + {#if visible} 31 + <TransformControls object={ref} /> 32 + {/if} 33 + <T.Mesh lookAt={[0, 0, 0]}> 34 + {#if shape === 'circle'} 35 + <T.CircleGeometry args={[size / 2]} /> 36 + {:else} 37 + <T.PlaneGeometry args={[size, size]} /> 38 + {/if} 39 + <T.MeshBasicMaterial {color} side={DoubleSide} /> 40 + </T.Mesh> 41 + {/snippet} 42 + </T.Group> 43 + {/snippet} 44 + <VirtualEnvironment visible={debug}> 45 + {@render lightformer('#FFfFfF', 'plane', 20, [0, 0, -20], debug)} 46 + {@render lightformer('#FFD0CB', 'circle', 5, [0, 5, 0], debug)} 47 + {@render lightformer('#2223FF', 'plane', 8, [-3, 0, 4], debug)} 48 + 49 + <Room /> 50 + </VirtualEnvironment>
+58
src/lib/face/face.ts
··· 1 + import { Application, type Renderer } from 'pixi.js'; 2 + import Eye from './eye'; 3 + import Mouth from './mouth'; 4 + 5 + let leftEye: Eye; 6 + let rightEye: Eye; 7 + 8 + let mouth: Mouth; 9 + 10 + export async function createFaceTexture({ 11 + width = 512, 12 + height = 512 13 + }: { 14 + width?: number; 15 + height?: number; 16 + }): Promise<{ app: Application<Renderer> }> { 17 + const app = new Application(); 18 + 19 + await app.init({ 20 + width, 21 + height, 22 + background: '#db2777' 23 + }); 24 + 25 + rightEye = new Eye({ 26 + x: width * 0.5 + 75, 27 + y: height * 0.5 + 100, 28 + size: 50 29 + }); 30 + 31 + leftEye = new Eye({ 32 + x: width * 0.5 - 75, 33 + y: height * 0.5 + 100, 34 + size: 50 35 + }); 36 + 37 + app.stage.addChild(rightEye.container); 38 + app.stage.addChild(leftEye.container); 39 + 40 + mouth = new Mouth({ 41 + x: width * 0.5, 42 + y: height * 0.5 - 20, 43 + size: 50 44 + }); 45 + app.stage.addChild(mouth.container); 46 + 47 + return { 48 + app 49 + }; 50 + } 51 + 52 + export function updateFace(dt: number, x: number, y: number) { 53 + leftEye?.lookAt(x, y); 54 + rightEye?.lookAt(x, y); 55 + 56 + leftEye?.update(dt); 57 + rightEye?.update(dt); 58 + }
+1
src/lib/index.ts
··· 1 + // place files you want to import through the `$lib` alias in this folder.
+175
src/lib/main.ts
··· 1 + import * as THREE from 'three'; 2 + // @ts-ignore 3 + import { WiggleBone } from 'wiggle'; 4 + import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; 5 + import { createFaceTexture, updateFace } from './face/face'; 6 + 7 + const setup = async () => { 8 + // Create the scene 9 + const scene = new THREE.Scene(); 10 + 11 + const mouse = new THREE.Vector2(); 12 + 13 + // // Create the camera 14 + // const camera = new THREE.PerspectiveCamera( 15 + // 75, // Field of view 16 + // window.innerWidth / window.innerHeight, // Aspect ratio 17 + // ); 18 + 19 + // // Position the camera 20 + // camera.position.z = 7; 21 + // camera.position.y = 7; 22 + // camera.position.x = -7; 23 + 24 + const s = 7; 25 + const width = window.innerWidth * 0.015; 26 + const height = window.innerHeight * 0.015; 27 + const camera = new THREE.OrthographicCamera( 28 + width / -2, 29 + width / 2, 30 + height / 2, 31 + height / -2, 32 + 0.1, 33 + 100 34 + ); 35 + camera.position.z = 7; 36 + camera.position.y = 7; 37 + camera.position.x = -7; 38 + 39 + // look at the origin 40 + camera.lookAt(0, 0, 0); 41 + 42 + // Set up the renderer 43 + const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }); 44 + renderer.setSize(window.innerWidth, window.innerHeight); 45 + document.body.appendChild(renderer.domElement); 46 + 47 + // set styles of the canvas 48 + renderer.domElement.style.position = 'absolute'; 49 + renderer.domElement.style.top = '0'; 50 + renderer.domElement.style.left = '0'; 51 + renderer.domElement.style.width = '100%'; 52 + renderer.domElement.style.height = '100%'; 53 + 54 + renderer.outputColorSpace = THREE.SRGBColorSpace; // optional with post-processing 55 + renderer.toneMapping = THREE.ACESFilmicToneMapping; 56 + 57 + const { app } = await createFaceTexture({ 58 + width: 512, 59 + height: 512 60 + }); 61 + 62 + const texture = new THREE.CanvasTexture(app.canvas); 63 + 64 + const loader = new GLTFLoader(); 65 + 66 + let rootBone: THREE.Bone; 67 + const wiggleBones: WiggleBone[] = []; 68 + 69 + let creature: THREE.Group; 70 + 71 + loader.load('/tiny-creature/model.glb', ({ scene: obj }) => { 72 + const mesh = obj.getObjectByName('Icosphere'); 73 + if (!mesh) return; 74 + 75 + creature = obj; 76 + 77 + if (mesh instanceof THREE.Mesh) { 78 + mesh.material = new THREE.MeshStandardMaterial({ 79 + map: texture 80 + }); 81 + } 82 + 83 + // obj.rotation.y = -Math.PI / 2; 84 + obj.lookAt(camera.position); 85 + 86 + if (mesh instanceof THREE.SkinnedMesh) { 87 + mesh.skeleton.bones.forEach((bone) => { 88 + if (!(bone.parent instanceof THREE.Bone) || !bone.parent?.isBone) { 89 + rootBone = bone; 90 + 91 + // rootBone.rotation.x = Math.PI / 2; 92 + } else { 93 + const wiggleBone = new WiggleBone(bone, { 94 + velocity: 0.4 95 + }); 96 + wiggleBones.push(wiggleBone); 97 + } 98 + }); 99 + } 100 + 101 + scene.add(obj); 102 + }); 103 + 104 + loader.load('/tiny-creature/room.glb', ({ scene: obj }) => { 105 + scene.add(obj); 106 + console.log(obj); 107 + // find mesh named Cube 108 + const mesh = obj.getObjectByName('Cube'); 109 + if (mesh instanceof THREE.Mesh) { 110 + mesh.material = new THREE.MeshStandardMaterial({ 111 + color: 0xb1b1b1, 112 + side: THREE.DoubleSide 113 + }); 114 + } 115 + 116 + // find Light object 117 + const light = obj.getObjectByName('Light'); 118 + // add light there 119 + if (light) { 120 + const pointLight = new THREE.PointLight(0xffffff, 0.7); 121 + pointLight.position.copy(light.position); 122 + scene.add(pointLight); 123 + } 124 + 125 + // find Light object 126 + const light2 = obj.getObjectByName('Light2'); 127 + if (light2) { 128 + const pointLight = new THREE.PointLight(0xffffff, 0.4); 129 + pointLight.position.copy(light2.position); 130 + scene.add(pointLight); 131 + } 132 + }); 133 + 134 + const light = new THREE.DirectionalLight(0xffffff, 0.2); 135 + light.position.set(10, 10, 10); 136 + scene.add(light); 137 + 138 + const light2 = new THREE.DirectionalLight(0xffffff, 0.1); 139 + light2.position.set(-10, 10, -10); 140 + scene.add(light2); 141 + 142 + const ambientLight = new THREE.AmbientLight(0xffffff, 0.2); 143 + scene.add(ambientLight); 144 + 145 + let lastTime = performance.now(); 146 + const animate = () => { 147 + requestAnimationFrame(animate); 148 + texture.needsUpdate = true; 149 + 150 + const deltaTime = (performance.now() - lastTime) / 1000; 151 + lastTime = performance.now(); 152 + 153 + updateFace(deltaTime, mouse.x, mouse.y); 154 + 155 + if (rootBone) { 156 + creature.position.z = -mouse.x * 2; 157 + creature.position.x = mouse.y * 2; 158 + creature.position.y = 0.5; 159 + 160 + // look at camera 161 + creature.lookAt(new THREE.Vector3(camera.position.x, 0, camera.position.z)); 162 + rootBone.rotation.y = -Math.PI / 2; 163 + } 164 + 165 + wiggleBones.forEach((wiggleBone) => { 166 + wiggleBone.update(); 167 + }); 168 + 169 + renderer.render(scene, camera); 170 + }; 171 + 172 + animate(); 173 + }; 174 + 175 + setup();
-189
src/main.ts
··· 1 - import * as THREE from "three"; 2 - // @ts-ignore 3 - import { WiggleBone } from "wiggle"; 4 - import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js"; 5 - import { createFaceTexture, updateFace } from "./face/face"; 6 - 7 - const setup = async () => { 8 - // Create the scene 9 - const scene = new THREE.Scene(); 10 - 11 - const mouse = new THREE.Vector2(); 12 - 13 - // // Create the camera 14 - // const camera = new THREE.PerspectiveCamera( 15 - // 75, // Field of view 16 - // window.innerWidth / window.innerHeight, // Aspect ratio 17 - // ); 18 - 19 - // // Position the camera 20 - // camera.position.z = 7; 21 - // camera.position.y = 7; 22 - // camera.position.x = -7; 23 - 24 - const s = 7; 25 - const width = window.innerWidth * 0.015; 26 - const height = window.innerHeight * 0.015; 27 - const camera = new THREE.OrthographicCamera( 28 - width / -2, 29 - width / 2, 30 - height / 2, 31 - height / -2, 32 - 0.1, 33 - 100, 34 - ); 35 - camera.position.z = 7; 36 - camera.position.y = 7; 37 - camera.position.x = -7; 38 - 39 - // look at the origin 40 - camera.lookAt(0, 0, 0); 41 - 42 - // Set up the renderer 43 - const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true }); 44 - renderer.setSize(window.innerWidth, window.innerHeight); 45 - document.body.appendChild(renderer.domElement); 46 - 47 - // set styles of the canvas 48 - renderer.domElement.style.position = "absolute"; 49 - renderer.domElement.style.top = "0"; 50 - renderer.domElement.style.left = "0"; 51 - renderer.domElement.style.width = "100%"; 52 - renderer.domElement.style.height = "100%"; 53 - 54 - renderer.outputColorSpace = THREE.SRGBColorSpace; // optional with post-processing 55 - renderer.toneMapping = THREE.ACESFilmicToneMapping; 56 - 57 - const { app } = await createFaceTexture({ 58 - width: 512, 59 - height: 512, 60 - }); 61 - 62 - const texture = new THREE.CanvasTexture(app.canvas); 63 - 64 - const loader = new GLTFLoader(); 65 - 66 - let rootBone: THREE.Bone; 67 - const wiggleBones: WiggleBone[] = []; 68 - 69 - let creature: THREE.Group; 70 - 71 - loader.load("/tiny-creature/model.glb", ({ scene: obj }) => { 72 - const mesh = obj.getObjectByName("Icosphere"); 73 - if (!mesh) return; 74 - 75 - creature = obj; 76 - 77 - if (mesh instanceof THREE.Mesh) { 78 - mesh.material = new THREE.MeshStandardMaterial({ 79 - map: texture, 80 - }); 81 - } 82 - 83 - // obj.rotation.y = -Math.PI / 2; 84 - obj.lookAt(camera.position); 85 - 86 - if (mesh instanceof THREE.SkinnedMesh) { 87 - mesh.skeleton.bones.forEach((bone) => { 88 - if (!(bone.parent instanceof THREE.Bone) || !bone.parent?.isBone) { 89 - rootBone = bone; 90 - 91 - // rootBone.rotation.x = Math.PI / 2; 92 - } else { 93 - const wiggleBone = new WiggleBone(bone, { 94 - velocity: 0.4, 95 - }); 96 - wiggleBones.push(wiggleBone); 97 - } 98 - }); 99 - } 100 - 101 - scene.add(obj); 102 - }); 103 - 104 - loader.load("/tiny-creature/room.glb", ({ scene: obj }) => { 105 - scene.add(obj); 106 - console.log(obj); 107 - // find mesh named Cube 108 - const mesh = obj.getObjectByName("Cube"); 109 - if (mesh instanceof THREE.Mesh) { 110 - mesh.material = new THREE.MeshStandardMaterial({ 111 - color: 0xb1b1b1, 112 - side: THREE.DoubleSide, 113 - }); 114 - } 115 - 116 - // find Light object 117 - const light = obj.getObjectByName("Light"); 118 - // add light there 119 - if (light) { 120 - const pointLight = new THREE.PointLight(0xffffff, 0.7); 121 - pointLight.position.copy(light.position); 122 - scene.add(pointLight); 123 - } 124 - 125 - // find Light object 126 - const light2 = obj.getObjectByName("Light2"); 127 - if (light2) { 128 - const pointLight = new THREE.PointLight(0xffffff, 0.4); 129 - pointLight.position.copy(light2.position); 130 - scene.add(pointLight); 131 - } 132 - }); 133 - 134 - const light = new THREE.DirectionalLight(0xffffff, 0.2); 135 - light.position.set(10, 10, 10); 136 - scene.add(light); 137 - 138 - const light2 = new THREE.DirectionalLight(0xffffff, 0.1); 139 - light2.position.set(-10, 10, -10); 140 - scene.add(light2); 141 - 142 - const ambientLight = new THREE.AmbientLight(0xffffff, 0.2); 143 - scene.add(ambientLight); 144 - 145 - let lastTime = performance.now(); 146 - const animate = () => { 147 - requestAnimationFrame(animate); 148 - texture.needsUpdate = true; 149 - 150 - const deltaTime = (performance.now() - lastTime) / 1000; 151 - lastTime = performance.now(); 152 - 153 - updateFace(deltaTime, mouse.x, mouse.y); 154 - 155 - if (rootBone) { 156 - creature.position.z = -mouse.x * 2; 157 - creature.position.x = mouse.y * 2; 158 - creature.position.y = 0.5; 159 - 160 - // look at camera 161 - creature.lookAt( 162 - new THREE.Vector3(camera.position.x, 0, camera.position.z), 163 - ); 164 - rootBone.rotation.y = -Math.PI / 2; 165 - } 166 - 167 - wiggleBones.forEach((wiggleBone) => { 168 - wiggleBone.update(); 169 - }); 170 - 171 - renderer.render(scene, camera); 172 - }; 173 - 174 - animate(); 175 - 176 - window.addEventListener("resize", () => { 177 - camera.aspect = window.innerWidth / window.innerHeight; 178 - camera.updateProjectionMatrix(); 179 - renderer.setSize(window.innerWidth, window.innerHeight); 180 - }); 181 - 182 - // get mouse position 183 - window.addEventListener("mousemove", (event) => { 184 - mouse.x = (event.clientX / window.innerWidth) * 2 - 1; 185 - mouse.y = -(event.clientY / window.innerHeight) * 2 + 1; 186 - }); 187 - }; 188 - 189 - setup();
+6
src/routes/+layout.svelte
··· 1 + <script lang="ts"> 2 + import '../app.css'; 3 + let { children } = $props(); 4 + </script> 5 + 6 + {@render children()}
+1
src/routes/+layout.ts
··· 1 + export const prerender = true;
+11
src/routes/+page.svelte
··· 1 + <script> 2 + import { Canvas } from '@threlte/core'; 3 + import Scene from '$lib/Scene.svelte'; 4 + </script> 5 + 6 + <div class="h-screen w-screen"> 7 + <Canvas> 8 + <Scene /> 9 + </Canvas> 10 + 11 + </div>
static/favicon.png

This is a binary file and will not be displayed.

static/room-transformed.glb

This is a binary file and will not be displayed.

static/room.jpg

This is a binary file and will not be displayed.

static/workshop.hdr

This is a binary file and will not be displayed.

+21
svelte.config.js
··· 1 + import adapter from '@sveltejs/adapter-static'; 2 + import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 + 4 + /** @type {import('@sveltejs/kit').Config} */ 5 + const config = { 6 + // Consult https://svelte.dev/docs/kit/integrations 7 + // for more information about preprocessors 8 + preprocess: vitePreprocess(), 9 + 10 + kit: { 11 + // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list. 12 + // If your environment is not supported, or you settled on a specific environment, switch out the adapter. 13 + // See https://svelte.dev/docs/kit/adapters for more information about adapters. 14 + adapter: adapter(), 15 + paths: { 16 + base: '/tiny-creature' 17 + } 18 + } 19 + }; 20 + 21 + export default config;
+13
tailwind.config.ts
··· 1 + import forms from '@tailwindcss/forms'; 2 + import typography from '@tailwindcss/typography'; 3 + import type { Config } from 'tailwindcss'; 4 + 5 + export default { 6 + content: ['./src/**/*.{html,js,svelte,ts}'], 7 + 8 + theme: { 9 + extend: {} 10 + }, 11 + 12 + plugins: [typography, forms] 13 + } satisfies Config;
+17 -21
tsconfig.json
··· 1 1 { 2 - "compilerOptions": { 3 - "target": "ES2020", 4 - "useDefineForClassFields": true, 5 - "module": "ESNext", 6 - "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 - "skipLibCheck": true, 8 - 9 - /* Bundler mode */ 10 - "moduleResolution": "bundler", 11 - "allowImportingTsExtensions": true, 12 - "isolatedModules": true, 13 - "moduleDetection": "force", 14 - "noEmit": true, 15 - 16 - /* Linting */ 17 - "strict": true, 18 - "noUnusedLocals": true, 19 - "noUnusedParameters": true, 20 - "noFallthroughCasesInSwitch": true 21 - }, 22 - "include": ["src"] 2 + "extends": "./.svelte-kit/tsconfig.json", 3 + "compilerOptions": { 4 + "allowJs": true, 5 + "checkJs": true, 6 + "esModuleInterop": true, 7 + "forceConsistentCasingInFileNames": true, 8 + "resolveJsonModule": true, 9 + "skipLibCheck": true, 10 + "sourceMap": true, 11 + "strict": true, 12 + "moduleResolution": "bundler" 13 + } 14 + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias 15 + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files 16 + // 17 + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 18 + // from the referenced tsconfig.json - TypeScript does not merge them in 23 19 }
-11
vite.config.js
··· 1 - import { defineConfig } from "vite"; 2 - import tailwindcss from "@tailwindcss/vite"; 3 - 4 - // https://vitejs.dev/config/ 5 - export default defineConfig({ 6 - plugins: [tailwindcss()], 7 - build: { 8 - target: "esnext", 9 - }, 10 - base: "/tiny-creature/", 11 - });
+6
vite.config.ts
··· 1 + import { sveltekit } from '@sveltejs/kit/vite'; 2 + import { defineConfig } from 'vite'; 3 + 4 + export default defineConfig({ 5 + plugins: [sveltekit()] 6 + });