From 739f279e2e7e3956e089cc6178711b71baacbfcc Mon Sep 17 00:00:00 2001 From: suresh-gangumalla Date: Sat, 9 Aug 2025 15:59:54 +0530 Subject: [PATCH 1/5] Playwright snap capture & compare test Signed-off-by: suresh-gangumalla --- .gitignore | 8 + Dockerfile | 30 + examples/.editorconfig | 7 + examples/.env.example | 4 + examples/.gitattributes | 3 + examples/README.md | 49 + examples/eslint.config.cjs | 60 + examples/index.html | 13 + examples/package-lock.json | 5102 +++++++++++++++++ examples/package.json | 36 + examples/public/assets/favicon.svg | 32 + examples/public/assets/logo.png | Bin 0 -> 773 bytes examples/public/fonts/Lato-Regular.ttf | Bin 0 -> 75152 bytes examples/public/fonts/OpenSans-Medium.ttf | Bin 0 -> 130980 bytes examples/public/fonts/Raleway-ExtraBold.ttf | Bin 0 -> 164152 bytes examples/src/App.js | 31 + examples/src/index.js | 26 + examples/src/pages/StaticItems.js | 56 + examples/vite.config.js | 26 + package-lock.json | 93 +- package.json | 8 +- src/launch.js | 3 +- .../chromium-ci/static-blocks-1.png | Bin 0 -> 21381 bytes visual-tests/package-lock.json | 621 ++ visual-tests/package.json | 30 + visual-tests/src/build-docker.js | 43 + visual-tests/src/detectDockerRuntime.js | 20 + visual-tests/src/index.js | 372 ++ visual-tests/src/snapshot.js | 154 + 29 files changed, 6731 insertions(+), 96 deletions(-) create mode 100644 Dockerfile create mode 100644 examples/.editorconfig create mode 100644 examples/.env.example create mode 100644 examples/.gitattributes create mode 100644 examples/README.md create mode 100644 examples/eslint.config.cjs create mode 100644 examples/index.html create mode 100644 examples/package-lock.json create mode 100644 examples/package.json create mode 100644 examples/public/assets/favicon.svg create mode 100644 examples/public/assets/logo.png create mode 100644 examples/public/fonts/Lato-Regular.ttf create mode 100644 examples/public/fonts/OpenSans-Medium.ttf create mode 100644 examples/public/fonts/Raleway-ExtraBold.ttf create mode 100644 examples/src/App.js create mode 100644 examples/src/index.js create mode 100644 examples/src/pages/StaticItems.js create mode 100644 examples/vite.config.js create mode 100644 visual-tests/certified-snapshots/chromium-ci/static-blocks-1.png create mode 100644 visual-tests/package-lock.json create mode 100644 visual-tests/package.json create mode 100644 visual-tests/src/build-docker.js create mode 100644 visual-tests/src/detectDockerRuntime.js create mode 100644 visual-tests/src/index.js create mode 100644 visual-tests/src/snapshot.js diff --git a/.gitignore b/.gitignore index c049f23f..de16af35 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,11 @@ node_modules .DS_store .DS_Store coverage +examples/node_modules +examples/dist +visual-tests/failed-results +visual-tests/certified-snapshots/*-local +.tmp +.env +*.tgz +.vscode/launch.json diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..797fa9ee --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ + + + + + + +# Use Playwright's base image +FROM mcr.microsoft.com/playwright:v1.49.0-jammy + +# Set working directory +WORKDIR /work + +# Install required tools +RUN apt-get update && apt-get install -y curl xz-utils + +# Download and install Node.js v20.19.3 +RUN curl -fsSL https://nodejs.org/dist/v20.19.3/node-v20.19.3-linux-x64.tar.xz \ + -o node.tar.xz && \ + tar -xf node.tar.xz -C /usr/local --strip-components=1 && \ + rm node.tar.xz + +# Verify installation +RUN node -v && npm -v + +# Copy the necessary files to the container +COPY package.json package.json + + +# Set the entry point command +CMD ["/bin/bash", "-c", "echo 'Must run with Visual Test Runner: `npm run test:visual -- -- --ci`'"] diff --git a/examples/.editorconfig b/examples/.editorconfig new file mode 100644 index 00000000..093e88c1 --- /dev/null +++ b/examples/.editorconfig @@ -0,0 +1,7 @@ +[*] +charset = utf-8 +indent_size = 2 +indent_style = space +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/examples/.env.example b/examples/.env.example new file mode 100644 index 00000000..e9fc0dde --- /dev/null +++ b/examples/.env.example @@ -0,0 +1,4 @@ +# all environment variables need to prefixed with VITE_* +# to read, use import.meta.env.VITE_FOO + +# VITE_FOO=bar diff --git a/examples/.gitattributes b/examples/.gitattributes new file mode 100644 index 00000000..4574f968 --- /dev/null +++ b/examples/.gitattributes @@ -0,0 +1,3 @@ +*.js text eol=lf +*.cjs text eol=lf +*.jsx text eol=lf \ No newline at end of file diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..5cde76bc --- /dev/null +++ b/examples/README.md @@ -0,0 +1,49 @@ +# example + +### example + + +Welcome to the _example_ Lightning 3 Blits App! + +### Getting started + +Follow the steps below to get your Lightning 3 Blits App up and running in no time. + +#### IDE setup + +It is highly recommended to install the Blits [VS-code extension](https://marketplace.visualstudio.com/items?itemName=LightningJS.lightning-blits) which will give you template highlighting and improved autocompletion. + +#### Project setup + +Run the following command to install the dependencies of your App: + +```sh +npm install +``` + +#### Build and run in development mode + +Run your App in development mode: + +```sh +npm run dev +``` + +This command uses Vite to fire up a local server, with Hot Reloading support. Visit the provided link in your web browser to see the App in action. + +#### Build the App for production + +Create an optimized and minified version of your App: + +```sh +npm run build +``` + +This will create a production version of the app in the `dist` folder. + + +### Resources + +- [Blits documentation](https://lightningjs.io/v3-docs/blits/getting_started/intro.html) - official documentation +- [Blits Example App](https://blits-demo.lightningjs.io/?source=true) - a great reference to learn by example +- [Blits Components](https://lightningjs.io/blits-components.html) - off-the-shelf, basic and performant reference components diff --git a/examples/eslint.config.cjs b/examples/eslint.config.cjs new file mode 100644 index 00000000..b1173b9c --- /dev/null +++ b/examples/eslint.config.cjs @@ -0,0 +1,60 @@ +const prettier = require('eslint-plugin-prettier') +const globals = require('globals') +const js = require('@eslint/js') + +const { FlatCompat } = require('@eslint/eslintrc') + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}) + +module.exports = [ + ...compat.extends('eslint:recommended', 'plugin:prettier/recommended', 'prettier'), + { + plugins: { + prettier, + }, + + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + + ecmaVersion: 2020, + sourceType: 'module', + + parserOptions: { + parser: 'babel-eslint', + }, + }, + + rules: { + 'no-console': 'off', + 'no-debugger': 'off', + quotes: [2, 'single', 'avoid-escape'], + semi: [2, 'never'], + 'no-extra-boolean-cast': 'off', + + 'no-unused-vars': [ + 1, + { + argsIgnorePattern: 'res|next|^err', + }, + ], + + 'prettier/prettier': [ + 'error', + { + trailingComma: 'es5', + singleQuote: true, + tabWidth: 2, + semi: false, + printWidth: 100, + }, + ], + }, + }, +] diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 00000000..a91e327c --- /dev/null +++ b/examples/index.html @@ -0,0 +1,13 @@ + + + + + + + +
+ + + diff --git a/examples/package-lock.json b/examples/package-lock.json new file mode 100644 index 00000000..73190e19 --- /dev/null +++ b/examples/package-lock.json @@ -0,0 +1,5102 @@ +{ + "name": "example", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "example", + "version": "0.1.0", + "dependencies": { + "@lightningjs/blits": "../" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.11.1", + "@lightningjs/msdf-generator": "^1.1.1", + "eslint": "^9.11.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.9.0", + "husky": "^9.1.6", + "lint-staged": "^15.2.10", + "prettier": "^3.3.3", + "vite": "^5.4.8" + } + }, + "..": { + "name": "@lightningjs/blits", + "version": "1.34.0", + "license": "Apache-2.0", + "dependencies": { + "@lightningjs/msdf-generator": "^1.1.1", + "@lightningjs/renderer": "^2.15.0" + }, + "bin": { + "blits": "bin/index.js" + }, + "devDependencies": { + "@babel/eslint-parser": "^7.26.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "c8": "^8.0.1", + "eslint": "^8.8.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0", + "fast-glob": "^3.3.3", + "global-jsdom": "24.0.0", + "husky": "^9.1.7", + "jsdom": "24.0.0", + "lint-staged": "^15.5.0", + "prettier": "^2.5.1", + "tap-diff": "^0.1.1", + "tape": "^5.5.0" + } + }, + "node_modules/@babel/polyfill": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", + "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", + "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.30.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.1.tgz", + "integrity": "sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz", + "integrity": "sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jimp/bmp": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.3.9.tgz", + "integrity": "sha512-r+gAyODQBC8sHCJDQgdZgNcQhEeLlCd2wtfWK16cPhwiLmZoDjKt+sOsSkLg0PgBTmRFDLd7ewoUwS3DFyaMmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "bmp-js": "^0.1.0", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.3.9.tgz", + "integrity": "sha512-phf7Ar3jyxC7LtwvBow/VMa/1H2bcY1x+QMZboJDCbIzAWi+t46VgsJLiIqCpmUgkVGnDfsXwabrso490E4UOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^2.5.7", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/custom": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.3.9.tgz", + "integrity": "sha512-6VjZPZx3kC/SAxxqb4bYymwkUPBzbh1rzSafjBp13A+i9lb4M0ECE+D9ioO3tILpa0NfdL5zg9rtFf1j6Yzg2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/core": "^0.3.9", + "core-js": "^2.5.7" + } + }, + "node_modules/@jimp/gif": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.3.9.tgz", + "integrity": "sha512-rXjUteUUbB+3EzGMCQuj+0dCWF20RuqNwrSrPY/jNcfxQ7tnIOLAcj6pL3zlgF3/DCdVtvcHMh1OULr975fA/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.3.9.tgz", + "integrity": "sha512-WJ5ESHpJIetJSqp1myMewQf4KD1VegbdOQbiLvkW6CvX+lW1jQ83xouFv+jbZqZy5JNG1TtwMBNLMXzoBSbp1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7", + "jpeg-js": "^0.3.4" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.3.9.tgz", + "integrity": "sha512-biiz9QvHB4Mz9DyumI44LbnfXAzGmEdOCJAA0Wc30Pmqn3CbQUIbOo5KtSKcEKYZxsYG2MQYn22OpPL17yHMwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.3.9.tgz", + "integrity": "sha512-QK7KSx8o2JKvRKESfqPYEuMFLzKQofqvxhVNKY+KVevT+BfDlONuZ5KrHdahzZ/uDu7GQcyhCl3Axe92CSvH1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.3.10.tgz", + "integrity": "sha512-XObgRjjw720T0jJn41fm5POC/FH2rifN+TQqAlaZ/7Wn1kNlH4G8H1v6M0RNzMEKEYTgQud1oVZqY61gceowSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.3.9.tgz", + "integrity": "sha512-BqW2uidZBmMMVdU8b+/SRpDMMcvD6KYt5qsJhckkpoU5wROltng2trI02KAHaWy0eJwTdMApWJbxp+5MdBoreg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.3.9.tgz", + "integrity": "sha512-l9nALbXi9+QE1ohCmgRF3bWsLZGzN4YeZuSfhMiIKChtzinEKput4N5jl89+KeFFnusTR22ivlQcgWq3Zcia+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.3.9.tgz", + "integrity": "sha512-FzVwErLj89sAYOWa1NwICLWgdF0HS4LvGfUw+5oSHDUJ2ym4bUKplb3AO6IG494zT2jpTWc0hbQrGrF3HK2Y9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.3.9.tgz", + "integrity": "sha512-/RM8sTxkHy8YW88DoS2KMPujekLUCNdB4XO6wv74pXRMDCC0jBvePAO0rJ9BBE/L93ShQtoe/gBUa3lVWitf8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.3.9.tgz", + "integrity": "sha512-sWPSXnZZK8F2tXZOpfpknkySXlxjghjIJAaFjDyFDSKm3NiSNyL0CXd0GUwvPyof3lBRLqghPMsRw3Px6zJg3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.3.9.tgz", + "integrity": "sha512-GsF4sq0oHpZYXkMEcdfQS+yN1xcQX0YORNSwApKLV1c05AS0T0xqj+0U6FN9vPmyNJ0ptS+TyATf0CbupT7zzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.3.9.tgz", + "integrity": "sha512-XSYaYhBEMvMejqSgIIFAvaNwQynFWbXmSgrD8VxEuQtJyi5jO5XVmL3q3rxN034XD7NO8UKyjB+QE2oiaMsKiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.3.9.tgz", + "integrity": "sha512-csdCm9QpV2W1IdE8jo4gTNC8Q6Eh7hgE7kp/Ikc9W4SNkHA+ppcNOliT2tT+o/Yxza393cWTAIVHHOfKC+gPzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.3.9.tgz", + "integrity": "sha512-UHTRbyb230t/EOJANUDFk9dGAwv+1i1LRAMZ14Zv4vgVRHl/DqknNX6owVd6fYJJKthHOKSmTtDLPNR2b+MCWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.3.9.tgz", + "integrity": "sha512-eIrs29cStWVuQk3NBrq0cY6F4taoydmu4jdpy/Hw+9gIi96Dpd+eakDhU1y5F7sFAZrfy65Ps2m56IYwn+FE5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.3.9.tgz", + "integrity": "sha512-1hcfxceeUAqluUpV8m0clE/mtuGQ8/RdB6gESr/0hYfVFHzULasIKKTWw410buiBL9i2nrTOoehgWKU/AgRGCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7", + "load-bmfont": "^1.3.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.3.9.tgz", + "integrity": "sha512-Rq9l1+VtqI71bvzdo3wfiqJ4iDO7ZrIbzjRFysRJpfwRm4bVibUoLPf0wCpDDkNAJllP5l8y/4Y+x/TzREKpBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.3.9.tgz", + "integrity": "sha512-9o/pix6zojMEEfqNAbFBaVpjLDAdFJIAVa0pegPGS6v0aTytHo2cRL0OYN8cP8NbFPG+kMD+v2i/XV+Ubv2pJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.3.9.tgz", + "integrity": "sha512-hlKBwqo59ZxIjYyIx/zPFmfER6XyNJAUh3jXcofJ0oF1sH1fTl+BjqkYvouw4CAGQlF3invLRXLp7sluCcau6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.3.10.tgz", + "integrity": "sha512-RYFO8A8qFo7q0fKiZIcwaNco375Mdknat2oDn67B21k/3CZPUtqzLWy2+X9WXBPHULrF9F8J2loxN8rvSe/0Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/plugin-blit": "^0.3.9", + "@jimp/plugin-blur": "^0.3.9", + "@jimp/plugin-color": "^0.3.10", + "@jimp/plugin-contain": "^0.3.9", + "@jimp/plugin-cover": "^0.3.9", + "@jimp/plugin-crop": "^0.3.9", + "@jimp/plugin-displace": "^0.3.9", + "@jimp/plugin-dither": "^0.3.9", + "@jimp/plugin-flip": "^0.3.9", + "@jimp/plugin-gaussian": "^0.3.9", + "@jimp/plugin-invert": "^0.3.9", + "@jimp/plugin-mask": "^0.3.9", + "@jimp/plugin-normalize": "^0.3.9", + "@jimp/plugin-print": "^0.3.9", + "@jimp/plugin-resize": "^0.3.9", + "@jimp/plugin-rotate": "^0.3.9", + "@jimp/plugin-scale": "^0.3.9", + "core-js": "^2.5.7", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.3.9.tgz", + "integrity": "sha512-PrqH0gE9AzFV2mJPepm6U9GBzeuS9Fn9BMZPDg1p8AOIXlzySv2cgby6gaLpUk5XiQwiOwhO6A6rLvXXJ0s17A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/utils": "^0.3.9", + "core-js": "^2.5.7", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.3.9.tgz", + "integrity": "sha512-OkoUmeBVOlP/AWgcHNXi9W32hk3glZWm/gMzbEOyExVQYPb/C9emTpJ5SAfFEKAkIJ5ylnC4q0Lvip8YvYihLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.5.7", + "utif": "^2.0.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.3.9.tgz", + "integrity": "sha512-ref+xXz21h7SI3O95CC7XIR0Hkn5LhVffMfSiXz4R9oC41DhANmpi3flkN/uv+WMRhwoIzYEnoU2aljGJ58sXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/bmp": "^0.3.9", + "@jimp/gif": "^0.3.9", + "@jimp/jpeg": "^0.3.9", + "@jimp/png": "^0.3.9", + "@jimp/tiff": "^0.3.9", + "core-js": "^2.5.7", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.3.9.tgz", + "integrity": "sha512-nqJmMQbSBf1AmRZ3AZTq6Gct7T0gZ5R6bGhD9AaPbCb7AkkGX+DPMhT39VIiDT8sbwl+3Lxakr8KCjkrWz8nFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.5.7" + } + }, + "node_modules/@lightningjs/blits": { + "resolved": "..", + "link": true + }, + "node_modules/@lightningjs/msdf-generator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lightningjs/msdf-generator/-/msdf-generator-1.1.1.tgz", + "integrity": "sha512-+NmqNUr4UA6mAOuz2fbIgI+y6ic2XpalS/MRPzrba/RaazY6WWxXM2/y3HUdacmYUpAUmq0kU3fSN3BzomS/eg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "chalk": "^5.3.0", + "fs-extra": "^11.2.0", + "msdf-bmfont-xml": "git+https://github.com/soimy/msdf-bmfont-xml.git#5a2495a14a1ebd3170d49350f450b6e3f531a941", + "opentype.js": "^1.3.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", + "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz", + "integrity": "sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz", + "integrity": "sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz", + "integrity": "sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz", + "integrity": "sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz", + "integrity": "sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz", + "integrity": "sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz", + "integrity": "sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz", + "integrity": "sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz", + "integrity": "sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz", + "integrity": "sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz", + "integrity": "sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz", + "integrity": "sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz", + "integrity": "sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.1.tgz", + "integrity": "sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz", + "integrity": "sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz", + "integrity": "sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz", + "integrity": "sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz", + "integrity": "sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz", + "integrity": "sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz", + "integrity": "sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/arabic-persian-reshaper": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arabic-persian-reshaper/-/arabic-persian-reshaper-1.0.1.tgz", + "integrity": "sha512-VYBjkhz6o4W1Xt4mD2LAReljJpLSw5CUZMqSBDIQRvFgUSlTKEYghapgBWvkeMWF4W+KF3Fm+/z8EywJU4PBeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/centra": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6" + } + }, + "node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-progress/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-progress/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-progress/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/end-of-stream/node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.30.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.1.tgz", + "integrity": "sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.30.1", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz", + "integrity": "sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-invalid-path": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-1.0.2.tgz", + "integrity": "sha512-6KLcFrPCEP3AFXMfnWrIFkZpYNBVzZAoBJJDEZKtI3LXkaDjM3uFMJQjxiizUuZTZ9Oh9FNv/soXbx5TcpaDmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jimp": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.3.11.tgz", + "integrity": "sha512-M+MWaCg/sJmeXSP5TRzKHmJUU2LpBWKEdoxiqczhY4FdMqz2k3Db4pdQjkcYR5ihW9MvtrjqarPAF6iTMGT34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/polyfill": "^7.0.0", + "@jimp/custom": "^0.3.9", + "@jimp/plugins": "^0.3.10", + "@jimp/types": "^0.3.9", + "core-js": "^2.5.7" + } + }, + "node_modules/jpeg-js": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz", + "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "xmlcreate": "^2.0.4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lint-staged": { + "version": "15.5.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz", + "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/listr2": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", + "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/load-bmfont": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", + "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^3.7.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-bmfont/node_modules/phin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "centra": "^2.7.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/map-limit": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", + "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "~1.3.0" + } + }, + "node_modules/maxrects-packer": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/maxrects-packer/-/maxrects-packer-2.7.3.tgz", + "integrity": "sha512-bG6qXujJ1QgttZVIH4WDanhoJtvbud/xP/XPyf6A69C9RdA61BM4TomFALCq2nrTa+tARRIBB4LuIFsnUQU2wA==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "0.0.8" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/msdf-bmfont-xml": { + "version": "2.7.0", + "resolved": "git+ssh://git@github.com/soimy/msdf-bmfont-xml.git#5a2495a14a1ebd3170d49350f450b6e3f531a941", + "integrity": "sha512-ZII9Wj0XgvJ8ZxbntmGWSEoSup/3Pr/8v/SLpYbqpT3z4NiKiXw15LrANduTbKumm5RfZVj2So6LR0fr9AAOHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "arabic-persian-reshaper": "^1.0.1", + "cli-progress": "^3.12.0", + "commander": "^2.20.3", + "handlebars": "^4.7.7", + "is-invalid-path": "^1.0.2", + "jimp": "^0.3.11", + "js2xmlparser": "^4.0.2", + "map-limit": "0.0.1", + "maxrects-packer": "^2.7.3", + "opentype.js": "^0.11.0", + "update-notifier": "^5.1.0" + }, + "bin": { + "msdf-bmfont": "cli.js" + } + }, + "node_modules/msdf-bmfont-xml/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/msdf-bmfont-xml/node_modules/opentype.js": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-0.11.0.tgz", + "integrity": "sha512-Z9NkAyQi/iEKQYzCSa7/VJSqVIs33wknw8Z8po+DzuRUAqivJ+hJZ94mveg3xIeKwLreJdWTMyEO7x1K13l41Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "string.prototype.codepointat": "^0.2.1", + "tiny-inflate": "^1.0.2" + }, + "bin": { + "ot": "bin/ot" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opentype.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-1.3.4.tgz", + "integrity": "sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "string.prototype.codepointat": "^0.2.1", + "tiny-inflate": "^1.0.3" + }, + "bin": { + "ot": "bin/ot" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", + "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.5.0" + } + }, + "node_modules/parse-headers": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", + "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "dev": true, + "license": "ISC", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true, + "license": "MIT" + }, + "node_modules/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "license": "MIT", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.1.tgz", + "integrity": "sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.44.1", + "@rollup/rollup-android-arm64": "4.44.1", + "@rollup/rollup-darwin-arm64": "4.44.1", + "@rollup/rollup-darwin-x64": "4.44.1", + "@rollup/rollup-freebsd-arm64": "4.44.1", + "@rollup/rollup-freebsd-x64": "4.44.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.44.1", + "@rollup/rollup-linux-arm-musleabihf": "4.44.1", + "@rollup/rollup-linux-arm64-gnu": "4.44.1", + "@rollup/rollup-linux-arm64-musl": "4.44.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.44.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.44.1", + "@rollup/rollup-linux-riscv64-gnu": "4.44.1", + "@rollup/rollup-linux-riscv64-musl": "4.44.1", + "@rollup/rollup-linux-s390x-gnu": "4.44.1", + "@rollup/rollup-linux-x64-gnu": "4.44.1", + "@rollup/rollup-linux-x64-musl": "4.44.1", + "@rollup/rollup-win32-arm64-msvc": "4.44.1", + "@rollup/rollup-win32-ia32-msvc": "4.44.1", + "@rollup/rollup-win32-x64-msvc": "4.44.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "license": "ISC" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/synckit": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", + "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/vite": { + "version": "5.4.19", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/widest-line/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/examples/package.json b/examples/package.json new file mode 100644 index 00000000..e41fcf21 --- /dev/null +++ b/examples/package.json @@ -0,0 +1,36 @@ +{ + "name": "example", + "version": "0.1.0", + "description": "example", + "main": "index.js", + "type": "module", + "scripts": { + "start": "npm run dev", + "lint": "eslint '**/*.js'", + "lint:fix": "eslint '**/*.js' --fix", + "build": "vite build", + "dev": "vite dev --host", + "preview": "vite preview --port" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.11.1", + "@lightningjs/msdf-generator": "^1.1.1", + "eslint": "^9.11.1", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.9.0", + "husky": "^9.1.6", + "lint-staged": "^15.2.10", + "prettier": "^3.3.3", + "vite": "^5.4.8" + }, + "dependencies": { + "@lightningjs/blits": "../" + }, + "lint-staged": { + "*.js": [ + "eslint --fix" + ] + } +} diff --git a/examples/public/assets/favicon.svg b/examples/public/assets/favicon.svg new file mode 100644 index 00000000..fc925644 --- /dev/null +++ b/examples/public/assets/favicon.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/examples/public/assets/logo.png b/examples/public/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..81aa642779d9774941cc212e60ecf619c72cbebc GIT binary patch literal 773 zcmV+g1N!`lP)M~n2rXv5M?VV*a%fNKt+d83K|MJiYx(%0x60VDMD084n?F8 zC;pi^Gk5Me=YDVJ#=8CeVWa(uGj^--Lc8Rw*iqG3Q{kcb$N6eKDJBm{|!0m(q3V?ZL13>c6EBnt*4 z0Lg>_!9lWNKwyxJ7!VXBD+UAv$&3NPK(b>%AdnU?AP7h+7!UxYB@A#5(i#Rh25Auk zoPxB90S-Z0#sFs^tz&>A5MkWrVgX_NulfqYSg-05!gyS@HH5LbDvJnXd$X@1jNQ$; zj4<{$+d9JN*DMPOqkqL$62`EKE+vfN6GQYhXQ#IqFwtAaJBH`ZPFH;Wu)2FZdPQN_dx!xeL4;v% z69$X`5r(~O7+?euhP_=FU;q(@y?q!k5JVXE`e48S5MkKsivc}Bgkf(82J`?ChP|N} zum?mK_AD5%14J11tQfEbL>TtQV88|tVb~js0S`cgVQ&fyxOYF~>GO`upYZAZ_$MvV z!LsA!8^8B6roe!EAXmR``1aBB|Jp8Gf=r14p6_V}Xle`)h`ACNAP`ffFhC%KD~SOD z8B}Qu5J>OlzyN{tYAy^A$lm6}0D^80RcfW zV?Z#F>=-cd|Mr&b{L6|z*R@YkzA#rv3m6axq?P^wO<`xW)2~^*00000NkvXXu0mjf DaD6rQ literal 0 HcmV?d00001 diff --git a/examples/public/fonts/Lato-Regular.ttf b/examples/public/fonts/Lato-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bb2e8875a993f9c7d9e45d0eeffa839550cc6287 GIT binary patch literal 75152 zcmdSC33!y%**|>F^URiQlGzfnO=dFL$VN7@5yE5-Nle0?uqF`pKq3hk5fv2?5qDJF z5CIhw=?JJutrbM2zDQfN{;gV@(rVTEYOAldDop;r`#keZCV<;}eb@J0AK}ikoc-R; zec$JtCyX=3BJfMYSY2z&6n#bPHpU$P!stnK3o4|iODB$TZyNMmf&rNKL_Fl%cN93;<^X}E| z9r~yCh(r z&=2wNIRi7W1r85)RXaSgtJh<#aX36_9g7^Br?q*cT%QkzCaWgMwu#<6uYx z{WeA7cl!ZNnyzMYHQs5Y44_40=C?5|`Z%DqqC2CMt9*nF@c%K$Qn*%lyon zn{_lOePFEr^42EiX6!pj*Wg{tZ__`+A9pZzC#B0@(Wse2U=HMC#jKY})wNAinZ3KS ze#|1k#4%fNz+_J^NAT0H3%boMP|dCKqZrHeaRrt-UQb#EU_QGTNeq9OejxWt{z znpq0)qdXgs8j5#Uuzt20?__3WHWn#b<04lK-YU6tT#wu>T!-IHc+1&D0M$+DaV&%z zcn}ZfAv~0aaU&1s5!}ShNDpCEY#FYEI(;y2Z0Wg6ar z>r`M)izmjy*i~$Z>v=TK<<)!&pT#@*Rs0U=Rp~du8czW=+gQo^xAAD`_=-_jMp23NKe)G@2fB)X3jEKo5gE_e+LmSeG;((2 z?NP?4C!;-n!2xW{%DwiNz%(NjgA6+c~)TG}?wF>d*|-Q$jr=i{B@H;n(Je8q&g z2~F-a_kHfyD`r=`R+&-RQ*}@Em$gsSEvW0MyQ1!fx;yJ0s(Ye-S%ak^p&_H8sG+K% zrD0aX;)cG)xW=@`f<|{^Q)63WSL2OMJxy0M-OzMr(?d;9T#|Ijx#pl|TeGt{tGT4P zruCjlznJvPNv}?NW73}|{bSOZehcs zv5R{b?_bio^z&uW%iPP>EZ^SUx*}}Fn=7+d?&t~a$?VzI+t&NXOP^llUUki?V||9c z!v2KS39GAC?^%6f_2+A{*YvJAyyhR56$RC7X?5IV_juv3yp*#TU9HUS!lDZRI?gZ%j#G?^icz5 zttNH}bX*H-Ws}%sHU+w58k^2$ur}7tX0lmqHk-rdvU#k7b#j^QVjI}?>{sk=_7U62 zZo!Q7Alu7!a}C?f-eK24Uw^^AWH+;W*e3Q8bl1PwcJ?^?iv17!n(bsyvfr>**?!E4 z3)pR}i~Sc{$WE}=*l*cM_BuPoK4y#98|-)N_v{yJG5aUGoxR20WPe~w*gx2Rvm2om zm$Kz-1?y%j*$&nN9ofrPu|DYHerU_f*eAgLT6Q_~^ObBJ=F5lK)zF9Q*){A__8B|E zwa~`rm>2rd!2S>ERMNoA!=557%>KqcV82v#G5e7HojuClW`E%(p@;tjE&NC5;``YF zc91>8o@K|`A@($T8MFK`b_08Yy~18#zh=)vhi_pIv2AP*yN}(=K4*`xJJU32Gx)%^=~E0xO><|h;8>*9OZTPA@%%iVKVti(MeMXZz{<3f*)ffV?bqiZ4exbjY_{eVc8soC1JaUMspbI|r#-}W zpiYDSYi88ym{IcyGr%gHj&a-~eKzzdt~1g8b{TU#>Q0frMm=-cHu+K3fNQ;G6l;)n zvKZOR@-%Ji4vDdA`Prcpc)tzzkLs4OJLo;2Uek&z%E&3~4!Mh!OP{bzyk85G$*eug zjPgHO9PW+s1FRP9W&%D0w4wce75BK`3@89>0Ej&DXKWSvX2jU4rG0F+yj|qkO1KyA z7BMSmR*U>y(l$03FctZaQ`_27mM$f-b$H%@_XE1|dDpeym~8Xx>lyPvfMNvvKPV4DGVgBI0D zOVsXQZtYuaI__s{dojK?Rt}ho=dGHxEF1TwvSWy3&jX+<$>L{#^_XqFntm3e+09~5 z-2k(yZgY5ATicu-cYCbEQ%rZo?d=XvP)%o-CygG1Y8;*%y2+s&FSfQh;2v%6ba;YW z+dA;ZL21EsS4ek-9kCtl?d`E1meJnsYa5MAnI65X(xU?~f+~-$YEqj=UzKqH_G?u~ zr6+P>9P-JTNOPb`sb&GZulXI-Ssso0j%B!>(rJ=A95tI=oirHHHjAbHc^t7AgW94; zPIh%xqpUX5!#m*A1ywZ=9&qETZ1)7y(_}ma<0;FdqXyvbRr>n!R1of;3dS!Fk95H` zOh*04p-HaXyxD=aJ=%1q%fma>dyH0;7d|7>+Ra z02vt`EdmHyDvNTE7ceerm+>2N66wPb`|WDSQCo1Klmz z9wTTU_dW09GoNDIYVm|4k3G|4!o`*8F=wcikLXuQrpJ=88T>+wu^IAkLEk~DY)=q| zkRldzXNx<^IwsQ->Cc)&4xTCCj;*PTBXL_RiSqtbv zWF0H+C~Kj(qpU@l_*I)0s60pGozbr>f5?hP!*km$P)Vs?YZcOR@hEH(M=Ls*U! z=erMu?S0sHAI3MpLsj}|#2tfg*N>lG_^M;@(+AIR6}-G&yz7Hs+lTvZTzl|#G16OD zEj-pLJom!SqnwLH4G#Fj3*Zqu-~*E?=@amgz-;b0;)J?sj))yilm8E{J7X77qXcS9CsVVT^ zoABI%o>1Pvx<}T4sTCeQl_qRb`wn0z8*t$We;WQrqx49+{Wxa2&;x3JG1^!9GG+w+ z=UssRF+aNv6^{{(!tsJ9UJodVAeakm1g-GWa>_LT6yRN!nF z^Q%EQq8-sgzt5Qf~)DYx7YnwR%}Vn_Xz9551((l6Dv#snX}g zNM9+&N%*3EP|pc_-`_UXMS4o%4C3~+xFrEILHFVNEp5IjSU6 z@2CZZzewtdQ)!-2xwi{%l%A}_9koKZBN^&JD++E1M?|w#_!;h}a^E$ABZxYreX@{~ zTB5mWSYz~~*QA-K=RIg=c(j4Eqts#Q4v(2M;3CvUR3Z)`$y90~Y^*}NG(H+JaW%CQ z$Q^x1r9LU;l&94g6|H{JNL0>MsX@JR+5*(#s^XFLw)LVt4vc&wp7`W&bbzXdq&4HCO4tSX%Myp8LO2q90 z^)%5$nZ-#95pGG6)OHj*Vz{02@ew$SoNvRB#{Ir}C{4AICZoOK7Ss~|Z`oP@|FM{| zVX<;RFf7b!-x_qxd27(L){6kDSdXT>((;9?utu%?#xuR690=OsN^8qsi~MWMUi|c% zy`~pT4$}+atBfbZz6d*EJQ@0R=%J9$f^ipYG@cB4-q0L+D14PZE#x!pwVD^r{b65d z)@sr;Y4ZD;wel9+D^Js<|GZon&q^oE}XdTvs zuEh!!tzT`#dd-bkm7(>RyRlZa4XZj2U?poi)@^oRooW}`ja8dRv1YRet5;93eOS3V zC{}xD-RCeotrxN8^Ac8oUd4*mNvvGGfpx04*xOh^qIIK>u#)u&)~r6o>JP1lea*gs ztZA`27z_vlL=3HGB|~#r>Ci@2HnfCIzf0qOyh0aF3j;{A1i4S?$b8v!=}HUah`{c*q(fPH``0S5qw08ay+0Xz#h3^)Qf zhB7bX`YPZQ;A6D?Dc~Et2Uq!eQ$6$!;==E+U4Y$yM*xok9s}$FyaZ57TG8j@=<{*( z`8fJ~9DP2HejP`@j-y}4(XZp^*Kza<>wkc!0nY%Q1snz(0lW-&6>th*2A5ZZ&#Td+ zYV_$UVCX9FXEk`U8r<0h{_FyOc7a2y!8_I9o@(^xDsWIWc&Hj9x(Xar&8*;{-Qb|z zEOclPT(lb;v;`bA2=3X!+_<&_2eZ)TY+O6=+>Jb|0P6sM2Ydwh1n>{Q*8mf0Jd7F- zqqf5+J;-JviauMEJdBcu!Fz|ndxybyhf&L6)N&ZL97ZjNQOjY}au}L0V(190a;#1d zy~0ue>3}>y0iYJxtpn5pCIhAdrVsrMt-Xzw-Ug>10jD1UcOL;)A7MA5%vQi%fV%|c{YoOoZ11(C_Uir*%+w@BlWPXp<;~IgVB0e zHDs+8<>~20B{iPAHwx%z%zhn0fzxc0KY`q^MGFg zUH}|J`!Auc<7n$;q`wL{iTAJL`4sLy0DK7eJI3)5;A7zV6I}lR_!Re_Bkc>omw>PF z?iV0aK1&H;vVfZ;)4cqcHt6BynJ4DSSncLKvZf#IFN z;vQge53slgSlk0F?g19}0E>Ho#X(?k5Lg@p76*aFL11wZ7#su!2Z6ysU~mu^90Udj zfw7&y*dAbO5ZD?7mIi^PL11YRSjqvGa)70cz)}vdlmjen1eOMYr9oh65Ln6qmUd#t zMiBTYe5eVSX#!@NfSGmR-wyC^2PAYmFtiT5yB)l{-N(Dz!ModmF&!|L4UA<2W7)u1 zHF&oJyxRfHWrKG+fW2(+ZU-5?un@zxC z6R@}rSX>7zt^*d=0gLN^#dW~qI`HXs@acB&DOP*|_W-s5?gQ*ZpLPLu10Df93U~~# z2e21?c^vQrU?1Q~zyZKPw0j8Grvc9Zo&_8R90B|iY0m?G1$Y5)4DG*!x{jl*my!M| z;3VF^j^|Uj{{Vge5b!bJQ^4ndF92TxzCl?lFnSu;JPmA~h88#tOrB;%Lnm4B&|4VU zX^iYNMs^w_JB^W@#>h@%WT)BvNPhtEAYeP-INrSu$Oiq^fPMzh&H&o20ln6MP7R>X zDbVK(=yL}2IRl!U0X@zDw`+jgHNfo};C2mgy9T&j1Kh3w{!RgZr+~jxz~3q0?-cNN z3ivw({G9>*&H#UBfWI@q-x=WV3~+Y_xH|*fodNF70C#7AyEDMm8sO>_@N@=vIs^Qi z0bUHiivhS;L-Of;p9KTL0O8n$6fsnaIi`>$qLd4guWC$HTNXh(mSAM1kodBpOw3~q z7~y*u;d>b2dl=z+7~y;1vaR4U4>)Wq>qgxxP;U=l74G|o3Nb?!g40SdOBJ$pcy}f4 ze@Od1gtqpg-p2t?0QLc%1RMYy0z3_P2JkH4FyIJ4(PZyoomw>PFE*Dri25g)GHqL-+&VXyqfNRc-82LnSkUIJq zux8qaUH}HjK70YAKZemC!-$Vzq{lGQGvKl_;IcE|vNPbaGvKl_;IcFSi&35debrGC zjo-rvk70zzFp^^!$uW%N7>fXxo&cAg0+*fwm!1HZo&YDF04JURC!PQ&o&YDF04JUR zC!PTJoB+3+0=Jw3x14}itm>&@9d#T!>Ns?`UFfJRV5}Cia~+@_(2BH4fXTR@g6mXV zr{UTLxD4<^I%Y5OJ`Q*Sun+Jg-~iwt${oV>X}~jpX90%+M*zP>+Vg;40bT%*u6P;m zUj>}R^C?_ay+FDk7?fQG>MR3wmVr9UK%Hg4-ZEfs8L+nu*jondEdy6*!Rf((FhB%o zod}G$paoI@=>S^2$iuY&P=vaRkzO)107=;gNtq2v830f02S4nGmDhk)PomY6u-O_Q z5%rLWdi3BVB%&U6TLXG>5`6L&_~b3{$y?x)x4z4^Ujs&U5~DhaQJsV>*Z|K>3mq1OQo*=} z!oCZ`H5@gX0A{>T0u({JmY~EqaA+CidOR>W0ncva?*Me8%qqY-z_rMK9bg0Cdca1& z4S-F6hfwwyu5aM_ChB+#@HXJ@DEATIW3>4RuKxghiui+jL}IiSl)^m+iaISJaFgf3nJ+MEP!PC_Sd0grA0k8S~vZebHKq6Xw` zMcGM!$#^#f*QvNp!*%-5-E0PW(1!c=q2FQNJP8{94)Z4Hh_+Us4?O_IA}NJMQVQPQ z16tk&tEALtmD~ob3;-(wz{&uyG61X$04oE)$^htm5_CQZI-dlcPlC?a6$iKvuoL~* z1=tOE1n?-}F~Ada@GHOzfMaO? zCA>e5wqC~dRlrHSe;v=KaQ^|u@gZQ?qHzaUG;Z+IZQ!Tdz)!dNESdqt1GGcU;Hi_~ zsb=s~Gx%u$lo|k~h%zU^Pfg&b+k`JP4%(>5EadmUf{;CjGD zzzu*+fQN)Na1y-K0bV){UOEk4It^ZG1}`;(mj=K~&ETbG@X`QysTsTkZb0wi(6c!7 zEDk(00Dd_EUO53?IRQR_rUNKFY(fuJf4>RzUk9Cj4D?@zUdDm;1EBo?dK(9N51_|! zkXxeX3DENd=y?M4JOO&106kBDo+PJBfa?>$?+NsrVgUod?*MuohhE2_$8qR!9Pl~- zybb`b)N|}&L@(b)FW*Kl-$pOrMlat6ClA}ps;zt@-fsom1-Kh<4`3VMKEThlagU>n zYTv$&d$MsGLD>dSlyKJ!s>Xq;4d~rzP__X*9BEmVKt@UdWtbx-;95QOB6__W^0yoE zw;S@d8?v?=xNHV4n}Nq>;E*Wa0LnLj@(rMT11R4B$~S=W4Z!dBTWJrWot#{hc(d(qb8fF}U^08auA01g4320R0J7H}AF1aJ)Py@YaP?Y)fWR{>=8ox=4E zwDke{`XS(B;Neri=eYj@@Fn0Il+}RWnEV~i!z5#$cM0}(d)<-a%f^+K6c-g1=O ziu&dZYH#-xXIRSR{5-p4vl=zw+?ASAt{Gd9;z~41uEbPJL7^`VPbu7Kauxx;jV`Hf z$)2!y;%IwTVU9~csqvwCvKf{4#T-Ir8jxW85bD=%}bPyJ>=E_qU4+ zwV8Xbw~;Y>oYjn{FuhKzQYlu%f?1LV8{&X{38Vt{W!a3qTR!YZ zBMnre=yA$$2Ak}VW8H}((qzyY*itK@x||w;EpD_m$tk*-dQ_TF>Hv!>6ORZuW%#`G+y?At#e)oMj*Y!>Cp!YH@N_e$$A z%3z#`y5DUM3Bj2;TZqjRjyJ(Njm|$(YiJPHV3(7fhJyb|T3I7w)C>b@^n3(9OZ8_F zNg|g^$%O(*C`Ug|O{_ah^w$0fwX>mv9^>Yesp@B8;VTrS7`JaPCAB!K~h#+W1>fyBf`UigJf<}$Dd^kl{67yGKiwV=u?8YULTSW9wKS6@tY+D z8zi01m_WD*We%;6_8G{f(-%-8<<#K3laz8^MN}l533eeQ7Ar*rvc_Imkb?%yMO9EQ zl0=8-&Z&!acQAdB9`?B|sDStl`Xdiamye~2@DKyex}<=lA==;&jyoL_y#Y%aaf*$E zG&F*T$)RDyrPvw7L0d{RQY#GS+|WcQw#GtqxePLlEhsFqxMU;G;1=a^0?)U&ipu#o zZlPatz9l~|(q`4m`JfgGi6>n+PewL5a_Xcg2j_MFt}|rCw@kYuDu#2z$%>D{v`MMk z>vb9S)~WxV+7j*L6Wmh7PxQ{@kJ?8WwB83B<72%?qT;n7x{~X7EuFzzHe}W$=@zqM>_uwk)7-{l zsG6k2xR|I&gHG^z5NJ?8igT$U%@GeIOe`NA27F8im1PZ_9}rOsr3~!Kgk7K>N*PBZ ziCr}sa{|+9!Mwm2H)$PuumS1v|8;$~3+p3=Uh^~i$C(yqXfXBoJ8IK7z%VU8w;q`W z2MxtES{iZ+hKYKUlX*X7 zSQ(rb(3^6ZTd9Om=3iX?YW-M!jM0))+gY7ld&BaIk`+6a1WPfImByvp$}+4m#?hrs zxz746y)|Whk1Y?CVr`XtTe5q4Zeqp48rQi$B$l;~u~*C+Zx0RWY@8foOv%kQNEX}J zY1ed4ys5iJbDPEfO4#JmN_(`^srSZ37EHck_RQ@AjXIAdUb;T7z91#SYt&`c&XInX zQ&*T4!C%s)l{MmcEUcB!weM;l!-=m{!~|+sJD=^2oIbUwq0(Jkm^&sjJt;9}RD{tt zlgEKtIp8~{CoPvk=f{Hd2D+0Z;uBJJrUcC3ghn0LYD2XkOrs|erfuJM=E zLKSIsKUN2_1QA!MAA)sjQeu8D~PGCgV)_fOape<3{dwTRE$(9+Q=plISpn2kF@a zKEXgUksW+d1tFA*IaE`9MsloHC(Cx|dd!@19=HkwOVUGIgR7vi@Sx=y4XCWs`5!be z=oH0N@$;&Jh7&a@GOsmjMMb2MCVYQI)EV%P!a|})s0Li4)A_2gk)m|h{!IpY6~syRkg7>Z&Bkn{uuBwpMa)k|93&K$1Q`?xYZYa4;xN)c`FVv! zU?^#8%eC{0G(B2PSd>{^bKlZE=nRU@tIc|A!ZjdsR9it6xir} zSK_*GoYK*|HCCK}&)`;blpWjNF{>+jzDPXkbrN^3T%yw$Ls}Y_R@m(oOB-84jKND+ zNUPuSu6Q;i!eBJ(bNbHw?eA+Z|LCu0`g8SWW4PrRZ#PqpbLvUU)>s%P+dbnV znSfHtF*h2XX^yeKL%Dw~hz`LL17`2BRkwN-4V@RwC?@Ug!*=fQ{a~wYFFz;ncVnnocL1ULqmO?@o zHg;JZ=49(DFON3Ttw<&t|=ii#y%z? zA||IU%N}M7PH@EP!eY`BOjksWPB2HN=G(J6=gmxs4~+;jh9u{dI?YZv`@paiDovJl zK~*KYb>!Hf?{50+NFa+KA909GE-?_&#Xs|!rCs+>`8N2UlQ4D*o8s1yMd2Si>~*Sz z#%<;f$v0;QytUC=Ut6Rt)$CNtDT|3UaJ)3kw)36GmFN44eCU6M9+ke<9!1`yiisVER%g6s)HnwTTw!a|fA z!@#h~hw&8&mw-}t!H?t?hP%sOiV8b*imj>yv?M(YjeKVwRJfCLJ}-w4q*$$L+@f5T z+GlO=tIV0ayv%z;+T;{I7@v5yI^4wnt7L9fQd;fY!ot~gxxofUj5b6+$JlzsL)yKt z59YRRx^ne+?^PjTiLu?|EomnHdg=1+o(U7?l_xk#n#aV$NsgF*&!Vw}&+egrYO;aP z28uOuR#h>sBsXVFc1lugw8g|4ctemXUsbgTQv`F3Hj3jDKX!&$K&RJ&nv{ z^1$y^j4f201P4a3FNc+o>Nr&Va8*=Nr)MzXQUYp4P=zEGC+Iktf(`$xIyfw1G7Non z(S^JSnt4^akgcM)6PSb%kASrjWk+D595N3AjlC$Lx@X>(0w0o9DtZ!72J#{Z1KUTJ!O04sz#h++NnD)r4S%#) z4?KA8dTYGKEIs$=gR=JAzajG4MG=wS8~Ei>rdjfX-e1O)InIq!_+0h^H`#2^9g&?i zIyE6a2Jt%sO_(Z&kD~xcW`-ndBRRMl5gf#EWDU8d=qLt9)(XY(;7-6t)J&?NrK{1whN{7(dmWurkI43gq-$umsE8(rJJozX*m^6xOU@()4)nLjX#L(R3mrSx*)Bve3FY1;G0t={8Od0_UmZemA zVYZ72{YYi3czC3RVSeD3;^O%v9-g7JdHQ|*)%Djrv!eSK>#C;C;>(SBj_uy?{B_>9 z(k|(#tM8wZmD$=`Ro_1;Lta_3;-N(g9>1!-=IW<==f1g?e{7CEcatmC+f=h^a#r@_ z-pblbTheomkBl^7C4jC7rEr2rD8SK=Y?b|F^dxuz`KaPAjj*{N4cGs9v{ z=d7k!?Y*sunc?3}iAmOMk50G5nl8uW-T~^SV7^Ge3|z;KyJN-{I31i#7++8~wk~6| zBj1^iRe=Pa;GZ|LM;Rnc!FB@(E<>!Sv%~Sv1U)*49wV+LY&D8&(bzJ5rI3V4g=8ElT={~C zl4bYI-Fz@5{jvU*&5KG)7j16oe=I%a;O4paEGxMswQfOK!_vxxgvzB2Wee(3B~M1( z?A*Mz%9NDKw!GZgb@&>egdOfoQ|P0`gCuD=n75;&AZft=u%yKcjgL?WSOqc%^!o(| zwvaG_R7p$p<%J&C&`gQBVYrke!SMS60+swSURtJp&a{nd4KvyTWo3cJo7#DW;;$JUXLk>4eG^ zm!zjoTv}1z)08GP6)wGZ!Q9zlEPYlzB6|I^ZCx19CW_7228+r zCQR7jJnV4?kI71Qkq0gG4`ISCT;hvj1Ku?84Phfrz3=zN7fJc>C)Nr@x~#0pUC%VW^#M%8yzj&VDPs!f(IY6dnAxkZ_$gBKWVtF%j$e9mJD& z^JnFM$v1U>F`I~&058z%#4%)v5c_~*z%CRSAXn;cdDhuS2&D2G z_**w1{WJ9SOSP{N41Fykmm?XvA3>yKiZ5~7XA#uHjOgeL>T!gu{bYSa4Eh(L#j51r zf}>4WdwcLfPYJu({w4hfS|<(rG+uEVONz#1r6wmjXkUU~=j4+`XT`h=4-A3?G4bzB zP_#X|58b07?Sh3N3KG*Y7%BeT?=OnhA#y@1sRa=hhUHZHlgenxJ0bm~G)fnr#dO|2 z155+hXrMS_VyA(!s-U_Bi3yGEi_2PWm|vV#Gr2BbV_qAYRnt`{d3kopm+iO0XIYeIFNN3fF7dBt9vO?AR)xu+_qYr8YQe!9^UA ze><(?G96qs16(wNVr$`3Q&KQc85#uQgh)(B{xK$IJyuMCB&`-<2J8@_i<8{8S5fZ_ zU%f#;SZ|P0FAtKLSh4xh>Vsn4Z9lJObTtTKfQbwr6#Ai_E89qt5#b+>;*(1!>(r$o zmCiP+*^bpn1dQ|Z61Yy|N=!yIPFn`tQ@(Gp-5{DGx^ zSq@S6DX0ou&4e8t1;aTZkAXWA(tI^hCL~e356hS2976C=Gc*=mD0q||kd?$5DkBei zA^+k9e6b@ZE!W6Sv8RCN!wn?T>a`Q^j&T?^p1X3RJ~8@kY5dFHJEW+;L}H6daEui@ z03J2RY41IIg;ZBKX>?5tqB{6aCDZHxPOPwG)7f+GNSlqZ^t42WEx~3V6^Zv2nTypl zn%^=*DT)OA=%Lb76BdI@LVx|Mr8+Jm%&G;O?kfZ2V;7dtTEnFkqnt`$_JjSJ|AU!f z%9Bv~3kg$R@n8@=Q*A0=-~wA;gpr!!N>*>2`}uD+{Q8P<&Z>pg5ALYC=9dHBS9#%- z%PvWJ@FDMiaW;9NC1u+V?>E|e3p#F^F?RmcN?XG2jkE6V9w*)G4NIw+SJHFM<|Oy5 z!mHNMw1abG+91pT+3a<*ulZy&9J0ilG+P-`0{<8<>FMWXr?b!Z7`vkq&6c(RW*f8JS_v_7{XEOCxFOUoUnuibe1_NH)0ZX$hU7Cfol z1fC4V*I^Oij_mMPeJJ%dp^lJTv=li@*@M(R|Z>X0}KJ5L^^NY3jF8-DGKM!yC-EB?Z zJ=}CFK2XkuoH;S35Vpf@CTY1~1&QP<896Zz!C@sw7Ar|&n}Zl6RL6OdY!@vfF#_Zs zE=OB$L{T7Z zh7mBLAa;{G0(}T#{uMF5{eysfz<8)%w7@RL6FR)GH)OVeeL(vLGSib?@v#p-M>v#a>2LcuT&g3Jq)!jR@-c zD+{OqdmSOeRX?k&20p^8;sqhwN-P#E24)t_?VHAxs(e|Iz-SRRL#SXeA7jRa z9wjph4uR(&5L^HmaRTQeA|HRo!0$qG-kZ3-iZ#{NQk-oB_ ze@ef>Z4`Ub9UO&O#~A9ynT1&j(((t~M^dB+g_rr%ke2*<^8(R57tM1)7-r*tJB&5tDbu94OH z3XowUg8RNoxz?Z8w{WH`3keNJnK9{$GXCH`ZKM%VSH*GW6xm3{P7x9D&*#@oOo8kC zr^wNcN6x)(OSZ+OM@gl7EHRb{gVz*diFS@^J9<=3Mz|*~+IH@qC`WKmQtY{QU2sH@ zR1#_m)t>7G&cr+v9{!_66qO6=MNu1&?B+WKJMxp^6=n5Ol`SeM!nbfjHk= z!L5WCC6z9|2x~G;BKf>m>OOn=*sfh@Sm}fA8r-_ri|$Z|Jw7hdLYBDS3Xh{15cE^j zV;;#St>%gjsnoMym~tl{jX_p2ZPjHwvj2(NL_V4- zX+owV_(dgDx*^5^UKW&tZlDzztkEQaJll7F)!rK%b@mn? z=7j!?WOukjv0vB{ift$`CRNT42k$D#60EK&8k2ZUT!%ptZ&L!TTg6cV{ZpC6SFe)c6v zdb~?}ZLN6etN@(-`{@8CAa^c#tpruxf&=i!s-gkz#pZHK3b?zhWy%YL(FYJ1Bpz6NNmX(z^ z-Y2N)eOpKS72>dq>^pa8R))(N9TgsCP)>)?KJt_h=uDD8^lPlIC*VyH9`g+oo)LMK zw!qx}knD(zG}A^fk(*|_pI$eG-jYW21jxp^{s?sY*4e%<8z;mIKVMLXh$QrdI{%3c zm8o#u1Ff-(a@gqR-df(fBdIv*Y{?Z>KhA0kpLuZo7;m37nw!nmA7MF#<30e#jY4Pt zOkN4TDIATbD2s`B&hNn{8(~p_FfdwWVi_=%>NSG%NHqkU;&AyglZ&gY6%QAqtO2Jt zvX!iOD+_M)7Z7`K34v$}9uT?Dz#w*;`07UZ6Ek}rXp8{sa61<*=8Knzb#paB06hg8 z1iI=xe!gqdE7z3g%(`w$QXJp8Z)~)8izzMb&i|Tr&5X>wkG&~PKlixy-l8RU&T87Q zw83IaJNN2niH)+|Ji2kog!R`F-ATm%$CHM*|Yw4vwsmu?op)2u1 zpWBaUAz5!J>WKwK8D#5}^+JRbw**-uOj$LZH5FY|iQ_u2xaNw^aqcS)uDa=iNyUaJ zqpfgK-;|o}#41ZrFe8^(bTo=b01k-yKwsK zknpU+tdyFLaTQaFQ%4t0zh++3Eh{UV>M`Cp=*z3Xy?XW_oj1ePw^ZPt4Q<44n7U!n z3G;TOMT3_}2S+P58LS3%R>a0A#>XOEl*Y^m{|dDrH(kkjz~KLq#MAHa3vs#RydL4`A(ZeGkdxk7m zH0I|A)h4qc5!=@S5*$+Wg_zti1~?fqta*qMRdLZ=zKNZDNSf7s z+kwQbU6S5y-_n_XwB^n>H*9!wYs=C6&YSNm>%M!Yy!h)yP-t?m9d*Wv!YnRj=O zC)qH-Zm+{=&4}q3u!qkGq^Wj`#ULy`bXf@_!c133Ih-WXi6XLI)G?a;rIe%$m@GED z6C1lZa^seYWcU^m>5Nqr%o4xF#$AT{5ijL;8L?PwGx9qTHGSaR;a_O)jj^5$OKi=^ zXib#AG{t|r82ty2>Hm)Yr?ETTp=qh)cbG5+Kdqu%kp^xxQL4_PfVN;Bmd15 z56r|BR5{D=V2*>WT9Yu^njHS!FBJ@Fz6OS3*-m$GY_usnECe=)N@JT*FqvH;G8v)) zRE`QrBu@9)sVb$N!^sMxQYF58DnF+o511YyC&)F;zYs&P7%9bzS*t-<&aq=uv(tKT(b|!l5PDB%=c8EhHVMe-!hd@J7mXi?& z75nbMF7f;p-WwaacW-2@_s@EJZDjN}uSZAKq8j`~mPe(}wZ7fnXo2>xH+q!a-ZYz_ zE&PE&vD+K{f*^Bcw>O>iBx@uk)!O9D36t6zx7KRp9Z?y!%na`iqZPF??_Xu> z&@7B9L!3Xs_=GgMqiOh*!A0!@#RziIMVt`Of=6WQ*-sxC7{JRE%}x9uEVCfmQ-H-% z4OUKr{G$v*4n7v+1`dcwA-D~sk|i%PLFxT(oetw&i)=B*Pqce&QD20GW4z?E{!?D7 z(c{Z7B|Og^nUS8GlU|ZhlI*g_MMqgJA^5XEVjmctNJCgyBahL-Boy1Su_sJ~m2nOT zfizlh^jU$}Gs|^4bR&s|1`As~AUpmiR{&Imids+uxry+f)UC&eZ(rC8Y(>RJPazL5 zrj-7`Vh^kWt`9aH*I%qOHY%gLv;q2pS}+pE5%PA?kd)5QMI2ldkyYB!O3`WG0W<&S z4e(ky9BbpW?mX6rldyJ4UfUAm&|1@)rp_xJx40>*^3KopEnHC1UNI)h9BXh)J+@}r zhMC#kyfMu+6YN*)>&}hIEQ^Sln^cl&byhB{DeIYDq-j}mxpTDBVl0`|THJNZv~wR= zTzQT+Gzodt>1n0OCgR|2LtkhjA=8m8na^`aj>2)2g!riBQOS6NGykMV#CidFuNkp1 z77SbXuPh8J0)F4zN=th*S0T13?0NOb>Q5~qEO{l0Jmv>lfuAJfz@gF>6d8)CD-l`4 z#c-Mr8$Mw0Q9LUwfePVxVPGNZ9_g*jix#2-P8bZ1Iw?jm)gp_XhZoN-OJHYcCgk@` z#%fzsjp7!QcF2c)>7%sI$H0k1o~YBC#C8PQp0MrUgk4M9Zs{s4yL8v0`8VbV8B+M9 z8P^r%tggRho2#-zd-UASiS3ow9lfge=*^Rws%NLjm$gpxMphQS_R9sg%pzmGVdx9_ zYK@kqbIEN?OR>j|ilo@F&p#tN=BL9Ai=hBWfPV&UBL(*mbP31g#=}#&n{6U)6Kys`f(uG!rghC$S+ld3hwC6*4>v!pD3=!esuEI-- z8&+MCn%=acx?*Z^k~u0Qukw|Z^L7o?Ot}0&-?H5k-`bgv4bi5G zNsYDFA6s|ni#I_GNuKI~{g-|6G>+tn`{c=H6|3fvJW|LLo#)QBAcP(p1D9S)>*jJ; z0FzpUcnQs@gQ*SGNIXk%9;}!DKq=Z<8yYB@LYXPst#U?`gjtV69Ev(7At5CgAkrwO zO39dumqTU-DHDRC_@FcfMuJlMgC!sj00mZ;P@kv3X>cA9>Mw9WdkH9Z)Ce@1r1`K7tzk&2S5936ww*? z(+d5N?1)ej&KD>rVualIr>`ieEhiL~s=E7p2eU9;6Jr6yL+(`d){?d?vF>$qj!82nLWQ$^ai6ieNWuU)t7@C}z-ch`pU z#f_uMxWT3!X{&ZWv-4!JkHF5bei9pFGgIt9MC|fFjSQG2u!z9KSkNFNiDrKhR)W5U zbA`XM2(I>jK!HSO^l%YM2jQ_EuYP$!l=c-+7Y0*@3!q=HqoL1J0*X@haIIKwqku&I zaCW3xvGbHj>0qirl$ zo-s-|ZHBPSkzQNuj@()6TdPYo+!3FU-B=jUlf8eD=Y(l()`|0H+%PA{+HN(BDr~Em zbIsWuut4*?cj625I#zqV?2t$?Fnkd+nbL_D;(5Lc~uwjsd#lOWMQuzwOL{wIP zer3pyGKRd1SNenX5#2B7+z;2MLlhWuNOE9D4P+9wd|$t4EcliceaGYCUBtRInTGz+ zQvIrBNNY;)zrr~dyTrn=5xa}+zBnZ5KlQkR@6-amj-tUvICWPe8I8i06iSi*y|Ql% zx1{$amMpw!O5Fs9v$SLF)oVLSA&5OakF6}4HzgxK!kOb}oK~{vW`0|G{oEzpxg~Y3 z`V|fJt6I{%#|x(v$6eaJ{L=X1$r@dJT%|K8qN26o^6A+oYj$K(a)c%*GOw++V(q+= z%!bafjY|`(RmG8GveP5dZ<^C^`LyisUP{T14%O-mvCV~v<1(USaw?@}dtqbNoRur* zWHlDjewjNkU;GKPq>X(g_SM*!%^VRHO4g=7itMz)mLzpcHXLRapM+ZzAn_v(G9;)O z;nG1d6T?vvkD@sz8lWgb}C-Ew0oOucF?d`laI&`~sD133(m;%^Rkgo}&`9-c9J zB);7xG9fxk*{Kq`h=UKpLIVOUYSh(t>VdZ%c*o|#C(E*2R;w!upDuIR?kTy{}PUVMJ-;@}(Zvg|lPYTCg1i_A)6-~~Uhih&EXc z0R_<|UpsWA={fJhHfXD)rMP{^^AxbDMB7b_7SiwBwyVpG5ivuOfLzK;m8A~!txIa(CZ%vJNX>4X~Egzn0fzFi^XP!6J3SVAh1okYT@e^*d z4SQ*0qpdER3#TqE+~S{E@b^)Pi=dpyqNQoVhaSWtRRn%-9{AamhvwWEs=yaQ3aAA+ zFr|vxhZBXGat-IACe_1)>gNqq@7aPWK>3y`*^E+V&%rCJs;)fP({u2u>guZw_T0U7 z>)lPgjmgQ4y&7%9rlXe)ytrxN#7!>_Ty}I*!`Xq~9D4e-g88@3oOw$pExg>}-Kz;l z9GD`8tIvxVib#|1ECtQE*|9NN9IUrN+e+AEsmQy+VZ-q_vxv||(4OE%5AE#yNu_Lo zrD(>^3v5fMjN#A%7Bh+cdxc7d7!1E>N*OK+&rng#Ov0a8WBkZ|9kh!FZ(FH<~&ND9~&MS z%L)hvD}gLkAOiL*2}+NM6MbJPeDu=4(@9VorDQd3MnPJrBsJnHjc89T>8EsH$sZ~M zJw$kyjmnY)Nhd|Y{H;O`pd!hoCF&4)SaJa8KxBPUFnrdPOCA}3I9iCFuRFGAlADh)Mcfs6-ti1WR%vrXtEZq=k zHm8+L8eh;{5S`U9Z^68VEcyy&*F&Xpb7W*JKBzr5A+;bS-kDZ5V|?vpGxBN*tHX?O ziE**nWr^uUsqv1{<+CbEmru%>P(+x{#0h{S+H&UPEp(D4J{D^k^l7XxtZh2EQ$*4! z7MPDCqH+TEhfyq0#?BG4@No(jvPI%aez4FH@aRR579R>zRYLCf6h+95bI=sR2}Kc5 zP-WPkR}kk2s32LNr9Y)bY$PIG;cuCG;6w<@jc;y`7%8V%6+Wp-=WTG>4x1OjX5^B< zzqv>i>St87_+qoNXkH|~&MZzsS;bieWr2jhJaEn0h{#7rOOd9T^xf?8+_=$po52`T zkbP~$#;c@mi}n9D_a*RgmF3>&J!j7BGnqA$WhRr!B$GXvtdl*HG)dE@d((8MrA=2X z7Ft?pOJyl-L7)m%WKp3YP(-MRR}h!0xa)VXir4R6QE|bAtDgdLl_i;e|K~mD%$7+P z@caEf5hioyeV_9#&-=X3{>=5V&OCSG!Rx2*kN4%d@|-Jb5z;Lj!1?&5^grM_-_*EH zmxH{xWhupV+7ZnFaU4`s)lQHArFzV0bR?A32!bMA1w@>&qe!W)asT1;hKeL6!sM51 zihv_(N~>R^HU*Q(S$`S;{^Xk7WCwZ$4|Sl%VEef>5!4z~OzDML=Iq1oXmSK_(pth= zL4M*%ONNux?YwN!EnQFHcD4^bv=a`+wbK7gAJ}tv{-F4$DNDt!d8=cSw@-*i0pEqu z{~xU4d3?!$*BM?$|8ITCTz7c=FnQP=2BXUk)GPLUFtPao5Xrphz2&3f@MyVstHV2G z!T6z>lK(3G1CgVjk6Rn+%1VQQOkc7}Uz#r&=>al*$qfh5^jLl>7rGaEisTA5A=STao!!MzbuNjlZ>&997qB zPFdNUa`8iX9#7u%?(k43G#XS^uuOc?*XZ*_ebdXzFjRPgN`+?c zKylAAI~*f3aH25dXYHV+c^QV&8_eo`R>NCewEvkKiQ!2HqWGVI1aQX~_JPEwKb`L} zzG-s)%lS<g5NQwfU`{ zg{$o@dwz8+6pB^n+`4)5CJg-diPLO1<|_$3Y0-~_b)a`NJ=zrq zBNf_gnOzm);tc=(mRscMHy@{7tFVf7+A8+<_4Xide6`b#%nh`P0aydEir8MPD_=X@ z?C@|=))V^)6%;KhqzC#4(JE3_Gg>X4Wf%*UT+f)2m>CKIEGi;qwKPpw&lWGdW*@}r z)GRyq5-zJjBU)~D8jG}#+( z(lGb3Pv~4g=wjdv@(L8>yWmP|HbNa&%!*;-jn@lc;ot%+>e`@MQ*}g;pkQ3Y#PJA+ z5;LZ=sm>VJZHsD1Abviq8WY5S49sI6su2vU6rU}I_1Ps2b+I)G&`UMvSM1<=GPOhZb#u0Bw4rIV+4m+tamX+h0 zRxd+Q2T*woXpza4NvWA3dBC37C9!GUy;t-P9)4y&uYuuMcBH+*h`{MkeSb}B|BCL2 z!{U;oJFs;`G%lsxo z|LAsTxY0K8w-7iWM}(En zmWU5oJbu?yPg!3y@Vt0`Q8|+@`P9L=l|yS<8}zcpUf3A+)-1YwDDl>)tK@HEyXs}b z0(-H~zQtSD zGKT06GN#0QJc*;;;4^?BCxxh?67CW)UcQ0+BN`CXWfxxx1@2yZSKaom&aJg~uf8i- z77Bc9?Z@i2cXn>6!}pT1BjLWKjg8BD%gcM0H#RQq3yb&DPisDgrX_cy={D+m*Se3D zpsVt|VJWp<+R(VHFC6Y$hN;%!Tr7vLc^PxX3(6>ZpWK%U3w#vK>;ffa0{5FCDpm_e zZLmm~E2Uc|atZ^n3>RWpu7OXOE(N~w)1V2vY8P4wp4dBQM|8mn(1hNY@)o5F+@1|c z8k+G!)Xcyggg5irRd_vp65`KC&rI%@dSfrmI^>!H)dJ;5-dy?%#a*~f)g&18CVm(c zXi!ZMFtdvKp_%M5cux8Ux=wJNZJ|3@b7K2Pih^e5v3m@t(!kutP~k@t+gMBDaW3mOQ8 z4I@0$xNF!Ua6yOCf5J^q7qr%dTH<~t6ohn758GVZrNa}WQ!1>>Hu{{ds;(9N&5PUp&C9l5zI|Eq#QNrb zRV_IEg^^uH`r4x1?cRh|OKsyYvH*icP~QWntJ~Sl<_^ zA8e_qYZ+M|UvzCavSY04vL(^J*z`j!b35CDMPrTS9SxCi*i$l(cEhf_N1Tuk@@RY5 z$up`6lmZVNSQD%{XjGf4e1}s8xX=~@!yD%qpJvutu#Ux zYNJGiWV^P=Du=50>XnFpb(L28@~eU_SFkGIS6%92+bFf1ue!wLq6&m4C?T6rhY;VY ze7+iLS3`9P)4zjSqJHM<@>{rzQSDvW#MZ>~H>_X2ba+mzjWRO(i@b=>(22a3Byn|f zeGIv<87xf@E8v>MOP49>y1>#wT~D(C5*ZaF(h4!@aX+IBB;g{CrBY9lh}b^^oHtdT za(MR9p+u#qhhq#kwa*x5a%=#G5|xYIH5`n3*&y4696pyMhpH-c zr4Usrp&(Ly}-4>#0>o{_yF|^~?6$ z`rxV~zkh5K`*+!(*T)Cv4IOxNa?9y!<_yIK^i~|KdL*S>c+Ij}E0hqXEzdo8)5g}; zjW<2`+?L7bPAPxmC95AgffU!1pLylz>W5G4Ti&qc$v@F4S||03Fkw`D764$8(TP%2 zsj)i%Byd=naBy>tod*PD$?QNN6K zvg*T^b#+FXD*_I?N6v4(W?uVvS4ra6E%VDqF6}95l}0VDCU2<^3|&uk*_^hpSkd3( zf|=D^)6`JbGv1Q;X(YTubQXhkE93H;a6LT8PQlNuS}?`+zG~4UA~S89TPe8&Jsa0o zl4EJkhqt`dWw)C@X}9OuJ}JxouEwnIqTa`D@*DDPPDkRM0-HTQ@s81D^xORGrdfU< z!grE&ORtK*1@Tyxk$Z=zP5`&9$l&4)4I^EsGz*Xt#g`JQS!DDODT*-X&-}jSEW$}? z-Cfh&;%^hH7>Ka&-m2>8l9aO;i5BJw6YTbQQEMyJ?`xgcIyyAi8EbEgHk6lmk#R}vekzQFRu%);@ zvv_Vuf0UKea^m>&CM(K z%^AFEWlPJ-s|N5i7^GJ7W5Hl-K1MhxEJ59|r;sf&4>^J0J4m|k%-oS&lR$Xd0LBEo zn8LF|e?Yn@&=7>dK-ead0=b7)IF6remwCZw);4{daB|WQNLx<5pk)03u=2`M>+bbS|hJmRL|_PHfjtn&Gw4&hg&byjY$+V9~ouYDqFxnax6$OwTbZ%8AQ z)lP}UXWaNk@}0Qi6??IF=Sh30R6dLc?pLPkk=RNPyx1@dvpf`UOh*#-*de% z$<7gOM)v^U#1fprY#ToLwm8U9XY9;Ew602PjiG?rE2e&G2HY=KASmtWjMS;^AzD%V zhq~V|{&Nq2%s!ewMnifZ9fkjvrMl(?`77wffC0;=rW&GEl>XMzR2q zosYtZThJIT_&8(KOCe75p{8tQ-Z0(U_*aYYl=ENwc;ZhV-~RAb{ry)xyj{Ng?zdy| zci)al>w9553f&On(om{{)m*_v@W zM%RGSoIW_VfuQ-gB8S`mDq}54!UiQz`{Q~?eyO*nHov+jQoFlg&C=4&CDH2nL8ty7 zC>$Ruau>O*@@-2z!|kOlC2MCkL<`;&3K!^51JMV_(9p%m!w=O} z;d}25edbQxWmdb-RQb#I-H_NJ{TF+tc9qHA@s;TVE3k{gsMI5V7PQrkOz|6&9^XN4 zFwNtePEjH3KAEf)_DgVb-s-{}wUajuMf@oSY|Tv@mhOCZc;t#Db#+Uw7@2$J(z?2( zSI!+@zI=S;^5ydB+9i8XgKBAQ?b5xYbN4K%ou1w?Ik|oN{*n3KJJe;)K*6-6m2-!ds7wbcr^=J z*Lab~4Z*b>H6L&ezzTpNXeK_-1nn|(%uq&yZei&`m#qjdf@)lGg#`#OF^147N4m#n} zdf-z%xXQWg_wf=Y%pD$#_x5ymb#}D1G&ZF3+DUvGi#0{b=TPOisXU5;Q@F1f96S}= zk~nTzae`GQ+@hcsFb&rUvi%ThY2x;1Hb^wq(Cge#vCbMiU>U(9EL-{>;Bi@jGylps z34X|=A>0ZM8RfDSaf8@v3y=;;3bCGLNiXuAcHl_ML z8|E{s1t;yqo_CugS{;bmd(R;wQ6SWx=b+)nYQotMX)voM&myo*BRh z7OM=mipY5Fz8SZ7;dD`aMzUfVG21PW+=#tK7z>=tV0|EyEBwl!sno|Nk2qWbYsXCi~zI|-61D#^*5VY+_S z;)5~{HL4WbEVssHi8zuN99y-0_L5~0WO6hluE;K0_7kdER<~^5*n*u4+M`XOdmgdY z^))y4Ea|Qr<~7T#7M&xzXxUj*@dkaHr~f;s46T%b8QEomkmI=}Nfr(IwV^Jy|4&9Z!79QwY1$Yt_SWf}~82 z5AbSHW8$HB0dZ)(Jss^$jg=LpC51l7&|_>YX@eev_^j(fBBMUL4RsLbF;uK0YqVY` zrNUVh3X5X_6N*-+&fpC)Bpak`E9EfJI*g@YdCu6drSBf3D;G!-;NLySoTDW2vuwu1 z*^G(fHa9RtmxFt!yM>finJWMkP0e4s#TQ=`Wb(iRjEY%ak+R1xyeP0K2ZH1aQai`( z@+;pZJQ=a{RHP8+(`Zz=Mr9Fb9^62$*o@?Kl?QTEwYBmB2eVZ8QsSNRsFnkF&LGW* zcw?Gsr2K=w`Q*fTYkxUVCv5pEryRMpDEq8eeU%A!pQ|dEZTY3U^|5qi3+U(*(1V0H zeXYV#C;E!OxE#+d8PAEnD($UoFs(h&QRTTwd4Bc>IJRHn@Zq%v>$>qxd;mTbG`J=0 zxkY(?_OEz;P*3oc_Eu0%v_Jbgo?ope_{wuSpm;qBz2#TD{#$ zh|MGTh#I4Q4c;ypAnIX%q2VQ@SAE~q0|0habAclrAM}_|x@7hZeWv%M>eq4 zY?bu)#G{E%Ze*Jh_ibd8Z1u*(!)z5ce%;wSQ5EH9z?6ES1HO~?ww9Wz62H%Dv#9lE zDPKjb5IWT6rbtB)SESttMLZ->+~ibG1IbP@=_P)kYdkI9GiP^bETL;980YFv(o0*e zx2L*;_#smTktmAXmeSg}N`0r02dtsh*V@)m9 zc{%*u(WxUNROtm+%JcqnZ0u06@#7r3vY%U6`g6iYrM;Csn%17MPI+!ppBq6JU*_<8 zID8B1#Am9)j02G+_r+ZZFe!99L4ACjUs904EA&Z>E+JR7(j|3uKxOb-SDvCR&3Ow^9FsM5Jz_z7UtIgS;p?83pXgbCc}vg4U~{ykw6e9n zab)YFMF&>Yr^49d6&)ijHC@XG+ZOk?_sor!4zz}9#t)BAMWkPCf9${@oeiEzTRsh( z9s)iXggL@5RLYAC+iB1DWjwz-+5W|h=Qk&x|0d)4!Q}Iu8P9*2eEuupmv}$X-B
    z1!uI5s@g-`mmN($s)z@quDBE9x9J$3Yq@6Yykopj$K= zfhj1Os)KRW^w{ASpObhU?FZUELc$alz(cgMV}#(Pbg@6GWSc& zA_|l@=bQ!f!-P9w%m!7=F(cfp;yK?%YDUtlZ#~z$VAa)L7lBp806i)}&havfj?|At z*0qaW(QpdTSYl?-`EAR3kDoGC^-lP5H!~R+S(bxcb-;JIi^3Hp&poGx+LmUv}HJZb#wtZMueq zI|hc=^+p_am%cHya`VpCtG*g5Ub%CB_wbd=XJnxN{1sQ<5o-TT;$JBH{N&Qk>y5 zmwGo2R~y(=uxF)Cjvsh(cXeRxu{Cvp@_@LC&rU;Zv&rAg=p1D&qqC~2^o zqkEf=Wf3cA4NS?O((Lv_Jc6Jg=4s zzVdu0wFk9XaQ1JAkUt6+kWq?3Zf}eCwT-rqHq@1uaZd}n6l%JnxO7=bYfGWql?OjM zDv1at7wl4m5@6C517J!C+tzb8#yf!ssb16>9wbC;Q0@{Q1ITot`~ff97)7#SyLlkK z=DtA6Xf!goL6Hz-u7yId2XwM;Tm6cC>Hr zr?yXicEEGhCC_Y_yJu;Gcu7<6ns%o4U1q*QefJyR^TedFB40r5~86$FAG~ zHs=>IaY_h22gmgrXl-e?kgZ>5=exCxKc6GKlk@q$jOVnAO8XZxo)diK`EN3w)9xzI zchYlkT$93=;q!VO{_+X6!hlkzf#*!cE>O&WEl@zx0>n94;c5|Xp3s!Sq|L=9$>in& z1p~`61Zd%e|mY=1DZqp?9;k>-8>q_jOC2AL!kOF0Qj8#iyWfFyVqxU?vVhbzrSrfuH}UhZN<9z%!_PzZ^L;}4b2<-7`xi5w6W%M&cdE~M))o$b9f!Y9cp0B+ zPD%M|h-C@0!}0uluYg=%C>IyT6J9qXtqM(ZVF4nBbZ(wg61{U5q5;dB%qvNJI#t!Wt|lPL?8*QI)r1Ws9bqv>zWnISTjHc+il z)0xplV5FVJ^-eC{PM9oOn#W1G?f$p^-gK_M_^m@-iMc?R7crsG}=XvPy10B0eu# zhwwzw6O+^lQep(XB(<9*h+IH$ZU`Dk2aVrJkBqb&w5o&!F|{8`Q^Cq2!jsp~oErc* z!BltJP9j9D=k5-{$CCi{%ChDJND0W==#ow4}trLJ}{}C{JQz{3YvKR&80_Q&?&|I(_X?)TI2V*!xYfx586X zmfuw4EAiN-`bFQb^Su_Y`30jq=nE_!?Aj7R5x+Hwhh2X8?zgvDf|ZR$ky?1ch<_00 zwlA$7roth@y2NABAGtPTIs09_Xn1IB{?PK_`tEA_wTn5ZI-|f)Hk5Nl7~JATZsCyqNfcBy>S6Eq7=K#c_z-6iHaN z;+#-%F46x&pyT|4B_NXqfNOTXWfuvYmIY7?_i znqS!#EHLLT!&YR1LgCI!=%cQWXL6MA#-V}k=>62KyxMzBev}byW zSU>%OcxG)1vC~Lt(u*U7t{BXGP*19e)guhEFU3pxdKtu%-r>IC&KSJ6%S(~yg=10= z>#=GSbhsYc7EGFMVkEyo9@1tg)pU9jbbk>`idJTFONLCWB5WYSxj+R*l_OPPw1mnv zeSWAJceX|^=Uos?oFwJ$o^8kqbtf`8_gnxG+-EdN&<2reQC)>3Y>;4;o+EWHkY(vb zLjnhfJhucr=cTO0&1PbZl0{0fHl^teDUE?4Nj)X4rq?S;L>g?}_L;*d_H*X)oMpb6 z?_B1o40)6b`^#FLFAd4s)>nw5w|wV%D({t5`KxEH-4aBdAbx%8R-|fwJq$v&3ejhh zusROkGJKLkgD{PlFJ8QYr*uR?JguTd9z2L~2ZO9|YutH?SCB>nVMnN4p;VLs-Gs-2 zj%t)Ug_}?t)Wq1k5EllL8FEfci=pIWNkr6$a6YGUxnVt;(kA@Ktwm%u3wCqllM~xJM|dU5LQr z1oMn+ST#K|pTL;`5d(_33c1dSFQ+1o{pae6cw{Fk%hDxHfdmw=k_Cn?(>j2GpV{mq zm<4xa404nrD%X9ImsGmuxNBj z$~^@|`OV62**2cog^{O)Vnk_^)Ldek6RxpRyJx2!8c#fM`+q;WZr!8*eftB6abJA@ z>FwK3Up+8zHGS@nC$HRBuReO&*O=`A?o4s)npdY=j=XSk@#2#&969pBor@OT`2xlW z-K731Zl#C|W8!4Id~l$-2|kr017m|@T^&vF=6GFAS!uFTWt2tjnoYK^ftigZ`HD$a zHO0bJmq{?j!Zc_Sm6CaS3-H_%w1QDdnmW~Duaw2*JwQ>bR}$8YoqH_I1g;DbsLD`) zo@w7Q1_qGCBXG>g0n)~hbBwl^Lo%9qF}~ECvq2HlM`prB?+z5V!i3X-(gK3}Q-i(6 zFCHv-9BxBJxEj*_Vj>jarVg%2rch0oQ2BPl z#e&1-Vmv3!+?^tmKY${i#P)P8KkSG~K3PS_pPw=%zL8-{>|GtNcX_QX+>*HetFiX4 z-8}iwRq^=#N4DPhmA2;RrXTs>@v@=q!*jO}m)$IFf$6Yjrs*(QD0I*M-3PRyG}m0d z<1iJbS#x4jE0v~s`n!^xG#28%=t2hi7xjO~OmQc2$qDxYp7Y8L{Jxmr#BZPQ2!F1$ zC+{Pry^T52+LL}$Y5#Mw?*NVw9K*}p+fng8GO;249IbRG`90OEzIPFSK7xA+G5dhC zUVZP=srCjpo-6J1;0H(WmG)muwtq?Ze5yV7zEs-VGTPHP75G0F03QcwXX1Y8b@&E_ zg}34!JP8Y7r6!l#g^bw}_r4^iyAH-^J*ByaOQfD5GbvUMA{Sj0R6!6d1N@tazd|@C zU3_$|t8?_hO-C)cyry>6CF6Ztlnz9GkqruHnDIL5O2k=v6~Upn-!8Qmf;v!e1%`F4 zH@N~szs|>+v$N(S1ef-3TPqpLV{WBTDy2UF4?^gh2QPT>fz^e7{b^7A(*8Q*>U+K3 z|L_+4>1Y06!_s)YDW45W!gS<+J$p%KQP;X5@rQY0p?lt=-}>sNfUl@){m`lFY084` z!{Q`3NSm-WZbZBRs9r|;cwpmI z;vU2{dZ~pNI7I?>DnId|A}hYg$Af2-!y8cHA}J!31fDD7f%h654^YXBDd}mY@Ih<7 z{yK|ZHptiMeU|+%JuKgCmajFLWwY*Dy(#e~;kKIf21s@V$I(*Vt>O^Y&MO>1AGS=Oj#X!E23H4~hWFT3}(x41LI(sSF8BA0dxo^Hdv$z;~D7&cl$op$T_g zjz+R_<5LWFix9lBd<=WU9GI+2L4sxuVZG_RIc z@1CqR#ngIC@t-nS6ww4E1hg_tdGU&8{6e@%}{f3ar013^-#39I672a*U?c|-$6MV zjwT*sui+&4h2wEJB^COhxA!wYA2I1$i%Ct-rSg5B+nZd;m)1T%E$ zo)A~dH=|DV3*>R>^U?|9xyy@K5x06aU=qmu55GrM@tX3mw9w`#o@o_mfdv5KQkq58 zaF1t%rpO||y8?;F&g=#_c$muM8BD&BN+&3`va+FTeXu|+T64{MMUl}A09Mx8xSUdi59*f>xX?ro3yM#cA|ux};)Zj|e5>KYe!1OsJ(Rnf(r z^oc15mmp8gA0UIFR-SNU++~I|Z+4qeRUJ>XN-+F%3gYX?%bNbMv>SX2{CDw^90rr`1TLa$tx7b1< zcII#PV$a0Wj*<|i!*N)V4u@yO$=Xca$Cq3nid|s28*b6vaR@ugcvPZK#8K`$CCMH!iWg5v4sq5_lBo z=0XyKOqAYQ%lV7QQW}YX@NXR=95Z|238-W^*^%Bxw{4%=N!BBIOAS^P&bu{fAh67O z%naN?E&ycT=6od28o(30&@D^(WZ|fWI<&Zl;YFl-vLtZ)sl=XZt}h!58bqU`$TQga zWs|eWDgDo=uYBru>B{LF_TOxEj+x+O*Ec90idzcY@R<|t6K&F$#1miwE<9t}eNySv zuf!8K&@Q6C{BIZAUv7RIeR%&a=?zvXzaifNB2ITtxyA>SCom4V{b zOJYXZ>?kR)yM2aY>5b^6(KVkME|aZ#yV+CM)Lv3L6tP$fa4ZlvC%wc*0b2^F2G5$rpV^4;S{mGn3x)gI ztYCoySO;+>Uxy~jG7>C=er(pYfLG83Ez$EAzGii^E~ZFpDemKI$;VcRl=2wcEbDo} z%fUW=;R|0k>(XI#i9d_`_>QEHZkA!p@^~f^%pBdU+c*2*fG_(J_vl>m*M%UvJZ=w` z6c^^Bnv2z}qiQZ=XL><{YN0$37{YEO!C!!20*bvsjbRXC3H^yUQ<*=VE??pM={B#P z(FLv0L5E`uN;rl!dp-jm)RBNdHy7>y zETfnef}UK&IjgO}AcPpsJqiq(`;*TKi{xOyLYiTIA*vX%APG%OUl$Ep3QcH=98I#O zm_@LCzvE~Nf~$puYOrcmx`^z2Vs_Xq7=L7`QzMF~k7UIpcp|E9rYkQf5Pb$7+-mq_iJ) zPaa#a@c5SQ?k&d`E;u&XEiTu-EyOqc3bL~5>}&Fb@MpZcQs@>wPL-+1bC&!P)ks3l zdBTN8c_DH?@F*tDq~yx{#Y>}9MC1Vdq6{{pjWXb3IBpUzO;f=(A;C0LHj&ce;jfJ8 zLGq*t#Kqj|7v_zeuS@KlQ1l-7Iq2OvlrtfhY#(&a_9Dqmr#!6!8pbD*VSli%Qes>mqO-- z;*E#|EWidUETWWBoivYhR*6A(2BEg(W&yJvnQ4$*K{KgzTtHu#I;h{k)`a&h9o}Ux^i#-(4L8CbYjoYoU2we zebC=DP*H(A>BUj{Z1RgYnfwLUz4MCM?>-{8wXWQgYQA?OdP{b5Y5RF0>iWlTS{se7 zy=i>n=(;Espcq`&T~yS)Zg602XJKLIT6V3?`SuZ;gDo3BLJg0MPaLC$$0i2XcNIa~ zH#o3{8m<{Q&+pioTX0tXi)Uwtq#$}oQplB=Jv#~etV!2FIViUu`yJ2i2beA-cSB~j z8A<%u?=sT%iKv*ED?=YU3yrlDhThF2494{)*d9d9%8p1iDmuf%U^R+J(Q8noX%=?a zl9aE=DoaER76LT`Tv~3QHZ=k=~bRtCi_NUQi~FpHIlwoDaa! zHX;u@{x+Lk=A_wZ{_HR@9aaA_EA%8pubF$4(*a-p-XNOIpovH>rH++8$jY<%LZD(R zY*eBSCq2awAaAz8YN2O(WCv4L#hB|Y7Uk}7x9}=rsh}RcfwKuAJM;RPPx-q9wO}X* zJ1;iIGa`rES|Y6^(}m0K^lZ58nfD$2%1E!#VRu&aT{?Eh*Gk23aY2G;JbS@kkl5+} z*E`ym_0*OYT8&oY*vJo0?ET{Lm5$qw;`d|HjfcN~V!`C9A(JiA5c$r(##{kUmDf>{ z*WnEO+rN2BD@wfv!^qYv7T@{8ja&0d9G+?qnCZAQPp$^;mSCoTh!+Hd!ALMtQ4Zq< z?4gAP9w+JGIaf=#)aJ|2vr95~c;J$ZytEA35GB4I&Yhs@@YLmsBVdgBKyeqQEpDCJ znYRH1_~Brwl^&3L$_WS%i6o2og0yZ1Bm6E=H&2G%hEm%gr36ytf}EoI}^g=P>2}KH=MV{E02s{q&xRiF4&HZ@0Gvln&n5Kc9{1GMwzt;y z)%8_H;L*uB*ksle=-VYB>IY_lOs0yg5S}Rn5&KANwlhcwuTn>Fvs!FId#?W2M~G?E zAId%jQf6-mz3~h0$f$T#I0b=*p=E(4>O-u(m~CKA1+P|S$CItAoVRGAWzEU$o%8Pe z#mR{eZ|_=g{7bvH-xC$tEr)96cGTD`Zp+n!`!~+@m?M2FyT)%=RbSe(LhdZC@!RL$ z`n~JEmw57T$2u?j*oHmdJ2|m>qGC?bx4!Qw^jKZ*+#K8e*q*xO@krmUkE|TnI#K}~ z6=2GdH-Xkjf>qd;QPYI*zYw%qL4Jj|oZ%XlY@k{(lm?1dSee$D|E6Fzamc(4eQ2ud z78a@qQ3xJo=i2zBxcu$MA%QPUTxar_Ol}i-!`~-;)z?*4)=jdM(3dzZ7h=p7;a~XK zwFqe`(D>OUN!`aK7*HN1|2L{ebH7}zR5FVAf&R2*HWHG?!jSSa&J`92M~ufh0T#8# zcY(}r@NkE!8Z|?4)=7~JMmm)q9Ohg>%#j|P6T4)7@Nk=4_}nuI%QMd*CHPyX^(*P$ zyD`Uc%u&J|UBc~g?$Slnms^==ZipA8d>7QE`+as8z=_dgNk{X&bdMgXLMZNrt7!>z%B z#?fdLWhk`IU@JXu!znuZ(Znff9r%H;a58QV`tvUrbsra*` zq(k6#Cs=&hKJU|aM21U^qR~}SF!}zx8*BrcuOAD~FEL9dPibM-%H9g2Zq5_W*c}rl zyIJ0~@13`|-m#(H=2&30=~;32`a#?TXV_usKc#OXvrvq=<3#~KTq2suE8ZUq#CY9g zBUP_XW;k5r!O4@{dYrXr2usyihKrhV5#aRE$hn6pd>v_Oz$Eyj(%cNVbg6PIJtBq$ zUY+!T+>c7U(wy8-fp_FL$(Jb|gwneL*NV!Wp{@)r@PG2yl(SCw>{G6C@~tsc(w>xv z{07hQTyh868_Gd*0;w8ri&uw2>L5UL8X-Dy9=zBq7+#%F-Kw$&OZ6QNAhU%%Y&_~%TS6+YRYl$Cj zU?&pI`>)@hc!P~?NK8n#z4qF%?;M+&I`$o4^GRWebdT;s@Ot+O^>Gv(aJ!%ZhzFex zppp#t4Z}Agux~JZj z^!V4ut~uZ+w*EURN#vP-WG!|aU|QNL=>LHn%S43#l*tMzrf`(6XVg1*Ri9A z*wMs+L$5QBF;AB5CRUL6qsuJk8O1M4ZByT$`hnCs{hTl2az%XNusBj1c16g;;A|ps z8Y1G?KpmiuA@acWF~rMQF>Tn$ICDn&81lyF`j|HQK_Cq}w<1%y5LF)|p(?EiO#RxM zf28e$2fXxs`Kv;R?NYrL)T+b&O_&460(bdcZ%WGA(YDkqVB4$?Aq02Bn) zJyc$V)4AdSPb@`kS|@4&tVL^0)r&D9LR;-ZHvn-M7uqFHu_Ases|$gXbyUMR$IFx~ zk#zUBr43B&g0%nxhsBMcGoKVTkn^t~vovgSf*4TyLHNP;6X&Y9PpA>0I{4OTP*B(o zCO)7jLedFE!I1(+(iGF;R2&X7lBYy)L6LEf>fd~Ex3~EIuDzex6ImS4iypV7An&se zh?7qx#-;T(+3T6tvHsrOeP;7|n}OYVvSlhLZJfGa+tJtMr(vl*MK#kf@G2NCt`+Pj;?yJw>>rUbjs$84o^m#2Y^Bod zGdt0(#F0ShL=frZDEkjRTw4G1_Ye})&+L-cnl3C1k#_>$NrQU`ooZ%wLiRE25og>} z{T0OF9H2HGk_U*G5R-?SmNJK?ja7RY0U{(AL z(DwFfxkl7~1i7%j0S{-B5QsxZJF z(o)Y0AM_SD6aS_EyUp``gZ00VFZ)$}zPL~SI=AvnWYrL))qAfskZA~6#(?Y+$UmS$ z$KFaRX{x$8ekFaYM2TdjFml#+OnFFODVFI!4ElND zzClCmmkIRQNhj)*-YnjM6}8Zc0?{pknb%dzD4~YwFkbD1I7{)4#Lt{X-dkQUJ6-us z{onu7YW%+0ihy}g^FIUH)%u^qVY)w#ghzHOhzOlXT2r{$f&&DBO?Uf6FkcS0UwR*Q zuMw9ELZ(Q`9%~V=K4$fsZZPVMx*JS>>#@I_(VGqW4LZ~e*q}H3IQ{J|db?6_KJ|8> zixL8+YVgVF7|-bK7y|rzmH0I{`SQ0TGbK=nUvi3@FT3T;U-$?l18fEoAA{cfV}t$@ zQ7=h)@e(S&$OOOq4{<(Lz$R=Uzg~-(JkFuHw{gE-T8Dp%_b!bQc?Vh)ztt9xp0(V3 z`<_J;6N~nokpHpg%I@CY?j46Po@ewy_PD_fOb33XYKMUcfG%dqu2efL+s4Hn_mtHa z7SvJ7oVtR-`ZACHWBBIr(6>6Wp4MUM_R0T?y=JJ#TY^GMhQDq+1f-(71f&OxO_vaq zed--c9|~`kW&KU}$K4lf8H$iJM$%ejs3o{s^T*X6tQ>4CDry|8jKs;{8;{g>cGfEX zxJ7!SIHCVBq?R+}txA=bRBu(tDqI(|7JKpkpD!wHL53@;KIM!0>2L+xlwZ?V6^?he z7L--6NndS$WjNl|s{cTBMeS%?peR^WTV6Y_wFG|sf`Ap(Kz12{pYynkh69LJ=_n(nKi& zBA_Rpx7ZFn&$D1T+o5O02FTBXo?<-@g#CYJzO$Q%+M+7o)9(|tyGkhW|qz$nDGJX9z%Lob#rCgGiioyLVVspn?F`B>NJkcihlv+ zJCXl$U0Z$gnc;h95t48Z+S^`V+0jO>AtuyEn2s-5#hV&eyBO97Kmpu4z%G-pD9Ye@~SDRX^D{uWc=Ndu+UM9r%Tyy1; zHlK^Zhfp5*#Mn~VT-$tV=_W!3qrZNiwY7G1n(y1QhmfK`LZTP6wb!=YaOt|w3DG&w z=Y50{h4>PG5=4C5ZqgrVqIQxkWC)p0bcB&$l0oF-QPBkYBq8og+PHl$vzx(aAJ0?s zb&miTiK-t=0)P+UL7j;H6ZbiUFFCwC#C;ib%$fTOl)i`DOLpM*Fjn7UkPYN^w0R>WJ4O7D)CrW~uQ|+hrSA*4S)FJ9nb(lI_9ifJ( zq3TH0s79z!Xe*UOlCdb8L*^oG!Y?Ju@k=r4jfl6B+Y#>~#}Ge8K16&9zm%N8FC}O3 zOUWnXbHrcZmy&v(%gp5v?GR&lvfPxDQ?5H zDMt)#scu87(`{%;o@Z!Ib{m=;M+^%cZo>k*+t6sOH#At?hI(teq0X9XsI|EbHMUm_ z)wUu-Rnj~|Ws=)akyvDypLoPDFVSt7o0wvlli)VYj-O|k74J5b$JZOmEb|OAE!zw; zEN;W}IJcoRcAlXm_K0CxtlKa(rrS^)<2DolPKkCKCY#-cNl|XY#HemVVN`~pAkuBf zH@OWHB90jHBHV`Dh zyJ1wQ+mIewWJt|;I%S^0kz8c3SuKXxm?A^WH6g?2M2938%wQ4KZ^ZC9kt1vd({O_! zVz}E7Zm2gH(W)VI*pNA4!$J)shq?`+L)?ZC`*6eTVQE8BXOH06P>x+QeB2QCtU4D{Hd4F}K`n9U`clVnfVE3QyW7kio^U3sn<^JXR^1tc7 z)-zJxN>;*Rza}b7$MZW=b$oGBR}Z7~SkDwM;zbHS4EMLvQj54a?1Re5z@L^R8x__>lI(mbcPl9m|8oeEzi zJZl5@^@EA3oB=!q&!i_6z=FsMYNa+>Nvr8fx|QBZUGyLHJaw}WmJ0iOoITI}%06J< zDXJ2v^j8KdCM5=zv_ZL3c~yB`c}pc~pcf?rGig zx^rPPY<$=aVSB^A3HvVWUxvws4~+rFYm8yW2&36(H6|NJ8OIoNjBUnc#+AmKj6KFp z#y!S^#=DL8h3moxg%1fghDU^(!xO{jMX(5cME{6^5!XbFhzN_YMC3Rh!#U8Am7H>+E9E{yOgjPOJl2^$yIjS=n- z`!?)*F+yS-WE^TViV@n4>2idf#^uItjBtbTR^we5;k{RkaJC%bfM1NT1|xhBBP18& zE~a6G85grJ=3#_CV}#WGgZpFm(`<$NDHh;<%KZoO5V@P)KxVn~;a->05$;9IkS1-MC>E+AUU0!mz{L-$=lP~SO9B}D&%K7}~`bl2$)LQW4o?SI<$<0+>uow{)9yHn4fiaZs5YWS&PXJ(!naH`)a z_R%LF{q3Wd-)|tKY`$-g?_<7?`X2NBqwgcW4=ed>64sOd^mF`InU6`zlfTOG5bgtV zzbElO!{u1n`A?6msikD%KZ2U8=hA#yKut7K)vG?LuhOadss3sJR&uQ4Y!3Z_{-_R8 z2Vi!*3k^rxC+PEE@4sNKVL%kcN%eLnQv&@VzSjqE=%e57M!{m8dRem?SISWuWT z%pSHd?8UJ6!@e>Q!vKTHkZO3;@T}o&!{>&J#vu5uBx9zr)c8l^Uybh>|6z284+uAf z&kBD!{EhHW!heeJj|h!uj#wG7CE~7#ha;Yk_11OQ@UxQX|Ac&w92&I zw8!*aq%Lx3WNhT<$jOoOBNs-#7Wr}H4^ci*!=o%w%(fgzCi#`^8Iz}He zEG8}{B_=DTG^Q@5J?4>^%dx?+5wVWgyx8*Crr2lWoN*K4%HwL|u8mt0w>|D~+_AV9 z!Wck4Ibv%t96dx6z9zQw0BEBR3c>Ia@Gx6Ui z=o5w}#3hVLn37PD(4Me1;nsvdCF&Ae6E7wOB^i=zN!dwLlFF0TB|V(V4kj$Mx5JA<5!&V9}cDTOJwrM#3H zoa#&+o4PG^ck1(LiD@ZmO=%CL{WCo^y*_HbM?8F+_KzTa$m^3 zm^UhKecls!Cnm&97&T$pgw+#zCfqUM(1aiJ)AKX)OY&>-*X19`eEE7)G}K*4JTCkuWmj4Pa5SXa2I@Nb1*7rG~|nYd%(!xR5L@tcX4 zCJmgFIjMEhQnQ~^zxuT>ZSMiME@1{0RePQZ}spqB*o)$GNf7(6M zKA3i{B%&m-WK>B_Nl(eWB@dRoUaFSnl+G_b_V0hEADsTv4F4GeXWTO5m6=I1GiR2} zoIkU3=7E_%mF1V+RQ7r~Egw`KRi0X2P=2ud;;hlLuA6mYwsCgF?7g$k&lxvo)0_|H zX3jk@Z`{0-^UlmWH{Usb+5AW6|5)Ky5n6F;#hsNwm2FjVRc}{)UUjiLt-8JXP|d8G zbG74Zx7NO1H>j?r?$x?~)*I^=)c>LWe1olFY(qiA(uUtPyw@1iIHs|yaew1WjXy1j zS}=xBbnIppKG`Z5_Kie&6v#$7>xQ zcYM+DU8k;dNM~hdW9RbDO`UgkKGgYq=eu1ayDGZcyViEy*7dut$GcwbdaLWhu5a*| zH)K)lqS1>cFRED7zUYQUw=X)f=+BEjSafM|@M6>Aq{Y`Rer$=dWXzJqOYT|XTFREz zE`54g*s{iD4_xPSUFmgOulxJ*5zFT;-?IFL>qD=Py#BiD|9btK*Pp)ryA`?>!&fA% z$XqdfMdOO=S8Q2vXvLpaytd;1R{U#a(8}Z>$-P!ySkt2ey96f_m8XCs(!0RtcqVXZq?LPHLI4a+OTT> zs)ts+u&vuJz{nI>T#=!S68j>T)l4f?W+&2cCCJV^$V*{uKsfMK#k%$D zwy)d2?!I-$*1fv!?2S=3Cft~PWA}}}zwzhwh3hNUFIvB0{ektz*1x*`?D`8gW!+SG z(~g_I@0s3npy&L}!)}he*?RMsn>d~oBl8{gje@y7ETf7%qVY0xI~ro>GtoANg`Z|d4~ z{iaQu_HTOV7RxQEw`AS2^Ok>Z_S+n?Ibrk4&2Mi0U`zikQVGZr`=twf)Om3vO+?_1+zUJM25!cD#MtpxYX6`{ec!x6iu$ z_S^ruGjwOm&hDLCciyw}iJdR*d~4^KonP&|uuH#d;I5IoVs<%pW$c=?t87=zuC`sv zcdg&Geb@e7_w72i>-eq{yWZdR)vkZ;CcFK158NHHJ92lz?v&l*cjxb(x_jg99lMY2 zer)$MyFcI4e^2_Jx;@+W{BTFY9SiSRd&ki`zT2zr9kDlg@8rE3_a5GRZ0~D(zu2eS z*Kgm@ea3yU`|SHh@5|XYdEbnE^Y`uB_uPKEf7jE;=ZZ7Q0qf5iKj0}d;p202PHm`BvQP!68#)R(&#ve4<=(MllV1w^L1R}Lr4nVH%w;+>g>hxE!2?>qzXmR6&W1V+d-(u%i*m869f;O$!_ z-hVZcYP8=<+6BFdl#p6rjU*ei7Q6?oMcje7<|>pT(kAjtM2j7LT2Hu2>0G=S>;#`m zl7+UL(Bl7A|NpO+XFUIZwWncx^`r~EtwhiNxBgCo6zfR?#{8e^{clqFZ$|OIjQGDF zU+-vstrrq^-l&AMs%e%7IS1a?&-d?RlZ!dq{BMYWG^InWJ?}rgI&Nq`x6?i9P zV)V+V2%em+adn zm$6pz*X0UOzY=|H1gCoNEC8%Vi@mez(YoIG;GDU)<-Osx+wlpJ5q+&gJOR)%W#h(dcgxekYL8ztP$+J%opIuTApV>gCNnNE_ym_gwSTMq&qV z9yE>Ta=2P6#i-MYQP+yG8ll-;7;^(?+z-c;F%xu9*tC$qRX zpJruemKy2c0^sD6$(i{^a%^(ZBqQmWk~zaj=1eP^Y(!58-l5`?NB%h*@xdpleq;a{ z1j;qoQ4A%+2;XOfkWey`gb~A4N(cW>rThO+rGx&9($w4U!2hCj?;bcNXC^+%QE6KRL|`8j%46(jD+h#Z|Q#j zp>*G|^w#+IV>eb-Hg(b+)z!^ybd!izh`3Y43q(Axrlqx+mesXaR?{g>jrEl@zp16G znP%Y(LlYe%;uH~EMI0yMND+sLc$kO>iZ~Ee+o`^lw?JCkYg)*KHsIv@4)lb4+0kLO ziP%m)0iH}wA$E|H9bHu&Q-FhIv_BE~5X#1V)U zX`ejJKQULqlb^oOi98PZ=Mnt01J_LL%!HP&mBA?pQI;W(l4!pspF;gt`Zw?!p*yG> zte#Py#P42wsx?LpRW9K76Z|e$5|tr}FZ*5@!tP^x@mqnn>SlV1?xLkMnEXuMf^RQI zi@a4|1UPWb?Jnh@a!9#H`JHmFazwdL z`8__BeiENg->n=#?O`OIB;d*D7Mxw!Le7yd$yek&`IdY~exT*FjxNGyTX*7f^+(vV zid}IiJNj@8COYLYn)R}6T znxp2bdFli;UoB7z)rsmPbu!vx;17LKt!g@++J4c>)$H+VE%R1HeF7enuWSW5Hr1{s zs}9wvrl_fEnwtI_eJN7Q`m_Q`;hYM?6D@C@OG=X#-ZVgRO*m1(0|g$5)ieiBhFk-= zO^D}FoUQQaIX*`Q&QNL^WJk&VU*$xizNdXk#(}TamRYtn5V=^#M41rLC$pM_G;b{w zfuAnn^+$-jQEIkGQ#M3UJvyo)#mn|`8mtcLlhUivyuLOwUOFF9fBs37+Mp~Z*I|Y4 z`o-r|jch2&_J=hGLNZtLjYjN=Jv_M-hKSFz7O3UwEOj<)Z>~BIpDI`26RIk8q4JdS zwDOE{TzOV`PI+E=0X2vG$F?Wp*}e$YI2F$UGw@X7;e`34KOjZvi(ZhjI+3U>-%TFL{nUPfn8e;8VV#$<)zjT$el@eo0x4`tEt&$k)Q)8L8#&zBr%e^(O_twBn(i`ZOKHRs0 z^Lm`}>ck0(8F;$PB5AOL5nKw88pDAT27T8n*o~;cN;}RC1yk-5Rh*FGxg2}Xi#_kb zXtKbxx~&{nuI*Fzyr&%I$kWPm67vWD7|eY=+iWUQ&+;$xz@}>Z~maTaB>MJ zm~eVY^B{4;gK+PVg))Oto7do;K=qs@gBRiX5eS-Z5T^&l2`da1r_i_s=)rF?bml91 zUcqTD$(7`<&4Ww1pC&yO_+E5IbgsW^woup$&9cB%!4 z9cn(}WOV{!yPAjCrsg8HsyT?$(FU(O6LG3K196Hv9kEj_MeI;Z5GSkC5Zl$Mh;3>y zVyjw&o`#CGE`;+XBRF3&obx5aIA1c9^MyAAUvdrSixm`n$sq7ml-0@_oM>apF|{4> z4&_e5*ihwJwB4vK#9S{`lhC(ptguzse~eNS(Z?*TxRpqys|o09CRX4Ilw6|5qt6*w zk>?{XO|_u!+(U9+0$bUTMClm9Bl{=$w=k2%cxN+SL zYuBt^)xC1X^~9buvg6Jx;7;y}) zEPUd$vfP}I@bK~wQ@AU`rAFoQP+8Mc?a3%d6R3r{XkucCY2wsbWyai|3Q-G`(qE*s z{50O8$dj0hWtWz@@+_c>94$RTq)|{y=3kLr;K?=_U8K0Dr{*Y8qR>o6$WbZ~UG~l8 z7)iOwRb?@So62g@)KOm&7+zYD4J^=uQR4(~FdhpgRS4BHO~1vEZ(6mC2WrFEXo}()xg z$kM*Z3FbMEVu2(O9r~>OKuVa%41ZmQZ-!q+APZuc3r>0fl*eHGev~{INP}p|QM8E> zfP9R0AN9)!L2uELMtY2Pqa>$wduix7FV?3au+#=Vy>|rDXO%q|NYK8BQ6h`~B*f<) zWm7DsUbUWDh6&6)N~c&VpxP6WRHAZ?P-|C4Nf|F&5dxhLFE7tYi09g6EHl-Hn97e1 z9^BKGdo(yWdty&E6dk%I6zpiF-dthnDRXg^} z#tK(eg$1ZFIIjoU#_CF5nhZJ0l&GUPZ%oILagdun(B*Hc&2j~pvb;It$#^YC&vSfC zSuQ$6lX|Wx*Ep=Pr`l8n4a_Jms}HFwuSDCf3{#~`HD!eyRY?}CYZ%3la*vWJ7L08o zbg;-$JR3&Jg<S*DyEZnT~nxyBw>MrCycO5~P{!U^%{ zLQk%#(pUrMf#E`OB_@8Hb{6MSI;*TFu*Otlf`l_NdMYvO5My?q`{_9CLRern}FO26)s)W1Xp);CB^}t1lr1#{o0Nw`#63f3%&OTpD$Y^*3ZR#bqBMIk)I=+Xfi z>ngc&akpCx{`f0~?+2*tDM4Mr4JgFrgB75zvepz1=MGxAkgJ$Ja4&?0l(|SqPmig` zMbX8mJQPOrW|!Vvzybc+ET+m@Od{uJtgIDv^Uz%(9p1l?TvK>Cim)gycP==1iz*&f z_dpw6b75_|r~y3#dyMHl@LF@>a8+~lj0!9Z#$aQfQA~9uG?@#bfTzmQkXFzS7Axwb z3ErD#%h9<$QN0upqg<^Pt+20X6+N3)<|^h)`Ja#Y19Gj!#fGLKlTQ$x2LA!CfQjP5 z(?u0Pyctlv5MJBpVpz(A)6nV{@Twt_BCCNS{4QTLv94%c2+;bgG1c?-U4i1yFUsW` zg^6~l=!2H+!-wN(Q{d>dRtH@|ceMck2P?kL@jo$;3Yk!&Aa=ATmPS4RKJyusu=+|< z$T9bm#qg08NL851%Q<`eLG5@A(R7d2Fc%kE_PweoBqxn|K$I&0rT7puf)@Knx$uWU zq0c-|6C7B8B>KzwNa>+hJO#-Kxe3wn3QE+Cd?H|^((Y#(WV#=pHA}}pe zzKbF0#Y_+2y^F6YjRQYZ+EGS*;O*gqO~FBdaP&RZ6*byI4JnhfkTHC#1bJYh@rSux z#9dQqnJz@-mIaG)E!L(KW(B$M0^a<^@Pu4ink0RBUXM4E3sO|((uQe@c#*{y?ftq| zkMDoS45}bz)8!{R!o88%mv`*nv%&)cpP)j{0Dx)3DC9%YLC~=2o}TJT?6Btc;}#ld z9sv44j42&MOP6DVY?fo(#hg3(fB}nSX&E1W0F*!|PXIE4A;+gQ)eb;rFb4h<9GdL+ zF}IrwP?pw22l=8sq31GN7zS^Q*IR5U2bRY}1xn@dAT23CT4~@FUSBq^&8gonGfm#c z_(E^;w#ZXQX&^SkYKRUT&BkDeYm}HeGe&}R�r+$1Dp#BZD!_Q9V5YCT&SEargfy zo;rxwT#|Bl=U);sA|AGm0`Efs# zi21$#S*~u-3bCE&vm6Q%h9!+vTO@~Z*+bB%0*SW@XT}S9jrL$s?0M98dh<=S(f4>xWUrXqm|=(@<7%zu>?Zk zPi+2aA^zx-_xbB~%YVwo;*?zqe|3yBn3jZdSsWwtOiQs{$Tqo*#yN0`Sn7|F$)V*v zJy=qEO#HcO27k~&%ro)*U~4GfAMm}5xBSRZJgfC31fl_q?U?&WD1UJ3<-5wucQN?# z9`tw^A0zcwWy@8L&gQZB6GJ^luo|1Rj;LnIyJt?%EIclTA0uI$z3dN9_Y382Ty$s~ z?~wWmd5YkN;qx#NV#p?C2DwpZA$D~e>C!(#=IA~m4fI`dBf}{%gmG#uDM4N}Gm
    uMGu$VhwCfV^VQd;X zuIopZ>)s;A@!jO(svYSQNPka`Ode5BpOZ@<&joNtuKC?~z&spD-Zr zPJ9!V=;wkz&hp@!m`r(*6e|AUTSq?zoWRHLkv;G~@ctkyMi|b^sQt(y^(al$-$QEH z88TjVkYeOjbJ=s6O57KeW=)Rl9g>V-;bYPHk|VmYWC@oyeS!pnUaaUKcL$lGA3?_I zXOnpS9FhdtrwF-o*KbOH(A=gpp2_L_D0X(>Tct3vw>Y&eDr~WPc9__f@zlY8f z^f?%E{sYFj5%5RA_k{e7?w29^8pvS`;G^mtsFMNxgngjQ&B8{Yr(9QID|c~uahm~L zCn2XFXA?#KVAT1V&mouNl~A{nC|(-3HON!gTp#GOk}UT*L>6-U<2E4S8VT2No8)%! zZz1ee*vu7B*f8epzlGe^g}rfG=W{G=p4%O_{l1Vrgt2cUPwEogZa)89-?`3t#^&j( zvWQF*p+DegGL3G8FKk0#Nbg6u6TV|Fy^Ii`OC|o?=5(=cxBho-w=xj$0PN^vz`dBi zlkV4qox#tkI617o1V7331%2Z_j`PNR9vAb6?>l;Y9Nw2t5O(xF%EE5c9T*Q}#mA@b zhQEV<)89l|QKo>~q!{;)q*=K@X7D*>C&^*;JF-^=O?M5(?I1qt+hifnSI!9gIHJBl znnXFSGuOKR#eE3AH_jB4<8!X7f=_yf>{QO8JoH^Thcw#6+%&5l?$7keWUqccX~!79 z5WKkEA)nLu81)MJi!tl0&>`ppA1CiC*IA!EMCbFAR)&uqyocy8R$-Ih0ZMu44v;|6 z*4Oxi=_N8l?xuFeu?S!DC1i=UKo^0$@5xr530OyFqt4A_q`nBW}kl8j;gixTbC5Hgh^egdMOeC4-Yax&5!-n+zf&xt{U$-?L_*y%zlp ztaEzkMg!KmmE=xb5pzN4D)f`jBi9q3I%3y%k!W2l>8}eT{e4=X^Mlb&H~MiG^mi@N zl}LX}LUlo;pD#oD70l<;WEAu*RM+GnPjkQ}szf)wn?_21@7W5^HH2W69 zFHa_my?m|YI^}2R)Q6hh<0nRo~#4>lpOKhiLv~EbPD>0 zQ>&hJ6@F}p@+Is;^V!4$bvEqTZYD+_oS4#`B^KSwWT!5YY~^;VektIyV!b*KU8x}v zdI`B-(ZfG*8`a&7zTplO-FIl~YxL_g^u-^2;QP#lp!2r49ior=$?%ih_g=9d@T?2M zPjlP%C2KIBbzUfWaeu_+qW*#8s-YxO_$AD_7kbuCId|SUgumf7&;66|5m!RlM|_%k zocjUpr-ZNY%ul=~C#(Ug*k^u&JtOudK53-O$3YhQq>}Oa9#RO|jaQeEBA+iIn+wF> z*9;w=hxQ^cA7;$QaroT1n1@$LBVQMEr_t`0kl7XTxFS9DiuAAdQUAIA9FJW815AUw zlm1;k=Ij>u#KnLQbKeNRa@9SGq-Xrwe2@M92E1}F;<5MNf?l87cW=UdFxFD|iur_G zT%y6B=K4O7dLZ{lSB`<}Bg$X!!3{O)L0Sf%7mE;&5QX*lG{PCa_ds}E ztj$=LJy7>|@(kbK>7FKkgzK9r1KPvB;vjiYw*${WUuePSVG_=R?l0tzy3y{>b@Aj$ zzK<03`8;Et$2`<<8L{WFH=0k<07rA2J@0k{jsiRln22E1=sXY4EP>wgBCVVd1v%ShHcLNRL7KPM+5{C@b9O`QC@O$=50N9%-Xh zSg+2KHlD^=kT$l8WZ|UMF!k@`TAXp1i9KzKY9R5PAH&+sCXk67hYvfzbdaSFiB!&$ zT*XaB>4M2&T?qE(gUMW+glSdZBnx0uDa0xu z$7K+_IsdEn!TmU!;C@l#?|$MJ{K4DH*TeHF{P;MaGguNYLGLc(4vn92s`c_q2+#xf zM!>fKaSrzKKM|0B@j0Z+P(A|ChA<5{?jpN19(AW8l!Nv-%I-xtp#}FNpc!Sz1)PAu z+y4_nn1m=R(!6Z3)Ljm>=h@!1oa?h#&$(W!50iH6y%W?HG8uC|9nU}sfJ@Z<*l!xJ zRzHf<9{Vv5nl1cxdynGzeF}-d`4W6J9J+HGNmSQh&vFOmaFTeRF(3FG>=!E3X88DK zas$F#gb4`!5ULQSBV;2?M&SDoZim0gn?KLfH%O5TV*tmn$4GwPz~5QuHcv$f;~@@L$K_8D16Hj$gj9k>ncAk~o`swZo3hnWxc#cgVSIPLZf`H=dH`_q0P z-;*C9r{9ym;=JJfq>5CN&7_9Bgl~hqKwcz&BQIn3_bP4)t0R9WC&+8Kg{dB=u(sgz z)*IwaoFn{#{Da(tZ;v$M8##FAg73-fC#|?stxbG;gnyG{5m`*m;ro)yaE9_a+_1JB zuMzJgD{?gvr8q@4oQ}ZV zcA<16&Xn;pIN>ycn#fP&UpQqJMa?vt#?V-tIkQlF>`W7BlDG}YPLs(6oYryTL|Q6M zqv>=M9gXv8W9c|Lo@UTYnnli#k7+i|p}91VP7o(93+Y5UiB868wjx?gr{ZIsqjVa- z3k^4+&EWT-;q=ceIvY3e{7lZ0|D$v0TsjZufhutOQWfrBs=+-ib+{v~fi}_wbRlh` z%{U|1O55nQ#<{hhnyCtH{T~8kW=Jc z@)7QH>ZYscYPyE5#Rs~i2kArfVfqOD zBiW7nv>v68(Ld40>7VHn^e;H^_Y{4aK0}YwXX$hFdHMqVE6zK;L|>+_;5^{p=n487 zeVzWDzCqulZ_&5uJGiOlBz+I31wWu4(vNVi{xm&9Kc;8t|IttAr}Q)WInEM(LBGT; zRbSDsagWnC^jrEJ{hr^IL;s1BhX0}$=tcT7y+kkL7Au0&G>j=sWjdy3J~%7m$NX6U zXYh7DmuaVOMpHUf8Fg|d+>j2UpyCY(hu6N_X~%*>)$42xxP z%t9U@53+ccKpw$bf1D+fhseX^S+W}6lDHA8!E-E$S;-URFU&?BXLj;WmdqTu>n??# zj>a1|+~UJVvoUNe8%J(u^62g+sSsZ-E0rL1K*3-$M&;3 z*#UMJJID^P!|ZN$5BnXv7q<`H$9~W5XMbQWb`^OUtJ%@Y9UcfzFFS3`|%j^~QD*GEd!Cqspv%j-9*qiJv+-UR; zdzYPL@3HrBU)hK3BX)|NW@p&P>@52~_6hrxea1d#=hzqQOZE@;74CpL&%R;bvhUdU z><9KE`zQN}{fk{-7unD361&XYaPU-Nih>suI@}EAqxdR*ioX(|1S&yFKim`+tPH?? zXoHl&$~E{-$WUdNGF%yRq!Oi=m1x|X7OTW57Tmj(fNzl` zDOSa%*l~ZM1Gg8ZD5*-ClCF$WMk`~KvC24Qypo}0Dp^XllB47*dCCMOUnx)um5ItE zWwJ6wDN>4+skp(ZL@8CKD>IatN|{ow%u;46bCkKtJY~L8p;RhWO0`m>)GBpKz0#mG zDhrf_N|QKY*s8QC*DCEw2Tt>L;hx0B$`WNMZc4lk-*LHKS)r^{x|LPhNmJzpWu0=P zvR=6fH^1GCo6$Dn-l$t}x^j!M6(`YgmmnHBp z#O++-mabplyBVe$aQ9|7Zr?Pik!qBBm9wU*^(x;*xysp3^(x<$5hrYmaR&F7->SLV zcPH@X2j8ry!(Czg?yv>8H>^o*R$Ih*@N4;vmTITkr7ltzt4q|S>N52@b-8-II%WE# zNjQ$@)78>wwPso+%<*eoRNLNB-P&HOQL^k3CQIm)Fx@A!xw5*wwZ*4WgZj*>_S!|Y z`bq(OGF$6gTWS~jRBA9FySlNxx~sXasdh;~buX@F*R*!3)rj;t)s<*YU!#E>v|ZWh zlPj6jN+!7)6MQQay!>-fud=$jwx!d*){FY&O4hX+)aPm~)(Q|Xp_h3;eJ`#~;2o() zBnD`+YXi60lLPX5O9eFa;%a_XWxLvdNMF#|*i=)iZxq0%K=!#&_PIdobE77h0@=Gp z4YGnl*0>;`u(#cS1--b|m*f-)Qv(;`Yq7O0O_eP*jn(=|mDOFHwfZIjWRWZhv-Oj- zVK)h&PU6FBLZqLf)oSTe%c0Gx&5@#?qSb2Agw;~XuS{-lZEL7ia$D+^+Ln5sB00QP zIlLlmc&!2i6*Y9V)K|85H8)jubq2NeP3fm;obeS%bX)7EQx46Us-LEDZr4DGR<=Wc zfRbL31a$P`q7Az(Q^G8LsaCmD0JW4)P$!?D>DmN!X%jSEj-X49V7fMfE&+7Y+Z$Wz zbzM9Tn%=knL0x@QKGWqyc4;tRW^ca&7Wcu+``}A^as4c9gv$i*pM|NBs=UmL>Y7?x z>O1^1d0(_*m0r{*Ggpv&Dr*G{DC%gc>}b&N)?Qr7CQZV0U1w`cYe!H`V{LnFM`MRb z`DZq@HB<`Jud=1Jv$mhdvK;EvWU;VG>XP|6Un>Lv#68@sHKm|94)h40l3msN%5pY-?lCHT8hgCCThc#8w zHDz;H(`8ySP={4>P7Z6fq~}VQr$L*x3^{C)uTAo`NxnA8*CzSeBww54YmhSmvgDsE$Db_uCrkdxlD}LR9LbV@vgDsE`6o;M$&!Dvy&(* za@=y!a5yDjr{wFDe4Uc7Q}T66zD~){Dfy+#@uu7KGwa(cv3XgnftkXK>K6;(H`8NE zev3VrzFaG~Q~<6`cB{=9)YVcWcTY7{O+nXo!IScRN_$6bjlQ|Dg)i0}wbk$$ezi-g zVeu%X)lJRwtE_8mw5FvyZ2Gp^4!8(4x2s)Pz1?ONKQhIa(iH7@etfgR{ei_8#w?beha+_ur!)YMol7QbMza8|d% zb7_l_FqC9_%78w!cJ2aeWyi(T*sZBr7p&qcp zHCF<piK)!X%M()!sHv7MPn%kMmNxatIhtxE=V+>xoFhbN z%hgN(P_$#q)%pvlmAB_5>xvp$+go(4BAzbdE*`55t*r}%cpO?KtHUbw+9~zQDbp!3 zog(!+Me28o)bA9j-zieRQ>0y`Nc~Qc`kf;6J4Nbuiq!8EsoyCcep1gz#f7>&N$Mg9Mk1E(xn{JCBJmZFJ1CWm;BNt zzjVnjUGhtp{N!VjBU6qeQ}WN0{4*v0Ovyh}^3Rm~GbR5_$v;!_&y@T#CI3vxKU4D0 zl>D=#9J3^U`EcgQlKitI|18NrOY+Z>{IewgEXhAh^3Rg|rLj1&B>ybQKTGn@mi)6N z|7KUeb4mHcxh|6IvGSMrxm&50)b^rKFz#@}hx#_yE-L#NyyI_3V*sjZ8)T+KcKg?s>od;mrN0EK)2 zg?s=-{{V%20EK)2MgIVWd;mrN0LA=S7@e$76SmgCp#)0V5*C!id^W}isQ@oV;pv>d-@5!UPzbje?{PoyP(%|4Nq z{5AVTTJqQI)0V5*C!pl7*(cJHzh<9EOa7XDA}!^w*(cIc{+fLvE#ntdWI z<*(VNEmyNoKq+s{9+8&v*6a~!IbO{k?bgh!LA~z>#NHFTuBtvXvD@UdfxYGUHsp$8 z;w=ZK^%I*qZ%bOz+enbe_0-ogy;Xxf`$C@IR9n|Mz(c6QE)%rrnzORW&5TWMW?&6s z5r$SuD9cHwW_P9s@#>XTc+<%H$V=Jsv_}G4o;Ib}KMGe1C`1OBK8P>v$yw>vWZW{J zjLlZE)p`}0?Fw4TRmyRiESC-Eb!B_Mpj}z6PkY{SqCH={A4|mTTQ(13_aMprMc1u1 zu;NA2WEz{`U!-|HA6DOdE$tEg{MOFq%Jzjy-TXQo!u&=Ni)RR1uC`mrOx3&%phNJn zC1)k_JHv2Ko|bkvy=nQ9R-|!vUVr)K)SH&?D!pm>%FC117bNog#`J{(1QZC(lDJSh zfd?1#Dyty$EATu<$+AM}1Rf~goyrWMpfW>y%O(=}xGk($OKt82-@!@R*iPXM{-sY{2Y^%r- z_F&f@)-gT831wzElLL5Lc+t$YM^0I`5OMF6rFhfweY$4~`pcKx-n4wJ>`lwJlb*D` zUUVh6&zo;S2&nIswI6>Au2JinTJgd$k>4RFdge&BiI#8)pC*CqJnzu#R&C!6D2-Oz zcOxzQ9H8*4fWk!p3Ks#Wxd^A+-#O*}&MEhIPPxBx%Ke>F?(dv(f9I6@JEz>=IpzM& zDff3yxxaJD{hd?p@0@af=al<9r`+E;<^Iko_jgXYzjMm{om1}boN|BXl>0lU+}}Cn z{?4hn!n`c)JrJN6FQ6DNpjbx$#X1Hk){(p{?L82nSjPaxIu0n-F+j1d016cX6!HcX zat0J~1{87zlzg@KKS)b{+WVfoEbV;{pln}z&x5pVS9`yMv}|8{zk{@F-;w3#T~z$M ztBp|iWUJlJyQWBr=sov+GA&kL?)PL`TR@WKt}t2d3X|n7Fxh4ggnm}lHnlGHtRL27 z`3f%C^9n9ah{ozj)0jBY#L$q|m^4;GC8wT{rJ_3iTqYbU%a}}kj}*##b3O_5j4NL z)~WoU9Ss%lb+m#ljj}->!K0}T7e&@40`T^m>U_1DWS$s004WyIjaxMbl zY&aqZ!clD?8pb(^a-5YYr|}Y~#!M6x+&IRy*^a%1gu<4Q7Pbs16cSJjs4JEe;vdys&v8PTcV`dkp9Cw6lA-zf9T082<01KklaD z_pR|;Bq*RXV>M80_S&%_TDImdt6grMOcP_la#3~2*n76 z2stv015A@R&S0j-BaA@khky6`Gg|xY|8=T^E{Ho9X)*4JV>qW3h_jk2a9VL1F#=cm z%rfp*)E`E91?Ml#$Q^;Z@Hp*vybb+fK129k1#tBpj?-|CvmoFMCoi)wZrqWooD}Ia zk0kI7Ba~7;5H-dE$Bl2^ypudn7cBBdiPrK&ZS8-Q67+(k;0$kyi_jE&!zSe*!d?WN z9ZuPbumNG6gx!FUWeQ}O0$HXsAn^PuggK}`0|EEZra-}Lh` zA^z*v>-LvHd(Qr({V_p%$bP^59)TUO@3HR?*k*f=eXV^3$}O?C+nWTf&R$`kC9qQa z6nnnFve3#HdkV@~?Q!-Y+aepR64(M;jcuO5%52kYlLVHB z|9&<~U=CZNEk5`uO|@RO{$%}@)2v@wKjAd%DeFn=8v=XP`hxXo zfjw@0#Oks_U#thMd#%tFfo+x82J1SjOVGNl%dDMN=!&%g|A}pmpv|xrTcIJK1U25{g`w<>72mMCViOnPSWehossl%(sP3LWYS|v z4+-r4qq%Ohgt%NpV^$_VY<%p3zE}{Ylw!FE-3e8|cLXlk~D2u@BR*#0z#w>w|sorG4ea zKJ#K{65p3~-?Huc6?Vc)d(n#>w@s7fp0Ir-v15r3NbEja;;*p7UfO;yw#$oc_hOq8 z*K2j14uiAx%b6MGfCG7<-ZIPGuw1<}PxR-Xda*x>Gkvw428kXeMwFFnf zy^_a4k0vJU^~^%T?OxheFKvUD_PB>;e=cF2){66?gl@^htK*5@`At}6-y^woda)J{ zWxsWV{vNHp_yh5B-r{%I-jcMCKR!_7i}{d#Jf7GVX*A1) zBq?3X_Z|;y`O4!#ET4I4XKWd=#`{U_5_`)_JK?3h=%pR^(w?v!lQkZ&+$XWami-d* z`fST~&$?yt`s~CD-jyW7;~i};TGnfIlYX>Fk8W9R@ryb|eXHg29hrv3eHr(Oqp~k7W zlQP%a)3`U{Ue#!EFT_2qmFu0=xW~OMKN9DXy8ti zD6TWEC9Z+z$5nYOIc|=(y%}-EvTmWb<(#CK$*!wvi zdr#~Ejh1wOtn@jtJ3Kv&-R!N~>G7=Oaha(neTc3`aZ z3?6+(4SlRujKo~~|=|s|EVj?6K8Z$&;R@ zTJ*QkvTpPz(WfNsq-VBzbv*iw=vTE|{&b>Y{7FgHcp>^}4NJlkhNL|n{fMOD`9soN z(f3O1phsh)_eS3?X}#Fi=nay#F1lM{%c46a*5a}5=!WPjNt+WrL&Fli`{(H5_?KmF zp+{=bIUc$2=O`_gKefra-aR#FTV>sG(P$Ns^Wqm7!s_1yRylMCU{~G@7|7O8Skcn5YO@Bh>SR5jDi4&r!i19~GATBEuI}zWG}5DvPzbl6DhqeV!oX0;$ zrbXIiZhWLvPxF{aqeioih#Vnv2S@gkm~SML*sCV#OH4nS&P!US>70g{&YJ!oW8VQ7 zRh9ky?t5=$l1ZOQBc#nt8U)fNg_;6{k_HK#&_gJp4-gO$LJLKtN=E@fMMR{=?xM0Z z!LsVQy6fuNR$axlu0rPJ`KsRZucmSIYOU+xtxLNV0cwqE z{MPJt0vnkq(E&TbI_Vl^yD_!Ce```3W6X)3f?16j3enl@OJZSf5np+-${YCEz zn;LC@T8GPQjda*g*^ha!JknY^VBh1ZyWj57L-w`y6`r~!_IkYpdG^S-eU8^-vDeur zdEmy{M|etAc8~T+Xt4M7)D_yhc}m%KkIu2DcxC98jc&Kwqjk81S@v+f!r+W zyV-+9^~$bI^UAKRHOgdbjWYdaU2EjY)*5-TebkEYeJ{TB{@!-e9`Uwod%G3xH80$6 z)?I3ad$|?v`PRB7Z(ZlFy=`><+}lRh1=|U|mpNx_NA;4eH5z4WjYip8qfxfjXq2rr z8f9zr&dcAdYw+^kwzw5;erw$ZNF9L(+Veh z;o_UUb@4y9*8MyFE4@eYpT>LiY370Wzj*pPEZ(D8f45Z;#h-6Qe{V(K;_Bm;Wbh2R z^={l8FP6Bv*3zW3NpWKdH*wNK)d-UDxT?6axW2UF#1+PMi_4BnLn#F%dphJkE;=qe zE|`4XI5SEr#erkBxbWCtV!ub}>)6lrPh&qq-TSd`qwY17F2%l#((|!Ru_t1o|6&iv zJ{Y?zb}LF7VjE){VhPLq*jcetW1)RwN5>9}9TZ!FQXjmVAKL|`EWFW)Vwm@&jU)#w?2at?^hJOqR#SD*X)Jt4%<@y?K z91$E^AUgg5tskL<$rMbD{U^| z7nyeRleiR0Wjs+~ZVabD-=D*eg$ zQyG6M<6p)2QyKp%#-GaXu44SF7=J3`Pi6eGO!zid#qNV|&y!~v|HI`0TwX?H)0SI=7WTPZ7$`V5YE?@W`_nPbuL+nede2R#}u8PbqV3Hq%zhZ_Q?$;|Y&Eg`dTy zAe6WJKnCPulab3KsBCmPpVPKj>VH8)le#{p;X^#< zn`m}ipmxOtek+07O<-(y6O8;i!N{w5#8-3KYM4(oJj+@bW|IlIVi;vS<%5j5JwqNO zNToeN%7HBTf!xY)rgJ#AA~S}`1h0hgyNmeUeq1){W$wF?-};K*Dm6v|=WG)wSC;dq zo4CH1>$h`#GWAPgZYbxeU&?vCUs?m+y_+d{o%`FwoNr=0(OlE0`2(hrVSdtxt3UC( zcQND*hN;s0P+!F`Z!^r>1fzrz4ay>>A%to8k5-Qw^4jp^R{q1~|1i#a#_&3qw=r$o zxaM`42%ZzQe)KfH z4?KkggKxeBPTYu$vOzHX8h-bN{-hdJW=NS^XZ@f)$&j$OfNdbR_!5_2WO&$#cq@%D z$5Yu5&+uCe$$&q@kY}hy=|N?s2SF-auW-G5ko9wW?iXx1yjASJgy#eFRNm!JALdWX z8BaRTuNQdUrSqpR(5K>cdRM%TTg!#aR)O5ni0@;U*E8qWGv!vEWu5q~jZDu*re_M5 zr!WlnU0fg-tVAS5y_l+A3^|q|$5L55!|)UN(~10P3V&+j`U_mo+DSRg^@q8BIzQL2 z9IoN=&pa1?rnUsnFYzC)U&$C&a(Od76+gz~$2DX4(=lA`#N`28KEi!G$Ti2fhR0NV zM`b09F@$h^Ez?j-Wua56a{VZNcNCYWae10C7JS&kBu^&J>$>d z`q5m^mawvzYyQL-{>0_Q1S#wF-*WwGu31fZaIY?Xx}2m)`H0F2TTsetTz-u(;NIBz zfZ5HEyBX(Q49~n(xbI535i?p|#LroJnPgRjvc#q{wkR5FCCZ3zfL2SG!`*oF@eRLt z_j@jX&*eq*6g(ru&s?*NTVKZY-;-t*I^;}#YbL|6O)H;bn6DY;YnI`z{OM|jT+QXK zjIArlxd^2iHHBrqmY@3=!*`6~JI0XBZ%rrZQgzM4eUYR1-KAs|D`v*|09(jQ8UAjr zS!6sztuRlPF%A2uEL!-}Y_4BQPsK(xij6p|^x<+JE*EmSkU3vQWx0&Y-*Wj|F0)+8 zELUJeTj{GFu>02P%tWR1c~^o3fP33fsWS4lc9pq3|43cpXt5=lT=$t`f~< z-QIYV%JP23d0p#{ayUJe<-|#46Uhnex5x0@$&fou$51X|K74C<6*TaS6E6_o#HZvz z$U{x*sLWo*Q1%o)<#8Fx*eck%urg!?K|=QMmhu9X?%eJ(_97AisN* z-~EbV))0*H7IW+^k_zPGjA2}VRRH-Z_mlrfa@yQN&ykGaYkRoTR? z6te^tGh{KhRm||k48NUQ+0Ghc4$DIY_xcBx@E@2nKTwTgCrBlUXP=!{e>=%7B!@=C z&M;Q?v%Y4WUo*DZjAu6Ena!AgVG4Q8Qa)#x?ItsNx}71nGluO9zn$R4Jqoh+#X7?^ zJSQpvcuu0S(m=fv-!V5nrLy9tr*x5QHrYyL+*FCDoXqqjP}#^@RN+-mNv9g+2Ezm~ zOaPTt-HNVd%q#G=kS`kgqpfpXQ$l5B13`-GTyveuij!*sx#lY>tGrSuAL{bJHEgkn zV6J(XYH)Wg@T-ToJe}T^XEEeS_8K`lHpfyy@kr^IBqwQ-jc(ptc0>wEF>7&L}lE*NtBQ0 zn!6Z}K98!oCWY`Qx^32vYSavF<$nJ35pJa;V_^SOX8%;3&5}^VFhi-V&gGg4uBqUf z!(20&YbI0KG>D$cX{u3PV3?;FW){ONpt9jvuHliAf8cU=-0m+_#wmAa$nI3H@>34y znqsc`fZ>mF%^E5zcI_}A*$R^9aQ#}no^TqYxST-sik->^H`iFX#!6*V9M`ZVqdZJy z+{ui074`^33e~88;rfRe|7kAA&=XeBUW{fUmBn>_b|M(jiD7OM9s~Pd@=yFOpX@R` zN}np3OoQH2UxsI`E>EPgTFNz3_$_@bzGiGsaQ%y1&$CtijB9>jY-TDOg1BZg!|bK9 zTE#USbC9>AEaMLN1l;#7;g1*m^tbrgA$^CRozjnDfV2y@lMj`y z)BWVqx456YR{9QikS~zjxM6%h?pS|_4glfa=@M~2?wu|d+i~-BmDqt>r-zF@xN*8( zJV^INi|27y^a=4IZgf5?zQJwI=f!vO1tn9o;D%$TJRNr&Pmt;6;d%0I+&8>HK7hN1 zSIGx)kMJh>7~LT(KcVbY4$Ds}k0{6F7nI}53Hdy320krc#Ld7j%9n5x@HzQS-2VHC z{3p7%R{nX4-Gf{`%N%)2TgTCp1;S-87{Px9fA%0AID)e--uZPZ4`D=d0(^D?x@?-P_Mqri)as6;SWy$bAPKYJq z6rLhSADe5nWNp z$SlrDN=nWN503~*lXJ3jbMtbXVfdE`wIQ)GxNHgw$<58l#=nz80#OkjE*lrV*>AuH z)7GCHHtFo5r8Ao<3;G?XXn1zgpD)dto;q&e(q7eRDWev?At%K@XU|c@&Q6o=t(m-a zi0R0~YDfE_m?Wb%J7rYk^li^r-xbUKhxN-W%8dA4j5l=XmFDd0ge;71`NlW}{)C?t z0sbfBJ1^{oAt}*m_5fFuzr`rEZ;x}EG>}>8!B?{iQnRkoczT5b-H5OoK`AaD1mTIo zA*{dinb@-L;NFLJ?BBV6KymSa(gFRIna%G!rlhXh^U&UdJ0IM!e?Xr;14>H<7+(GM z{r7+P;r;i&z3;&X_a8X0|AGCBZj?Y?uKxSI_kQ@{z4!jT>466yJb)jlYDJpb^0nbz z*j9;BhSWn!Eo^6s%~K>xMvzaE!Ou_X9PZ}|HoGzr;-?J~$=a_E=Wl*u`nEsM zFIhi6V_@3&CnEbybnaYIe=J}7L*TgCBDgB;c{vAgI1PL{KqWZL<-yq&3;GC=vREPeVp5Y0By%+4-n;Ui)O>GJM%b-ho5-;*Nx6cWZywULpzy%Zt?@ zSX6;h`@&#@uSqrgDFH(E_cQu5;D{g;29J)C7-6uQ6eZc3m}gMr`;)}#Xl>KCr=HyZ z%s1NBSg|bG7^*Fv`-($*d4d?J9T_k36JDMx8qq?H^qJZT`=@?V;2E>8ufZs#(^LfI z&=4Vx5NL)Fr@T{a*QP(H)rlPsD)IZY31a^~aS(4;XupV!(si6F_CIZCfPPJf63fV} zjR-`q^W{9TJiwCI%XWWQvdw%wV!$Jhlngp`tUvXvT)d8NiMR(+>2s3b1Lt#WVddBm zeEs-wf?&OiZ%gq5KNVj;lF5wBg>AI##`3%_6%}3b%3ZCxRp7L|B>%``?{@}6kMD#j zpkcsdlYex7^b(B_%@AnP@hxAgS(pvMQoI!WR7`-u6=n!v$){NxDjP|YL-|-puUibE z7Mi#;j!6!?QC72Z7d*G>k-yZ9fA{2(_og-f(q-w?smr=_xu>q~o;>-3Q`#3V*ParU z*S`{#XHRQSe*KEpyu3lE=g$dcmCtMKhELK=@%Aq|=-Mv5r(Gg}NU zd?`q@AY@SaPGZ~yTaL&_Z-{tPa=wf{(Tv7a4zsCg%~@jktSu#tvnL%KHlzFc!;{us zoH6F;eC-qY^#{e8*^fRj#S-=6q~M@OApweH@#_gAdByX>CnSv8ga-2RWR)Y_UYqpha!Q(Ko^n3L4;sWj*P zD~8R?ex#^=;FP(xT>HKGBQ9X1VRNZ7;n|y|aH7)~4mlS>wwP3xtTUX*gw&JRJ6Pxi z{$&fvh6p=|N9xQs{^+ifk6wO5n=a$)o_(J;?Hpx*K64kC5A*9P zzi?Wc=|eWdG*HvUa0TDulu7-!gmmZ-9&U8R2Dk!@yk4bd>2?D8KR7#I0skYyl32`5 z&Re45u&2p_*De~Uu+Ug}TH?rkUp?Gux+7_9`ZIqTW%7$1yLx29i&I^1ZJqJ-+A{Ie zJv$rMj9yooP%=lJv+~CK50CXRKj!bhQ*$569F#uo(xzR1UsQSUJMH|zhu1t%v7l$c zvgt+O-Vlrz>1Cs2E%Y_WveG&+h+7i`bW#}NMRHm5&&ogCPZ^Zcn{T`iO)?Js%!D+? zK^}WZQH6o2kv_SqEVjsGwNF>cz*W1;v&&+~#hF1se zoi}22O>)N>TPH0(Jz>m~ch_#8o|H0q-KaTxD{mf~+PHdV@zlZgfP~?*l^Ihf^qtTz zHnv|)pNVkPWN9qEQ#b9_xP@3e<7U9PwUHuSZbJi=Tk>PcbKF{=omsJ-Ug+~IO;*z| za9G5y&;RU7?dM>mdH`ux=SZ*QLY^x9I*eD|)EYsd1yDg9R7{OiMG&E}&4 zfjfk97-#RNUD~+&LmD{I{ovuX50uyE=hMJ}V%FK}WVVokp9%{yxjdTtcHIrt1}TFw z0L`s>{C0h=oGLFUC@<;N3z&+?bFVIwi(!|N>ILp1e&l8;{Fh<{jj+86-_`` zXDClM_s7@8l<(W8&Dgh(G-uoP3<3^-f~M&$lFz|{8?2H46DD5}w)w?ge-)&}jVR5_HOS|P(ROEIm6-T?4&#lSrF>F|mv6GyMd(*nT{BZU1 z89j0aR(4I%F14<{vgB$hF+OKFi*I}zD0L{b4k#-Nw`9nJG(0)03O#7v2>_%a|aMxF3t3O)x zqxSIAi#`^;F8@VTym<46$<=eF`1rRk?>Ko$7x}N_nzjzF>Dzz8pN_A2V_}?Cn`TQf zPwqSU@u|-W)A|{I)P8vAqW0yM+=Q)38E3_i>wgfvudh0(J)`Yws6Vp)rjOsa9W*cS zpCJ`1kO>}g`@(<##R9EnkX`tmCbl?e{RzRqPaxM%IFX>0CPVj_6m`f$?pF@HBd7gI zPSq;*m||jl%~9=q_KDM4x#9U6edJp4WcY}&aUH4$MrxIi!1K_ZSD-u54(xnrdtV=` zH9A^~vG};!OYCOq+MZYC!M1png(A$O3E=|j8r~5SV&hVh<2=4fEkZ=)*AE-Dp>pXz z_q(-gEhpDLbmDUnadvy}9m@<&hc6Co91&~|s@OEA@wo}gKwK78>)xlCHZCfgNkI!< z53jMr20taWgFFQLwpv=mKRJBJ=|vxD?`|D^N+^%b zdUHhCfJY5c19!f?`lP09a73Sok9$^Be)fp4UY?oW@o`%g_zrFuMu8h<+>#UgRIpKY zg&1^>>o%V1u%Vl(#RNyv;RtcY1H4Il^k;3hc=03A_td+Kzkd85FW^i0qU10Cqn$;d z?U44;chCR0@aADeT?FA*eg%F%sa>JJ(brdCwQ`w-rwJNWvb;jbl;&UM*XCE19QQ7{ zxBCSow>6#6%8w(V#Dj_adS9B+UQCRL{V>7%E41&$iEkTFs7v9 zh1w(EEuZoE+3MxF+H;D(J3Tq&j2QIwC!*@vv<^==GB;}4$tN^zb7-Jo%|<*=_wvL? zQ4D@yyYRBz!xQucc9s)Qry>2CJN?=<`ORzcA@>+~XAjB~Jsc6V7p_SDXOZP05mRBx z&%;~iuaOmxD9|`RWW1_BC^SfcP3Q&O9Tt4OAGWab*W|m=m*!I* zSmP?dMo7_xL4N*WLiGtW%dUuEAATtd6PH$p3BrNdN@gl(AU2Yl;1EiY*2PCL8J-u( z;-m>*YM6LIH7UMYXZ6bt%XbcFK4@sVIZ}P}Mu{@L*QVtiZ?^OFn&QJ&k~-Pn*XoC% z^7V)>YY221twm6;g%gfG#%towZa*Kz#~_~nQU2Z}8x1e2$8(q8*T4DiXkkRB67V~y zblP=uL(R4Q2d|F*+w}vlO_D!&O#9cx88a@4@W=iks-AmRd-AhWn)|-{gmMbsvzd9X zh9Dx(e{~`H=P!j*4}*Mt{Q~`EmmkX##W!g6Ar*)Phzx%Nx~cmj2pG2)h8}DFcHq%# zVrA2oWyeMwH8g$v#@NS}m%0(WJLZ17>(VJ}8>y8g+F|Z#I5aM1pB)RaYHHu!V5Zr3 zmHZzvQK-uZoWPzWdy^Kg-|qLAXV!~R+UMGr{^9=rqyHzgk1uCxn?#BHKbfHO;2ZED z2yxk%!ayI3#os?LBnWyc&@<4)2MhUVtv;cHQ z$zAy8`{rM+E*g4l^w0%83)j!S=gHAx-HK->hQvp{Z10{osc+wLgF45SPg*nLu49M* z9(8oe8ePzDY*}i?41|~kxFV@gJ6N0HZ6Jt(K#*7OdbBPqIGg;?YZ|`QPAfJTPM*YD zO_1(Xyk*6@V)d0>fo)_P3P*LsORRcy117|fx~xTdS^Gx&@U>^2T6&<|(9~S9=lcyJ z`6uOg^QdQ@uYPo%@(59b|I~i~Zy-_QD?=5zWL;W$gb>GY3d~1}t*HNS-+0G;<84uF ziI4X6ZEp_|$mO8uM)Q!&nKL?fo-sR1c?>usB*|0*oE>0$1o}iIC_x=!gMl~5GyWc@ z2)NUfVeqXR!AN|c8ZhYjsxvGg7?Jh^!s=vvpQx_W3*^2pJnIw%X88#|63 zJtQG({*oRFZG%8ZO6n!h=|?(PHu(9d!c00?_0Z|n!Jv<9B&Sd>eWk6`mcB1O*Sdd# zFQy&;SFM{o)4dJfj`^bdqTJP8=;7!dVD*6p@HgU%GF5!Fs*7=Y6lxJrVe%u$QX%I2 zO^dpwwfhKPuK9fP3il;BU0Fl4^#g6R8|h0k+=TB}q;c`lS9&sK*)v6qg?&?-I_Tzq zWVbt7`I}o-EL&CAsjW9R0?Pr!2xkI|NeVnmrh*ZnZw}93Y39XUo~b#-HSM~vXwMsO z?7e|4HNi2hpYRr~gdEe-SHi*I!&|cbB{%aLp9{$e{KA7@g7wJu9x1uuz>i3t%?ZTU z#cNvD5yLBce}#)9@O{&d(ypUhzE=LJPLN`7$EBmt zVoFT(i?v!MKR=ghc11`gUQbiK8y&30us9~SI=~5udET&BZmuwSy^0*U^6Hh%$v$b5 zR*s#tZ={fg@x^&lhVJWMSaDJG*zGWHQaI9Z|LOeo**0blplsX~VJ0kyscSF1fI|O3BNilbRc*W)KXJ1~s{6OcRr0wG0GnaP}4M)~* z+K7nmie5|Y{cE*po+s`^d24tAftI@%A4tT><}Rf_D$A6T!RSr-DF6 zgv4=FT8@f6L62K@Ah}zluE-3RC-3_7p2lx>k9r`dN0;T@>hA4Zyry>K#va`^gf6~$ z?o!L*g!YHR?PJcYYB)JMCGKQ=JdG4uQ~Q7q5jr12%&uU`?~CEs8_ zSENUFIQYeK6CM_3Yh?i~OBDUZrj5y#Cd<{EUz_C)RZi@mc6h|#N9P~-u5t0-w=cdw zK#mn%=Bg9#{%Du$X*!T8=g2|Fb^lji`#_O=M*HsabI%PsIInnK$87tM^x=a=kaD`YTsb|V zXW6}vRYV5u@w3jETTXjC?X*y}K&`>LTOgH6oeRV5{)L6{#;#pEbdaJVBKlfQt_&%N z=L|XD`qF;^rVvrU&NsYhkf1*ypcookn27_oj-+IsJ>gDNhlQ$%x~T-uiQ|FcR&Q_+ zqb5H2;F}c-Iu#Tb53j3zacyj2H;Y(uJ|^L_E9n`josvs(&Yd}@y`g=%{D~1==TtTI zo!V{FiP^K}%$h#erG-AUWy+>@p@Xw~j_jE5=$wT|Mi|V7g|SIf^N+kDOzpZS#UzC6 z+WO3;ZQ0{{^(YAMG`Q#B5lZcXnG5Rgnm-*0;sW1lEveOz#3flu>d7n#}F$L%prDconpb2D_$7m$C#_h*ei~Rj!8&VtyY^aW~$BPiZa5? z!bs8%YbxzeIzu98)d6q4qo)^iqY-t^2t9rs0bOgD^VD+}r`PRReJNvX|0#FpUEUw# zXRBROyyR#~K+bdO#6SGWoi0DUV#V1f-ACl7htKOa^7vBsWwl~g*RteMqsNSFl`Bve zMsgKobQuDn=tF#oKJQiwG3qvgmX6&BjAU7P-SS1?++Jhr<7+QG|gXiHwgbh{U>!{y80&Az;5XhU^e zfa-hY;r8aZ>J=U9mUWlAte7?So}TN~iP|UHXV15+>|C0fJf(w{Z|w45W@W}BgAXr> zUv+lev!wiLlHrrjF{));*gFT$DU z48aaYo5cmW>;}KikF31#-Rvuk%MYddL>@N10L_5p1SjAVMg^pww2U?QD zRW-hy$>pbd1f#7d)n;QYnFR%MqBqUUJG>}m#k5Ns<{#-Z;N0lt^U~%`pSHc?v*#zB ztSsukYv7cb&P9`Jw+#~6)3=p4Y^NN#Red`Y6m;lNHGlM`ohb=><2v-}*11R5(kV6>loMq}x+lhs$|)z4dlbC@?z?d)2XH00z4 z`Av7}>Q&WGE|YW64tZddi^==4CZpsp&>?-L)*~Wtj>ukt7{NOdhqN*8{41ifkI9@7 z{?(tg(Q1WzcF~?J=bl1&%gs~37a_?;I&s{Q=nk_RmB0=$5R;CO6XuZ~)Tvcq2s_|> zQT*2m%h<`@mtKPV1!pJih+n%%tHH-$iD>74;_upP*LDU)hvMHsmN4IE-#;A?9gZ)2 z504JseMP$}%Z15f$5ys$S2=EcvilXa-2I1cOJ*fUl@A>hD^GOq?=-V6$v$IQ54q^( zY0_*k;E)GU0pAO;CtoAHB!O%qv&%reXB$PAGTreazrZ1mXzM={K_ciAZJoIHGwnm| zgHPmaIf~K*+@HIzQW_92%bFE;YgfPqh4dO@q61VZG9<|5FL@9%-objGb)M?G0s0Pc zZeE`J-dC2m2$RXbQ`AR)(Grqp@0yx1AS%4TUQk^Wj_h;y>dZ02J36sA`LT-BO8z`8$}c$qgZkdc3vnh=M1A6Pw7geBcZM%L=)HcL$Sxk5d`Kh>=__)lt?m7woH(dRdwcR? ztG{*eWbO5$fe8>$AwJO}9pYk+gW_Ff4|ZCivbk(gC|H?rcANfH##~d zMzVlnyp9m*Es6(wD9uB{6_cKvL%~H_SRkuLqTSf9ctZ9pe65FbV)44OBfHM2ten$z z%vtUE19HN^B9S&_vBlqdcdbb8H84>;D0;1%rd{oeUL+4G)-F$7*9X+p$owzH|4HdxmpPqFN_y6hDyiw* z{hq9hC8a&;<+bsVeX@_{w zp)?<-)nVoBM_6Rgk(W1Te5-jg_T(Kme=-#FzEIULy+xqw7(!ZJj7nm?KADtn+f@cd9mJckjNkYu$ateb-JNxvqD&yDIKm`t-!w zr|&krdPs3Z9*T&sKC`y*$zhI|W6?I{{1wZxf1Q5j-whTlF!0hbKP#{o?7;eLiLhG3 zWBvSM0t2ORe;9}QCO)~qoKfJ(De$U&iY)LZ5B}0<=OE#NWK%vh`|N-|gaP6ywbsJw`cSetFvShASEN2V*+TTcQ23<4Wc9USX$?gcP|(T-_nUSDrv3xGXIc zsv4yp0!2=#q|jlDjZF!Qj7&*sA081AAJ;y}-#-Ieco`YKfdK)k0r4q+WF)4)#$Jbq z%n)brZU3eOgxtL3JS30N!j%`Hdmg3;6I>5+lTFF+O!EHQ?lC@{6u+i!O~$-}p0hL8 zPH&7$POz_>x;A}o&%*g>Yo;~EC*9v?Uf=%n`}CRLuiv~r@>@M!8SAF5vLz(gR!v!# zJ}*CiUdEa!tKt&r-)l2mJ^Rh;%`X%e&nMnPpj0~P6fSit43k1bL(Gt-V011d#9xG| zE`Rh)pHh@)NoFa2AQjM+yv|{z<3y?)TMlaE{$k9V+T@?LcSQ&7-IujLi;mi#zt`&C zRuuWPTUqz;TFot#wGXe8-ICm9rqkZCiue`gFUMLi-_Z`wd7Aaj*R_t#-(XzoTYgmT z#i^29sTdkJDBb3a?a^C_@adEg>?=r@r#pF%+3VxoVIV+OJpLYe8nH+f@`Pn&;(LUi z*GI14nh6E{tKNEH)}iul#rKVN)nvKG)ovd&qG#XoFJGVYSg-W@r9C&#N|`lv>W<1o zUGA>wlvb9zvOaH^l05MqTk@R2cW>hR`ez)WvT^vax>jzI+=}4MUvGG7s{DJTe zk;A&Bbnl*=GIY_*tnxld!R<%(%Bt*_7(5EHC(;aNWd%;WP$p*JnILRv`;sPMuD8i7 zNNiIUX+2U?d-hCC?IBioPfg9wPfhJ^Sdiy*=H=$(Aghu8k_SDhJ?VDF;&$%kB2Okh2ug#zHs&;+l)oT-;TV1rWYuBuaX-n7Nvo>>ncIMP6 zD?dM8Gw$d=*RTKL@v&nb{~~nG6=8kops>C=mtH#bkoL`$Il^)C&BoX3<6{;_wLh_Y z|Km|%%fh3Z#y#=XhSgu3nl$c-e{E>|@64m2htSYjlD!S`Ia zp881}^auz*kiEW)KKb+{nKschD|EOgTqPDXHcoDrvY@P2P0oOAvt|q|$ga!G?6U6K z#QBxoGA4{RTwHjURyZcTd*?C5{l;XfYDz&~Y`baEiP|RBP>_?EHlDJv2TAjke=6@F z78xKV6k7cJ{SCf8KE?pWESZe5;KYinSrJ56Fg(p4tty5QR3a7 zh~@i`mF~$|MED4q_Q;d>N=g7ULq{o}qLcnUfr=E4oDaoimKstc+6s)GdW8LE%6l!@Xsh+;#Hw5U=ZK5Kgm4?Pu6Xv$l z7KjPje(|@;;Jdm0*Ta zs^DA-Vju01&mJtD3-?h-(Ljy>eJjq$$$yCLwTAXY)5PtAtL~pPar=-V+sBWbP&0h= z_;E_ zwh3mBS-*35@vw2n&Xlgq@4c>Y(%8Cb^>e2VFYDQTT3%WHM&nycCk>hw<`Xhw(88_J zarfF&2I3oT7gqG_*0W>6WcreW|BlcLAOG7T^w{e$ku94iTf$36jY@2cA6VATXbX+0 z962baT~giLG{W&XVvg{8VBy;eu_XGbN@S$&n1y7e;Zw0Uv)a{Z$Dt8udW=BZtI2w`-%EFLo)zjV8olBpLUjNdAb*A!8RaJ@~9O*sPqhAouKQmM689 zEEC;d!RRF8Tj-H-_t@6m_8y^OyXV$|%r+mb@#}yDR|`3KG<%*aANy?r=Qq4 zVN<2%Gj!b8VME7`9j?|r@@&)5BTZHN=FD5TaNfKH^MJns8u~MjhK6+^`0c=nRalah}J&cD8^|+wL_bzyh)6~Iqor4V!Rkvsf})b zt4O*P8(&6~f%d#YuudgPxrNbTv9XbnR(t#Q;TA=)_`3r91ASFBNQfZhhr+B0zKSp< z{pp(CRX2nwSHdZjHvB{U2UZwm_l7ybgp&f@V5|sJ#vEyWXaQJj%_7!Xcgi=ld1CXS zWy`ejH)O@!Eu8iJ)Z|F|((U;|eZT-7LvTPG}H!gJsp&n z7%qeI&iJ0YBB`J-F0)&=?CkXXyu7S5MM?8_C8xju4)IfMQ9{_*@kr0YX%}64{U-a{ z&W+nu7>rL^40UDqn?o~``g-WS(pC9=))m!^n_jnI&eRcQJ$p>)Ql7tg{Q4ckiieGV zLdo%t)`VXb#lNdQTHRve*4vXS`u6U#NY{C_XE7B6{X_57t-93U1>sgC1l&{JQjgwqlv6InnHOI?3zH9a%sSF+PanUEK05%k+gKq zxCcx74ZpnP;(Og@mGBfjjKnAc zd?pS#gr@bzBF*2^cL$!q-nK-g z^b*4)+yT?y3nSG@Jpki>CM8-2YDhmuTUpco@9!Y&8WbBxFsfz4pWNu)5VuWzto z4p8u8z?OfY@Fa{OL<37SJ)NvQUXUkX6B{8iTHX0qV3ju>ZT?a-U;UH(sH(b~x1O+=C2R-N_^QxwonZwwSc_vazAkFqHP zp^=eU>JK##8tNMyD7(VEIb*b+$m*;JS(R{zD8Z7#4M-)T;X;BXg~#L-A0fH2NqgjH zZSl^X;_zQYm3I6z60X|cjavnfV)-vhwv?AVDc^fcvpuP0VTZRJvM%*;GE6j)Wa7Lt zEdNST#JvecqMVm2oO#AQ&eAz29%UHhw)`$ky3jza(Zg+lo^poC zx&wx|tJ6~_T?UN*ncR*#5OG&XtFVswt2^P-CKOstzC!WwlMOy*Z$7kc8$7kW#^x(PLQRww0EzcoW z?FOt}ItAFZFuEhHs$pTBJ4awyb;Wh);OFP#W4D`qIicw_TAcKs)HY=-@Njlp12Udu zHa%WL$+XFWV|SLs(C`SsF+ER0-`r;h)GV7ewwjXq>Y7T%EuB1W;$Jc{-1j6 z{igrafkizNW7B$OrcJ0HJm>xa_W0vr$&sTfGW+#U%N{z;C3=)68KyVTm`|H!+St-ZeFN6jvNjO)I1TY%5G_XmvBU^k7>5a~ z^9ZIT_!gFy&jHhwXwhM$It}YSsA(6V1EDSGkQv}k9pb(TxOu}?XiZcN35v}a8z1Kz z9xinb#MGwU4{Q?Ph&{9jrZz{{Ic$mP?LBvcYNX&AD9oO0)$@9EKM{xjo-ba}?Tdl0 zjK8n!?tdP<|MTSw|FU^NeRYg){L;aiR`Fhk>U8(?bw$0_)a}1Np=2J~9?)_9ym_NO z)4n|XqIR=!(MNmtey}jgnXJrtzHH}$rO|nj?(GA2&#u`u^p7ugn_88DG3Lx2o^6#h z#;`n}V16XuHa56P31d@5Fpz`qbr@tzcsWmU&=#g%?ED=Vk^{yAIcQ>-&bQ-XdUTjd zX*a`U-2p?gLNJh(FdChXxjG1qj)K_LPl#O|M~R|jp~w-E!r=%~r~-Q+_}_C{jKjye zSEPrM^)iL9qL46@nclm1y63OF3dhOj_Uu*MrAu+Ip7IOc655#A@|-$LU5gli9iCiH zVN^^~Qh0cLd{}6($(0-(ZN?5p$Bw=}oI%iLUB9))>nl8|eco}&36@A%u*4v6;91lS ztt)-5I_sV<_Lr^bGI-Ib!oDK(+p;xz6^n=G7dKx6@NwJFY-FHJ3JcSQ#0|+pN{ZZ} zsYP02x6Q9wQu@Yf5iB|+I%ZWZ8u04!lDjkH;SufL`a^Mjn)_II#Kfl{6}0Mn-|%nHc>HT zh*EBvMbQs!>&|Abx^mXV#$hW)#|0=x^~x24;){fu;g`RAZQbVmjq-{|#x3b7cSJf( zrvaUn+EAd^jYeuGgEdyt%ZIg{H> z!YMSb^1!j&dDTd@F-Uz3~}gui6E5T`xfA$CW$qE^oa{t)sX2cNQIAze@t z3BxwZY?WNeW}~Tnd^}v80+=ub$lNJtbsTR?2}ZOIyQX0X*Zp2<@RgwrW8-l6POBAr zFYn!Zz~&n_x*_H8YSD0P!+rOKiYQ?v&oZq%-99g6_NFsuHr-6;9O0(3aj#r``^6Wo z5cS}L@+-@E3iF{%`hxio*v9{7+k)j>w;Rf&KQceV`TjAt7;bNtw~n;fguQ&y^O=IgP1TIafq?0bw^3w{B-*ZQzhsUZAY}hRN9` zby{&`q}sAWVtRI*KC63m=Ap__j!XY5nfjZwbhCPokKgn$-DZxlTY62ZG9>+OdbM}# zScY|8l}b&_EC1Vh&T~QMRjIU%c@^J==a}OL+>j4m;l>D>zhVXBNyAY}?_A*gYQ}@i zB4HFI$c6B0QmU*%-0htSIv&zRI-YWIi18%dj>kYUKzK}|98odGH0VxDBn3LA3R(AN zQ|`b-QlMk15QB6~MAME|nzZh8K2*mfnbf%g^A)`F^hZsSbL|q&yaNX$(GYjbk|GU} z&Rj|LaHS9TCi0esXn~EUR-3*6_EH_DrCMABUj#*ow=xaT2>8!HH}v7Op_E)`^;1oz zKoMaH4V7@q1D3`%$I*~RL0d+2OcLQED1cTafFq-Hl;!++9G!gg8lK47ebb$;I(L7C z|90QxQ>4le+^0#qw44QQr=3~kr(lCOz%IG0F*rBEt2y@Z`QV5iv7(ej3PyXcydbw0 zDVvl81?2-O#C)+wn`{JzItdbiWtVUjc=iOFfv3q6~_`eA?Is&qsh*$a+f0Q_j&vP~-zV`iOz< ztAMH@DfLiP-m;h}^0|dcnxtimmsrC9lVlWwEF@PwP`jJgurj^&E2@14((#aqkhHp_%I89Qy98dLh3RvF46581# zeKT1?V{z2eGjA!Y-s5MT@W8;j15aX*UGJUS=P^fcdJ5EGTa)GpZo(s~AJ@98$dN~V z1?r9JTt1aWp2|q(y`z)J=mqdlFJ=?=My!2?I}D za}Ux^%XbTR*T(6JaNo7_UJNKQa9h4bOWCkQ=v-kiWArr3>ecR2&`i2;B9BF;&S&Ig&@Mq#o9HviMKxQK?7_mCJcj;3(%P&v zBxyKzjj;e8*2Yn-l2*-;54_6~xW+pgZQF&FHj>+I8}-)PCF_&h6{Q~ECcI6%3TVSg zLNysMd(i?k!k6fXgc(QlNH)lFpkKJZVvPxtT~;5@iF$+$cvH7^Cl6xm-M#mm3a30# z<*nQyF}6WzJtuY-&2RdsJ_bG^4nO6^n$tLS@BgTef5)1k>f@a^KG3Hb_nY24l(BYu zZ~5Ads&!{D#l4vX6X9#XV~U833=E7mQKEmSx%CK)e(r-J7_HP$-l|tmdry2&wk;@1 z%_xtK?&j!TF~8omw#ViDaej_E=C4Wpo~uj+>|hMc;uc?(X-(Cna< z{32`HEE;ckKNR6LpGKl~>%8Jf1L;~%6roJ|jK|y2CPKh?SljA&%Ebo8lXwRnvIwfU zt#avI#*=sl9n7E36)}Po zsdHguqTL?i>q0t>;)iqLMw~NELNW|>lcS7!ej}B^c|-zQH{il-EC~^9?(zsp zN>VJ@(>g0D?kD9`_d9ZB^WQtwWq+)_yJd?=`l|l;+%6NZ?&~@;Ic1vRs-K^J6UIp& z^Ydcx#~+KzXHO2?{&wRj-0WcqR=bB_DOaTFEnl1R)$x!Hr_>!Zhuabpv0EOFz-cT_ z7WQv(+s0Zvvd1<~qDyk>7VedlEHO-d|d~YE|yEx%7Q9t-+n78@bEO)fw zv3)ZR4;%dOy!-y#tKf|_+do;p__GIBTwJc-glz&;j0%`H;oy6W@Y2q(Y||jRjk>!EA!Y!{m2O>Vbcn|2$~?g+Mfsa>Ne1=G!^!`rmVC;plGTn}Y)7)u@w{d+0n zlPpaAu>Yby3&&Z!Ft_0$FPic6yaNyEI>G}hJddc!Yl{W@ytsb=5TJ%*$c5b3TG$Xc zOQXNZ_23_PaC@upmATc7|Iw<>gVZ*yMuPLWO90qG5UsJj2zP?koleQ1cDP=9k!sPd zI)?cLSm>5gX*sv(!>6|Or~}T|D4+5AN^jCCJRW~<-B}O>JsE5^8sVk-DY$+La>ADd zc)V$r{0aKWZ{)=3Tjt^|PB|{dWd^-PiuMWfFIsWu86P=y%NA|YZyodjXY~C! z+EeYqoT+w8q@w2$MmBXk()I5=ZI9oZ(@$9PzK>v+mU9peeV0}p9$9Zwl< zO(r~1x8q^$t>Y;dqZv=+9e7B4>v+nguNY7C9eA2s`!!I!06YOt$s!c4+BPznIFh1A zGHI_!$2AbLL3>5Ah{UEZ8|Msn+dihK68nJ9|4jQ7oiJU72-_l_b2_#v(E-@}&%|}o zNz+$@CXTB$As*0yb|5>%$vD^;l8~U7&FwjfmGvm?H~mfwKw!PS{niWR#jI3YmIaRg zjG2YwGu9Oh?I>n0`>%^I-tV5nzW(gGUQ4IOhxMK{!8rCeuEu~=97M#TTCLEz!jTNv zRj7}^#HitUgv}MqqY_--M$(dpD=xe`h0kEI_8O(bh($a)d2RF;D%$STLhtNgJYn8_ zTC}CdeM#?d#FV{%ird`My*d_}>xc+Lhu5|I#A6a`(b4E*f;gHwh-oHQf;9b7ZY!is zG!&k=vXsYdj0Yx=X$~>mYE8#O{uJYZ4ZVf&1mBK_Ju$`u7(3$$z5@^06*`_$-pR&J z)$MqghlB?!Kq}1>vlk0lZ%`jUU{5(1cO6M);WDsw%{jnrHi;vU7cbj~j<`~Ncy_BJ$e@=EujFajy`mpYuTRW{JZv71o#~GHIJCDG>tE~XTw9ql8W)CNXRjGe6fhf<6e$8vI@KBWfl}>^qSgpRZVR} zgLoohPDA>JnBMu}{~vdDsFQkT=j7+-WcRGgnb2oi{eo$e7l>s4sIu~QLD7Bt$04S` z`Dr{u*XpxRvGUAne=F*x@741RJ)*|#7Q*sSxyOonA~%btN{5ktDK78cztYX-GH0Ri2*q9hpOA*Z&WjUZ>D!;?9XSdrQ%jE)C#z{Tf z-ccY(T*Z^IY6IlPVB^QLRF%Xe?kiQ=)5CWAUP{9+S5?3 zt>OXFM&9mER68UNn>B0L;05!C#ARm3#AK%m_nJr4HBTHia#BM&co96APGOZo zfckx!*IsniL!hv6EC1qpN8;(XF%f>9oxQutuJyVey*fJ2Yy5mO$I2Y>K3^<;g-SNm zubLbjMEz`ccdetIVDMUqD_VdVO+(NW{Fl*=!n{+!U!1E|rOKf6-Z7D71w8}86Ln)8 zrVWbdU62qN_NuRYWFfyj4+oKJ*`Rh12oK~Jz0)C##F;XtQ zjL$h`YIu%BBiZ2?vv51pSz>G&#Z}@gPvsc(Hr~LwNeO*V`IUZefIo_&CUUSrtY}?K z7Qh)V7%VeyiDyqfXu~x!zV{CCSzPTz@qO$lvMLdroMdoSN)6L96V%rRNE)k8L~KP}g>iPl`o{|E|* z>izxv8~+s$k?(r+=%D`_6H%Ti#nr@2Bid(9z1~XZ^`_okh43}#$`I&O9I|^k2RSk$ zQxPa}G6?~x|1qa|OS<43=x49-33Qe&zQv(t1GsN{5+;m|j2b(>b6d4|R=y`iw!}SR z+V4sIpGxNc~7CASh_|Bk33vvQ~ECB#TM`V=n($+j{QXwu}6#6DPPm z$BuD>j~~aqtdz&taW-BOQ4fHTot{y`XO4lPRT283!6jBBrhiE&y=mz|XD*5l9?J8j zxRDqmo{a%pT%i6@XBxNS?d$+XfL`pFo`VCx4cT~9L?D<%+m}$eHa-Cu&M-v-pp6LH zX2km&^U3E@2>-f8^6y*WiBq_1{+dEgzmKcrT=t&eILoh=r#b!v?(T-WQ7?j$dJ*tF zT@fJI;d`28!c$*`(jB(38~n92x5O!c5O-HMzR9fB`a9TD{$kQq{-5%gNr0sVwx{Ko%kuP`H9sEPcD}6U#WhzpoUbZ-LA-fd zSpDO=x+~iT@gIN858Zxg@aW6y`tqlNec6BSn2ARQiU7Rh#lcTc7_+CA&RWE*f#!!< z(qIMy;0G+Z8S*Im0!M8T5>HKu3cb$3BPtkwFwql&aJ%r&qdl z#S|}}`Egm=wSF(GzP$Q8I85@Jcy&c@sXIAWy6Va})J*%g>?+`k+D;bkm_l*(ZaG@(+Cdk|XWJ}m%9|^M1yH|iD4jG1R)yuH_47!N&5ORgTzceW)`bV_UnYS& zwo4zpvf;sntdmE2U-@dmmVZnHl>{iv|0DC>#sMrp|G%9oso(c4Wdr2z3=mvN$~w^# zT4$HXR%9Po`zP5IE%Ftg(JLZ5M0;s1Up2d8u6zYt5AdpVh#~A_Ql8#Lmhxq^RSB-q zJ3T&^ZhLfJn8P%|N;XP4gr@F{Phuzew0K+gIk5Qx+0OyHECii_ludB?tJRoqU_=B2 z1|wZat|X+gBBUN)Xaa%b9FYGytFx!lin@ zNVj)9qJ5;?*FSQJFe}wc-%!I{lxN;4JAX1a_1O6`A=7fD^PEY6eiK__IjBgE`s{@U z^t7cudmzCE=zM}=!<4MokV-*=lN5}E9Z3*WXs?*>kajL7nb4h>D0djL`RBO}i?3Ie z_dYzNwlaC@;Asc@&i>bywV%&zyfC#_Q^tEId+!_5b7B7>OL{I;x@CoLi0INgIi{#A zA#3f~=6#=zA9ZWx{44X!5rZceEL&qqG*<7KQ#rp^(fWq@hbV>EK0$U&1eF)AZV?e2 zrw_(1(duRQCxZ@_SJTKMPck5d3}8-Y%-~e4fra*`is$Zcs9%zkJE!mXXS-*goAv9L zE9(b0HoY``!n377vmH2X`mUAS(#@fzY3YT5o&65`hn;DiI@MF_Ib-mkmaMR#&Ay!q z^7{0`{2HZZ{tP0T6w%e*=}5p2(UDgZAX-9ZO+M=}Gt@K9!ASWpoA*cOm$NbX{V z`;^T5nUc8c=Cq)IA;adKt?hr{{TWVG6OyH$dArviwnP-K9oaZHt+4N|oTwrF&E8SL z&Tb9QE?D*88cWnDq5OpDP_Zsf)>&T}>&+E7(?MKN$hc&zZzI8~mM}4FMeQ&v8Oc-A716{iW`MlY~5w z#0@KzmIFfT=C!R_u8(FJuWpmJo=5J^je>L^N`~qW%Ma4Qvh9uG!_*{_V@K`O6k86NLFnRYHOUdn;c!z*Dc^Rkn-@K z(ToCU%s;5ceDnwQ&R9HSq{1gt&*@31-~iZ{CeZ<6MRu)O_s$R!Vg=5j38Of810t9f zCdyJUID}zKL4m=ubT2-rtRf)E=o}sI*08W&7^!d$40U%j+dFnbVt7dx(@J|!5AcmX z!TW&_w_-qFwYW!AiFxaq+H&K%xU2XLDmzthNgCN~E-uRT$XMOO@*>stblp({j=4`_ z+8!AItc$gt${3YW0W?7y;uFJ~v;jV$Ggdt7k;UEl!ZF0GQ3IOmTJeR0H-PKZ8rswt zI0cDwhtMWmNIplI}wjiWXP;^{ov_=H5;3vu}RM>XZ8pO*>Fg zx?u!hSc{`xGN%Oi4Xa!5%m8wD=*AHqcFwtth1F9FTzQe-zBZ`W_`(qlYYGGr(yqR__q_z3xNgr)m{@zr{wDPIs)x{eY&F4a&d!(2f(BfK&;wI4aq$=3@OZIc&^jk_bINyRq^Hf! zIk>*-n%RwWl1n17Jb?j2hgNSGoi_h_VX)b2m&yObH^P0i6f7Il&cPg$gUb}fifZq+1x1;ojVc|DxxN6J(BhUZy`_?aJmTlfUM7ko~ zrPPyL#AaA@-q1|If-pHYsa;(ITmaIC5WPLq0L+-9|6y6-zhX6Juzsl6qV=K_Rg{_C zG#GC^nvk6Jg*E*)4LG}b&bgtR9w|0l-16h%$=r__<@LM!cOE3v46l2C`H~|Qc3j1| z%L{(mb6JuWYNa6ZzTMPcE*~VO&>>SS2Q?#JSTOl8{1xQUzrgv8LM6B@Ak*2w#l>Ci z1>kE>$0k2`GpG>@_jWkYS};rI2{gGHP@HeD%2b)?Av^%^c&pS+OuX2$I?HD+NqAi< zx#AkrHPSuG-GIsI*aYNj0_b99IROQgZBT})!PGn& z40a?UTT8UibrG>()mG)cEGdCmj1kS$*+rElceby zN;Bnz->!2(mbX_PE>Vdsm`4+2(tU7D3?ealv)M5Q=*9MSVPR^u4{Tfz3$p-YvIG&V z>En7qhP^4*70C@1Wy?*Tm7HY3g@_Zw5E|1EJ$PzpZSBz3KlU~}e`??|>9?KdZ{$oaCW+FGib-9ok4@h} z?3Td~^$k6t(7Fcsgo1jh^N_Cgr-MD@BZ?e@V>^Le#m*>-dS7}?q`&ou!s_Xne5R)% zmXm`Ml{-D@_;<+2kxx4GG$fyN%FOJ%WQ&SH#xwe{6V+NUAG~FX_c0sosaVj_=G}+C zi~ob2?{H9}QNzDhgkvS#9^Dt4aDw)udkb-Sg`0~D(zMXoMFW+Jf2$9=|AhDJ ze>#8L`pjSyWSBzEiI2Wk9$s!qeqFkCa(3_!4l{CZ%)j+(qx4YvQrar*v2*wI z^mOnnUchf!aQtY+ff@BC2kl|4L*=^K>>EI^@3h^rv*G--8()cHpBFAZyE}W)g<)4_ zEv#*b#GJ8mss_y20O^dKj7}Hcm@@TqeYx#jZXc}n=7lo77)fE+tJ1M9s zjjR8Yai_D5JHY`a$TPL71swbWy@rcd^kCNn=&ktz;NX{}Nz7+xN3B=dzetU?3T&3I zvJ42IPyoP48DH%=aClapYPvzc2DuXxkqX9r{481PQU%RmBccC zKlY?szlSGXsbrZ$9B_;#i4!pkN6f+_)1LK#L9xD|QleApEt=EA9xw~fMxPK>=7}C$ zlIXA0V!I0GpS{}Ve|2n+8AH1{5Q}ueF1310S8gkPX3I-tu{4QGn@*xB$j6aWlTmK= zy7c8(>$*Jlo`b%~Lsfo*S?HmG4GInKXpadZz^_*~p|22K2OxYyvB;hQC|^tm|3l?s zM#K!vop(Rre6DcbA6nk!GQP09dByU^7u=8BOO`b2E8XJ2eQxojFWe93dH8RweM$x1 z)6>Jl&K%A+8SFX;CHXwxjz%L;2U0uyq3n&ZLYLVZs0x`cZh7v?Jn6yZxt~;bU9+*< z)t7&G=fX4VFZA2CVE*%c26Wx@{OGOkjS~i}Ip(f%JF}|gN+Y_I`b4-cpEG~zfv)3< zMvm{E+#1m%v~~|zQ2|p}90#fxu`)W9+Swo|>|N9_(HKFf=?`1D3BV2a~N zj|NRIpXbq#M9tfM^@1QOiMs74IPlxvj-4>JuSs|s{`i2zspG3m4-4p8u)8q+KVjv6 zxzfpl-G+MRSo}p)U?y5{sspFe@&c{U_)8-e${uuGM8%JmxoF`v`g6-V?hA_tL;za{ zj08z3{D6_Xv6Jk0FC-OH|1{l7vJ0MeHA4hYcGt=I8i`ghDg5xNl%w&XOTxZWOu(S`3Uile^!_N`KgI3@$D*7nQ1fqIIF?K0Q@CEm~;ox$&)h!M!w)BO%6 zY_w^K$Nqo$dWIUKgv6&be8NMIr(`mPJteGmS0~XMvINkDl#e_3)EGmtg92+G#z3CY z$4694ox09>Zbg^+@bDp>^GEdZx4i!WnXYj$s?;iHgPIf~Q~J}T7YFGbE*V^+2Nej3 zZ5F4f7?X2M43Mzse5?@x%pay9zW=lDoyxP~)9!rq>eMAo=O@0(m50Y&I?d%+aY4NM14WJjYx^vNsLFzu?h{Bi8inD>w?j|#Dy;rs@?pXq?z35X<^HT^ zs%p;;o&G{gcixi2om2Ikie8X00f#z8k9P8*2f+FQhL)x&Gm7uIgL)UV%*>(^hbVJ+*fjXFY-?^^nUP+Kn& zpDpL4qaUA?+Llouo0EiVT_X3b^TV3dU`=$)6Qtu|D=0W86qz`%W?)txuyq8Z=jA{c zlfVa-;m9{7L>t%W>5Cqx-({D$)RJnxk}4HZjO8Z-7~Mh0cf~N?o{W| zRV_;)Giqoim@o)7ZZ~G*j>XCi1D-^HB2EF^$k}H$z?d5dLX~H^4TeYZC1rXe^gJ0V>%`)9LeZhh$(N!~Z)ehc6 zmsTykFl5$e8=KF~?arzC&gwCBQAO)Oqj&dd+}iu3_-2rAg!6H=(d6b}tUI^1Q$_OR z4>p|rZF;|B7HNC0UGw&w%NrUp@XV?T8Y`tf)e7d%@c<9Pn=kNwekPMWMFnuRr(V={ zVp2y_yY^SI&Y&g}ExxB`rbPJ->@gvxdB~{MwJ-0G+{tHC&ovxbG)H0IBc=1h?sZnMi6+Kqe*-*dU;LzX2NFoVRB-cN5`3ct2AjOq@0=0#;N z_<&}8$hI2ohX9XQrZdqxIj8^#t9PU^BVNM@2nxzE99ry#IlxS_nrvbla?C&brxbZk ziuxz{Ov-+joIXd+z_XW<&3qb(MNQ)A4}L=8~+mqTtPWeS75x1#Aos#XKoz ztpQzFmYt*0Nexe}7U2%7V58i`EH&9sqro&#rhyj)j?4PxMP5lPmwp8ymb&JZ^f2%< z9-ibz1U1%qwapWXunKH+r5jEuuVWFET>KE~GjOHNH7K@>_5R&)e`ceJS`N;AR38dY zR3B#9Z02}9pZ$RpO@8~AbPh5Baal)+RsO6G+UHn&hmef z)LZg=#WA=C;x(B%gHp>o(LOU8h&3igtf7o7@DIXgFlvdlt&Bgg0LMHd3QB3$ZfQT# zj-Ew9e=z{g01M0QOc)j4wv?Y3KPuf)2e#hD_oqBdsn>*iv0M@~vd{{YUA5N5vC4O5 z@5nobOym--U9;Q-Wl#@!_2EhKrR2`m;m;m=I&wdZOtVRFXlmk=){irB!D~pnEg6xc9IQYuA77J+AfoQ4(fHWgHE9v% zrC}0iIoYOSnj#`ZY16oOG^K94xb4*}b?Nm}de9+Ln<=3xQo|=020@$EwV0B6? z`4Ft|Q9{n~Z3Lz-<16JRHdoluXo3s=6-CzR%VwcwwNDhymNz}nUne*4k1~UGrkJh# z)GexHjO0jtA&&OoBnJZU;@OOy*mKKvs!gif%wFZj?Ux@U*hXzDwR}uwbsU+)NlPJy zVPqZb9QfamcW39IgYy{8T-uc#Wme=Z()4Sl=+L*4>Nq$Gxoi@+@!H_pS9VA)(jGn= zaO%FzOF(8RD|hLL5gW?Ecb47K!LotXNUCA_RosKS*@NRc*sBPcI57D^&+(7#)%JT@ z9Z6>Bi+KIv8$`MKVr{=mn;$8@AHQ_Y)Svh|G~Tk^aZ~A_nmh^O3GH;C59to1+LPW9 ztDuKm#O8LkZf@(|Zod)OhS*d%nMmT+Tp3jR(iTZ`gY%z1Rr-(wj(v(-E1{IoM{X%0XajOo|1is9C5iYJPu1>)q*g(off~ z6Gx}%uPs^i-judSDbt4znVyn5ZOD-6sa)6@>CwUopX{a5PfA^XckDvx^xU%p`k$RQ z=X6cYX-a<&Ec-iF{<8YLg)~?rJK4k7}8T;XNiZ!z)ZcqSV zA<9oKZ98ALu2k0S`~aHmPhQ0{Q6D8rDWTf|eA}+useU+*_4lJY7~Q56w0Wn;U$~Fu z#^79L4UQ_ALtT#iqlM?pZQspX{Nt8ByE9YM7pDzbT&U&LmS0sp7Y(aflhbv%%j5@F zZc7sbytcae<}R(@*tDrI#B;xoAJr<>j$;tSsISELTQO7gH^lb^^!xt>kq%e2%AE}H zsX{y(z%ai34fTHCZEAH*(9jCE&mv%$zy58 zWQ+1FW{8Ld^^p^tcN`oXT@W^MwX<_%0+f0psE~o#&1~)tvjmq@G2K2l!Si41Al9yI zm&&EES6?OXk!|n1JHE9A)5+-3N`)!;N^-?_>EufLEI@4(J5$^e&<(};GRFwr8OOX~ zK}d$tIYT$u)YQLaqm;&0L`0&JCORCh@&0!$=&&PPTD06erB^jD@jA?{UX z<3Utfm6w@|lxE)GLa$5nUzC;0!;=z?1yWx@sPc1W{U8crOU!&!Uq@ktIkJ9{4OpmbRmx6=&PEe>Te% zpEIL|gY=$(sus_h^7ie^Pnok|Mj~dPCH+oX6!!%%wIbwUl65ZBe?sS? z5oR-V4iDO?s|-$8GxFDyezNlqb6M@5lkBV$&*mOGS(v|XU!I9dDLe=FDf=w7FSL3m zCnZKeoE19-H6<|guCk`wSNeS5>+IVn3pJX>_?>0Hcq ze_s0=szY&)PuM+7^d7|CUN6qpnr!!wWsCgixQC4f+#47^+kcHqSb+9|PLH=M9eq4q zk#cX!-?ulv@Z_;v_ND_}&=-l)MQf$YZ0PQ_(3R8=jNMNt+=CiPgVCr}v`Vxf^hFaB zL_VGm;@3)hW8a98o+UkF-iRgD{JY+5cKk2i&w7)c(g1JJ8FGl<%1#?0nR*Rempl-` zb$T9uMMv-q#%18`%rhiERglqk2itA%16ZBa(%zUiqXA>xCoGKqAN^(w{aF}!=yk?R znnPyd3%dNMz0P=(nbI6@{P1_oU?ce#Hu+L%5vJ9}ih z{6F{a{!Q`m<7=zOqtXq$v+U7l;u{JJs$XD8!Y`=jkOly**9$ajT?Mb$eN77dm$Wj- z6TgpVeU&3JT{AoPNO5Qi^@<8`X!5XkRw_Kv;EeS{pe-ok&=AblCJG6^?PZS0@s)8L zVQL5AjBEH$zxxkACo8w?+`Mbu_VwHIx_8g(mDiJRY|2?_+&A&e<6fbpr!z>>m3U@5Qk4UlT!lX`Rd{5idf##GH2?yL@&D%>AGTPh{n zi%X`CmyU63YXAs9C_a)9i2G0voFj2^5*#!*kf=p85ozx{$NJ7uM?H*KxibRHSQ<+H zhPiU4ALCl8M(S4WM;P6wnfJ1e|#Jo++Xy7)`2nk+wTKAQIlilYgEY&41t zPx4PmbhIrkd6_u>o;>@lt?4fjxAHD$PVVGRfBS7(S97t4_kfI&2^pJrWs7G&d2PVK zIr$a@)SkAyHGjk6`Tu->jZ|MytkbM?Fr~NDkwX;)w?W%vcv7dJ7f+%B9WLTyVjM%< z+&UTIl~8z@9dMYG+cq+5l983pnemBCTBsH*pbHfk6mI9q^fQo`rB)^3O;?UL)EzA? zOj}WyH*G+co_r)3H~^}hmTHVcw>K1T%t&81aQFQ+-rJYsr)2q7_qE@P*CL{J_(n(f zUs}6ZA8d39GcFmuxp$z~aWC`qul6i42D%x;9TxBZbv`OoCO-OEsTD6_B`9`rq5`NO zF<$0QJZ~17+#OT~=n;FW9RX!bWghz??-ODx?}jmt^QcUH97f51?vf{Zw7mt6C7X_| zT6FU1)r(F^9>x7Ciwmpz6G-+sP@Njt-KHR+j?3n}m z&zwF`KVwFH{j_PMc>nPkn|qq{;~fo?M~@lrqMu+eVh{I!be})OB2tkGWFI&=_~~83 zmFf_8u?e9sh1!8W3NnbT4oRA73*&{JuM-l$;^5>NPo(8v1={ZOp1F$n-m){8^|VMDF0xa#aMORxUWxIl?#C&Bf@zD>ND! zrh^;+h$<#aJN8A#)8c#Tu zuw80>V8j^9A4I^xVTSc?-GQe>*HIOCh)Eg@`cTbE0!g-eGf1v=hCg? z4xH(|dEBA1Gsce{J9_lkv9wc^ANRS4{zH(7UX=emU0spp!Mmx@v{Yeq6FJU}nLE+( zU>dexflF>ZQyB~_xdCoq9)B@ioJ&~Zww_ya_Ug?O(*>fsJK~y}<1Jsk&iUNsJ_iKk zZ7$9dO}3i`dC|8470yy6H)7;S3o28ol%w@uh>uT%Wakhs|3GLJdctEBKu_2Kn3E4Y z7|ym6HZ_NUa}q!+GG%WHBq@vBBdWz2fNcdPR_VDZPv4(XyXA%c>%Uvtb~R#W&Ds;) zd&W#YawK?b{jk;1<{gAvz2@yD*-I?Pq%F|})5e4q%qrkoi7~V|H%j^nlTxHT`d(=U zm1v(UU*O$zQ$%IDcZm;i7cwIK5Z(84XmZeL_`kNfqI->M#_`apJY~ovFef^MAt8e~ z@- z$V|)w&R2S-Us$K)Zuw$K*H|;p$2v5*7>#;8lKkxilRF_Mxf2;Bpse7j+GG-(GS^?} zNkeG{Xd{(P0{;JV8_8fq+?4ZFRMMiP>QN&GM)mT_3m`vAOAPL5fs4+bO%Whq z*@nLmFtt)?~|C-leQT%1gRg5zKw;jhRs$rLO#g3!cXo#_Pb_)qH z8WquYh9+Mb@Q()cslSw2BQ!RIDsZL%(ewrC1GpZjsG$-N<*)`M^0FfhPQw89Su*3m z(D2CqYhIoA)b4J91=EjDC|?u?Vl~JvM*9D>BjwM#|RBir!nDVPXXpA{q@)SP9 zXY3Gtao|-dwOq}OuI~6Ob^wm8Oc#||tGEdoj%9Q8mimsA;pPcZydU=76Mh(UZlH}C=uCqi{V3d49)iZknIEn$jtAhf0pv(>nWwdzo4>-Yj#RT${7$X?qhYwc7DNv8@$`>stpZp!$?Y=U8}Hb!SYD3fRH6 z^?EG0tp=8>kxdPSATG*nVI@8u-2*Foq53MMz|%cDASu`HIk?^J_G$Iwhlz$cy9(^> z_G_II2IV}sfB7glWeAxgL<)h*5C!FwS2z{@3QT3Jm12hwA*x|l!EZre5f}`jlcSwh zi-VQY5ncq)48)VWlj9AnSyyU|(-$8?gFW=cJy<@9=%mBV-G)qBkmK6kH!B>@;muM0*Q&@ zJTOu|L?x~xaC00re~X)gk{{W~;Xl+=9$B*NK#}S>yMd$nkFis_)h*BOxoqT^qOyA6 zt;`f|ar3c;6mJE_|7;x7;p&6J0GtaPVia_Rn{OAB>Nn2L#o#C?U7SN3$HusM7gUt^ z)A+$8DOIuf(Ody|!xHu!Mw}qL%PmyWmH-&hZnlcHJ415I;}Ow=cA+l7LwQ9PlM$r! zb2B$ih;RvQ7{@BH4d~%}RSCpnP!T&?X=jIs86o^+M-}VkYg26)&I}9$xdW&_jA3Rp zaaU*Ullw%!5z97rnXGtrlKxf=QqFxfuc7S`q(vOx zjoYVu9hNTjUAbo3hoHJMO7yp%9BS=5O!d6%qH6E@&g6rvv*em<*@mM1fT&5yEJxC4 zwP=E!NN&N$?c(h{ju4XHnyPM7?hl30}=L3fjgN?O+hzi6e>)L za;ZgiN&FVPZwH&0dfj}HxfOyOiD*1Q63`?v;0Mn|CdB|?N=#O?pvy)`Cb~&a~{Pz)sPr`LRL4ok{-~KPNwzpx7B>gcnK7m`j(&NUvS`1Gqew z8yhc6uhSbTr7>e396;?qM;srdHa3!dm_k0iTU#`7nnD~cBZyPp!hQP|F5a_eam~n) zH8mqfT+b4Dcwu@k--6e0p6c(3J>z@Bt6j9@nT>cStT_ML)9IRb-knl-Z$RS zie~tq{ew7H$MA4O9HOBByL54;eW~(zk#0*?&ISuZsRFlIiHc%DBMl2Ajh+JT5?%ga$0YtOIx3|O8(%(=(w((qss^9 zEZ*Q5;dwG3DkVB4Hz9poNvd?eXGTWPf^-^lVo32*Db68(9NP}Ktd9@_h1XM$ECXA# z%^I&jyhMrLaS8)!N;p(%r-Cn|GL61oUVdgVCr91cjK7LVq`aodT8b%2Xg#9)J;xu+v)Idxr74>ft{nR8eN6dQ0y@h&*ca7 z%td>ujNVCposIVXPCiLNZiQ7qYnK^GVZtcED9En$Ni>$01n3$2$lQm=^B zB$DeCsk0JF9i=W-dlq$b@gTaD--4B|J@k!q?{{kc#8m-m^U4WVZhOc3N#AW0`nSF3 z6YDd6)Zm&IBPufL$GHJoV^{vx9VOe|8%N6(fBUgy=hnQ+Uc0()+FtU^hSigvdk)o# zn@$&R-vrA55mn_ph7Sn96M}32?hcCr`gXvUMaGNr6NV31B40!ORN%;He_By%jV4;I zb?l48l@Vm|V*DD*HI~(D?ajoMDc-_oozC!Fv>hSOK3aENhMnaUqmhxB`e+V|bU2;1 zS6oC)V>*(3h;E=ZKUJn>Dj;(4qyvw9AQ(%S^FcYaTwlxp~;g=7#jn6mqh2 zI#vqx7D}3x22T+9#KG05_Yi5PRsRk(5-dpYXCy3F2!eQ5hyhw-?JVyACwlbY#H;0p z+73Sb=s+oYiGFzy5sJ7((`!1nDKo=6JzO^U){b2_2fY97&f7y+-t{XD4cCb2AnhSK zc9?VV_@2f^*JAs;KJ}zzd5Y#<1Ir<ml+HPeo8Z~NR zM#jR%?W^R5XbTBi*Pt0%UN`67%{@&6HjMJg+)@psa3tW&Jyk;!MkqS6at~{~CSDVMgO33j zH$>s(<)cJGXOl*&1!BJ)Fyt{2>O!?1q@o!E(QNPz2%%K_v8@FyjCqRB>+EC7=MCEF z1%UqfG^OUo_~s*vZ=_{=2)~(nEo$s(-*#$!mxAE(6HB=}mcse-ZobIHPtg@kEy9f2 z9th{8naXvD4;V8wNXs!?w4y>HV9U%>_1#$9q zaq+P0Wf!=rc$02#kGEv0+l4>Mc!1 zzhN<2hghHI?TrrH+sgF*TsOoFaGS@|;7`9)$J&F@7g$Aukb5`qJ{76nVY)+$&cqEk?afpt27P(XVp%cEI^{6%%I+SmcEa^6hyF)fg!=HWakI|Av`uNtlGe^n} z&E76#@4a(p?>DRth}P!Rqr_Og|FdEU?(c;RKqsRp5)*JhoCLw3C)5y$qfst76^ZII z+?G{#)2&XeTXZY3rF0_VIzZYt5RpTV5wJeNZbCgD6QS*w#inFE7E@SK;c!qY$=9rEUte)tk$nBFuz(%O97@K;7E{ zgmM(Cz06yj^r3WbgGRcDN|_!`^(TMdHtw}P1-%Xo7`=kUXU3274#jy^v5!lGPO@D08~uB3P!xpEQ~TmQ*aNjcmGB?BV1N7;n+Yd@K9FMV<22JzBA^}&*= zon5*l&FMOLL7tXVSRN_!mkjN@EHmvXm&T6|!<$qjr5t#DP_V~lH{b3{hVO3LP!QsI zz{eLWi9g~r@mc6qH=0w1rdRfM&dwU-xFDfk?wig8C2}Pg9cg@-Mk{FwJQbQM{}4FA zJ8`}5N^PyrJtaN7!<95DUA?{SyOWY$b{_7oK&|Y_ZL-wSm-y^aQ;*_8?-S>}b8=w< zAWI9Jyq@KK0o%00{b}yHQZC^5^Zj{te;)Uz`7Lw;9QO)&?b`W~r$#?_gWQ>+)_Qn4 zbRjOu4!#~VFPFS2MbMW}G}pgpuFta8fI^5kx#qkT&u&ooDPl5RJ@k5e0eAq8_Vzjh zkpD0NtyYHs79N~3GZu*vfqn<3?m!6Y$-^_CPjCOx zs4}^G>3Wd7Tze096Qj#^%OKAB0wZnWMjZ9b&dm)t{eo||?pbt>)Vk^m`WT>5qcTm_ zIU3m%Wg2O8sI;+85n*t;OzktYk;>3M!*-Ghi^-j9m+DT|UAcBsdguIkGWy~SmB!24 zA)aVEJNO{O7KHmm@?oz}C2#Oh61hIttFYL&d3HdrT+Gc2yn~`T_#FIc><={0=79B0siD_F!PX~AR5+>Hyf}YNrLE4#NN`7Y3ut3KK0ss?~IYv zw`xYDd(VG!sb@x2ON}&&KV~VQX;>|i!M=9a1kC1iO?@2h)-EL2s{ZZ#PzFoqC(M`54Vlo> zcjk+e+!IQBoXIbZ^O$mereDwILDCDn%JMz@U`2J(I{TvO71GlrE2q%RNm}wN2`K6& zT_9y;Gm3O%WZh=z9UJ$33+kESDb2|AB>@3JX0s18ik}~yrKhJi$mp#GAx$PP8yCu= zLSA9{e-M^R*uNnwJu%3P$!4z_Aq}0jzBX|As|$UyNA|m2U7z7K|BcmdNkLLyR7anX zCh;dMg))Wpb~Q4E2aX8mEq%B{e9Xvxpz!UYdS46D=qx+PN1!rFBxDXnNdkM0luWP3 z&q2{g{X9Kke^F}VA=>%WD(-BL@jpL;GEaJb$i!UVndc|DC1L?`E8?*Lvz)`+rI*g1 z=e(ttu?pW2HC=_Z4h8ZmWEYx=WKVwK0t$2JDnysKq27h2wbo)O{s9@CBIOE|%6rJr zOwaTV^z)0>I{}v7Jvu#I8y*esWNG>A%A%rNEh`I!tC$iv0%#O%7KNa z#|4xX`>u$c)H$?jr1G9toFppycJsKnc+GJSrTd9h1GkRt%JV+)0ny1g$LLQv`-o!h zw8DyMxuQ5{;lhdSKmZAay0EG;A9w%8#F&AZ)YA5nM(_v4GE~Z>W_nS&Iq9>rLAQ(y znQmnjv-=kJ)G~V@j%6qQZ&b6^`}|j`!7BfoBD#)L^E4+o+J_mU28T~tK6XG(W6scf zM~4j$%&+M=r9QStvB9k-I%>+&g61VDy^gINw6s@`r|MfLt=vCja_?=ub26rO_v)VG z)f(H_CAg|yEYpaSMX^_^$C8F2lRPx~jFG)-R`uaI&uG8cD5YpJ>~b+F#qLer3Mc3C zd|+WlT4CUpo+!r)G;eed)C3mgdAOU0b&0L*N>9CGAk%60IwhIFPQg|zC49dI>i97_ zvmU2BmI2`F>MDBTKEPq%FOWUA28^yZq69@1IS^TB9XGPH7s)tz{{xCm}I zdOF&Uo{wks_~dEoFeMcrYdf4bH+(T$QVeS8uCnY@^_V+g*(yhFfF`%)$+PAH$#SY_ zLu2EHBEHj(O?69qg72u!(w}*C;4xOXqDESYtYjsFZE)_w@~Y_bLqW$=u?Y2IXm{@j z52Mm!y``tWu>AHW$v63X*r^Pz?oNjz%O(s8&vkQ+72T7XsviRWqpdi*VNhIfQE9&z z&VBi*a=m&lL%zb@g&{%}{5rV1ffg@0(Ee}K*%1ealI*Xx?Q%8=lt{=&oUTBnbd5JT z1?znx1N71lKS+b`KJW}tD%F0jD*|%{3sq|MR+ZA+Exzqz)IO#c&kTxO)Qy}RIVGO* z4SQ~S(&NU_)0bc`d;)Kb{prBij@?_>{OB1C2`ute)A1ww(*e<#DjYJjJ`+4988q*r z+FTFaodNA=$_NeP15)B0Bb7}7$|fIho5{v);o%uHQU^8j7lvzhdsxfOgW>^1CO>RE ze6`>M8_rWwk~pAn%h%g?{(DpY0^<7a>%_3+;SYVDS-JX5Ss5CXK3ge_c;`E3A6K{)gu%$AML8bLofY6gh5nlUXo*s<>;x+znZ_&q1AWj}NP)IO zu~FgSj`pk*297gMx8lQZQO~FoQcEd*6|7E*zYO_JrMgLQW*F8e$B}<=U^fw<>Qg;V(GkCUnl#Jx3Jt^H;vzs_S{)xm#Rxcju`)d!Ieylp7P@&3Wpc zva&tR@yRaJFB7u{RZUT`;jyt=72CAd2cpL{JRe

    >GK` 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 + + + `, + state() { + return { + counter: 1, + totalTests: 1, + } + }, + hooks: { + init() { + this.$listen('move-to-next', () => { + if (this.counter >= this.totalTests) { + window.doneTests() + } else { + // navigate to next route + this.$router.to('/random') + } + this.counter++ + }) + }, + }, + routes: [{ path: '/', component: StaticItems }], +}) diff --git a/examples/src/index.js b/examples/src/index.js new file mode 100644 index 00000000..2c457277 --- /dev/null +++ b/examples/src/index.js @@ -0,0 +1,26 @@ +import Blits from '@lightningjs/blits' +import App from './App.js' + +Blits.Launch(App, 'app', { + w: 1920, + h: 1080, + debugLevel: 1, + defaultFont: 'lato', + fonts: [ + { + family: 'lato', + type: 'msdf', + file: 'fonts/Lato-Regular.ttf', + }, + { + family: 'raleway', + type: 'msdf', + file: 'fonts/Raleway-ExtraBold.ttf', + }, + { + family: 'opensans', + type: 'web', + file: 'fonts/OpenSans-Medium.ttf', + }, + ], +}) diff --git a/examples/src/pages/StaticItems.js b/examples/src/pages/StaticItems.js new file mode 100644 index 00000000..b7d481a7 --- /dev/null +++ b/examples/src/pages/StaticItems.js @@ -0,0 +1,56 @@ +import Blits from '@lightningjs/blits' + +export default Blits.Component('CreateItemsIncrementally', { + template: ` + + + + `, + state() { + return { + bg: '#000', + items: [], + } + }, + hooks: { + init() { + let data = [] + const colors = ['#1a1aff', '#cc0066', '#00802b', '#6600cc', '#b35900', '#004d99', '#800000'] + const margin = 50 + const spacing = 20 + const rectWidth = 286 + const rectHeight = 313 + const columns = 6 + + for (let i = 0; i < 18; i++) { + const row = Math.floor(i / columns) + const col = i % columns + data.push({ + key: 'block' + i, + width: rectWidth, + height: rectHeight, + x: margin + col * (rectWidth + spacing), + y: margin + row * (rectHeight + spacing), + radius: 20, + color: colors[i % colors.length], + }) + } + this.items = data + }, + async ready() { + this.$setTimeout(async () => { + await window.snapshot('static-blocks', {}) + this.$emit('move-to-next') + }, 500) + }, + }, +}) diff --git a/examples/vite.config.js b/examples/vite.config.js new file mode 100644 index 00000000..7f028236 --- /dev/null +++ b/examples/vite.config.js @@ -0,0 +1,26 @@ +/// + +import { defineConfig } from 'vite' +import blitsVitePlugins from '@lightningjs/blits/vite' + +export default defineConfig(({ command, mode, ssrBuild }) => { + return { + base: '/', // Set to your base path if you are deploying to a subdirectory (example: /myApp/) + plugins: [...blitsVitePlugins], + resolve: { + mainFields: ['browser', 'module', 'jsnext:main', 'jsnext'], + }, + server: { + headers: { + 'Cross-Origin-Opener-Policy': 'same-origin', + 'Cross-Origin-Embedder-Policy': 'require-corp', + }, + fs: { + allow: ['..'], + }, + }, + worker: { + format: 'es', + }, + } +}) diff --git a/package-lock.json b/package-lock.json index d7003bd6..2d094337 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@lightningjs/blits", - "version": "1.35.5", + "version": "1.34.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@lightningjs/blits", - "version": "1.35.5", + "version": "1.34.0", "license": "Apache-2.0", "dependencies": { "@lightningjs/msdf-generator": "^1.1.1", @@ -28,7 +28,6 @@ "jsdom": "24.0.0", "lint-staged": "^15.5.0", "prettier": "^2.5.1", - "sinon": "^21.0.0", "tap-diff": "^0.1.1", "tape": "^5.5.0" } @@ -1185,48 +1184,6 @@ "node": ">=6" } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", - "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "lodash.get": "^4.4.2", - "type-detect": "^4.1.0" - } - }, - "node_modules/@sinonjs/samsam/node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@szmarczak/http-timer": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", @@ -4982,14 +4939,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -6560,34 +6509,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, - "node_modules/sinon": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.0.tgz", - "integrity": "sha512-TOgRcwFPbfGtpqvZw+hyqJDvqfapr1qUlOizROIk4bBLjlsjlB00Pg6wMFXNtJRpu+eCZuVOaLatG7M8105kAw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.5", - "@sinonjs/samsam": "^8.0.1", - "diff": "^7.0.0", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -7130,16 +7051,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", diff --git a/package.json b/package.json index e1b392ad..31e92bc7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lightningjs/blits", - "version": "1.35.5", + "version": "1.34.0", "description": "Blits: The Lightning 3 App Development Framework", "bin": "bin/index.js", "exports": { @@ -17,11 +17,12 @@ "test:ci": "c8 npm run test:run", "test:run": "node -r global-jsdom/register ./node_modules/.bin/tape '{,!(node_modules|packages)/**/}*.test.js' | tap-diff", "lint": "eslint '**/*.js'", - "lint:fix": "eslint '**/*.js' --fix", + "lint:fix": "eslint \"**/*.js\" --fix", "prepublishOnly": "node scripts/prepublishOnly.js", "postpublish": "node scripts/postpublish.js", "prepare": "husky", - "pack-preview": "npm pack --dry-run" + "build:docker": "cd visual-tests && npm run build:docker", + "test:visual": "cd visual-tests && npm run test:visual" }, "types": "./index.d.ts", "lint-staged": { @@ -45,7 +46,6 @@ "jsdom": "24.0.0", "lint-staged": "^15.5.0", "prettier": "^2.5.1", - "sinon": "^21.0.0", "tap-diff": "^0.1.1", "tape": "^5.5.0" }, diff --git a/src/launch.js b/src/launch.js index c506e0e4..aa88986f 100644 --- a/src/launch.js +++ b/src/launch.js @@ -51,7 +51,8 @@ async function rendererVersion() { let rendererPackageInfo try { // Dynamically import the renderer package.json - rendererPackageInfo = await import('../../renderer/package.json') + const renderePackage = '../../renderer/package.json' + rendererPackageInfo = await import(renderePackage) if (rendererPackageInfo !== undefined) { return rendererPackageInfo.version } diff --git a/visual-tests/certified-snapshots/chromium-ci/static-blocks-1.png b/visual-tests/certified-snapshots/chromium-ci/static-blocks-1.png new file mode 100644 index 0000000000000000000000000000000000000000..9414ff7db4650028ded3e6c976d77709877b0322 GIT binary patch literal 21381 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 t41%f}hq4tl=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pixelmatch": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-6.0.0.tgz", + "integrity": "sha512-FYpL4XiIWakTnIqLqvt3uN4L9B3TsuHIvhLILzTiJZMJUsGvmKNeL4H3b6I99LRyerK9W4IuOXw+N28AtRgK2g==", + "license": "ISC", + "dependencies": { + "pngjs": "^7.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/playwright": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.49.0.tgz", + "integrity": "sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.49.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.49.0.tgz", + "integrity": "sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pngjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + "license": "MIT", + "engines": { + "node": ">=14.19.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/wait-port": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz", + "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "commander": "^9.3.0", + "debug": "^4.3.4" + }, + "bin": { + "wait-port": "bin/wait-port.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wait-port/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/visual-tests/package.json b/visual-tests/package.json new file mode 100644 index 00000000..81af2c97 --- /dev/null +++ b/visual-tests/package.json @@ -0,0 +1,30 @@ +{ + "name": "visual-tests", + "version": "1.0.0", + "main": "index.js", + "type": "module", + "scripts": { + "start": "npm test:visual", + "test:visual": "node ./src/index.js", + "build:examples": "cd ../examples && npm run build", + "build:docker": "node ./src/build-docker.js ", + "serve-examples": "cd ../examples && npm run preview", + "node-version": "node --version" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "chalk": "^5.3.0", + "execa": "^8.0.1", + "fs-extra": "^11.1.1", + "yargs": "^17.7.2", + "pngjs": "^7.0.0", + "pixelmatch": "^6.0.0" + }, + "devDependencies": { + "playwright": "1.49.0", + "wait-port": "^1.1.0" + } +} diff --git a/visual-tests/src/build-docker.js b/visual-tests/src/build-docker.js new file mode 100644 index 00000000..9b36afca --- /dev/null +++ b/visual-tests/src/build-docker.js @@ -0,0 +1,43 @@ +import { $ } from 'execa' +import { argv } from 'process' +import path from 'path' +import { fileURLToPath } from 'url' + +import { detectContainerRuntime } from './detectDockerRuntime.js' + +/** + * Builds a container image using the detected container runtime. + * Changes the working directory to one level higher than the script's location. + * @param runtime - The container runtime (`podman` or `docker`). + * @param imageName - The name of the container image to build. + */ +async function buildContainer(runtime, imageName) { + // Change working directory to one level higher than the script's location + const __dirname = path.dirname(fileURLToPath(import.meta.url)) + const scriptDir = path.resolve(__dirname, '../../') + process.chdir(scriptDir) + + console.log(`Working directory changed to: ${scriptDir}`) + console.log(`Using ${runtime} to build the container image: ${imageName}`) + try { + await $({ stdio: 'inherit' })`${runtime} build -t ${imageName} .` + } catch (error) { + console.error(`Failed to build the image with ${runtime}.`, error) + process.exit(1) + } +} + +;(async () => { + const imageName = argv[2] || 'visual-tests' // Default image name + try { + const runtime = await detectContainerRuntime() + await buildContainer(runtime, imageName) + } catch (error) { + if (error instanceof Error) { + console.error(error.message) + } else { + console.error(error) + } + process.exit(1) + } +})() diff --git a/visual-tests/src/detectDockerRuntime.js b/visual-tests/src/detectDockerRuntime.js new file mode 100644 index 00000000..bb581bb4 --- /dev/null +++ b/visual-tests/src/detectDockerRuntime.js @@ -0,0 +1,20 @@ +import { $ } from 'execa' + +/** + * Detects the available container runtime (podman or docker). + * @returns {Promise} The name of the container runtime (`podman` or `docker`). + * @throws {Error} If neither runtime is found. + */ +export async function detectContainerRuntime() { + try { + await $`podman -v` + return 'podman' + } catch { + try { + await $`docker -v` + return 'docker' + } catch { + throw new Error('Neither podman nor docker is installed. Please install one of them.') + } + } +} diff --git a/visual-tests/src/index.js b/visual-tests/src/index.js new file mode 100644 index 00000000..57056fe9 --- /dev/null +++ b/visual-tests/src/index.js @@ -0,0 +1,372 @@ +/* + * If not stated otherwise in this file or this component's LICENSE file the + * following copyright and licenses apply: + * + * Copyright 2023 Comcast Cable Communications Management, LLC. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { chromium } from 'playwright' +import path from 'path' +import fs from 'fs-extra' +import chalk from 'chalk' +import yargs from 'yargs' +import { hideBin } from 'yargs/helpers' +import { execa, $ } from 'execa' +import { fileURLToPath } from 'url' +import { compareSnapshot, saveSnapshot } from './snapshot.js' + +export const certifiedSnapshotDir = 'certified-snapshots' +export const failedResultsDir = 'failed-results' + +import { detectContainerRuntime } from './detectDockerRuntime.js' + +const browsers = { chromium } +let snapshotsTested = 0 +let snapshotsPassed = 0 +let snapshotsFailed = 0 +let snapshotsSkipped = 0 + +let jsHeapData = {} + +/** + * The runtime environment (local, ci, etc.) + */ +const runtimeEnv = process.env.RUNTIME_ENV || 'local' + +// Guard against invalid runtime environment +if (!['ci', 'local'].includes(runtimeEnv)) { + console.error(chalk.red.bold(`Invalid RUNTIME_ENV '${runtimeEnv}'. Must be 'ci' or 'local'`)) + process.exit(1) +} + +const argv = yargs(hideBin(process.argv)) + .options({ + capture: { + type: 'boolean', + alias: 'c', + default: false, + description: 'Capture new snapshots', + }, + overwrite: { + type: 'boolean', + alias: 'o', + default: false, + description: 'Overwrite existing snapshots (--capture must also be set)', + }, + verbose: { + type: 'boolean', + alias: 'v', + default: false, + description: 'Verbose output', + }, + skipBuild: { + type: 'boolean', + alias: 's', + default: false, + description: 'Skip building renderer and examples', + }, + port: { + type: 'number', + alias: 'p', + default: 5053, + description: 'Port to serve examples on', + }, + ci: { + type: 'boolean', + alias: 'i', + default: false, + description: 'Run in docker container with `ci` runtime environment', + }, + filter: { + type: 'string', + alias: 'f', + default: '*', + description: 'Tests to run ("*" wildcard pattern)', + }, + }) + .parseSync() + +/** + * Main function that runs the tests in either docker ci mode or compare/capture mode + */ +;(async () => { + let exitCode = 1 + try { + if (argv.ci) { + exitCode = await dockerCiMode() + } else { + exitCode = await compareCaptureMode() + } + } finally { + process.exitCode = exitCode + } +})().catch((err) => console.error(err)) + +/** + * Re-launches this script in a docker container with the `ci` runtime environment + * + * @returns Exit code + */ +async function dockerCiMode() { + // Detect container runtime + const runtime = await detectContainerRuntime() + + // Relay the command line arguments to the docker container + const commandLineStr = [ + argv.capture ? '--capture' : '', + argv.overwrite ? '--overwrite' : '', + argv.verbose ? '--verbose' : '', + argv.port ? `--port ${argv.port}` : '', + argv.filter ? `--filter "${argv.filter}"` : '', + ].join(' ') + + // Get the directory of the current file + const __dirname = path.dirname(fileURLToPath(import.meta.url)) + const rootDir = path.resolve(__dirname, '..', '..') + + const childProc = $({ stdio: 'inherit' })`${runtime} run --network host \ + -v ${rootDir}:/work/ \ + -v /work/node_modules \ + -v /work/examples/node_modules \ + -v /work/visual-tests/node_modules \ + -w /work/ -it visual-tests:latest \ + /bin/bash -c ${`npm install && cd examples && npm install && cd .. && cd visual-tests && npm install && cd .. && RUNTIME_ENV=ci npm run test:visual -- -- ${commandLineStr}`} + ` + await childProc + return childProc.exitCode ?? 1 +} + +/** + * The main function that builds the renderer and examples, serves the examples, + * and runs the tests in capture or compare mode. + * + * @returns Exit code + */ +async function compareCaptureMode() { + const stdioOption = argv.verbose ? 'inherit' : 'ignore' + + // Build examples application every time + console.log(chalk.magentaBright.bold('Building Examples...')) + const exampleBuildRes = await execa('npm', ['run', 'build:examples'], { + stdio: stdioOption, + }) + if (exampleBuildRes.exitCode !== 0) { + console.error(chalk.red.bold('Build failed!')) + return 1 + } + + console.log(chalk.magentaBright.bold(`Serving Examples (port: ${argv.port})...`)) + + // Serve the examples + const serveExamplesChildProc = $({ + stdio: 'ignore', + // Must run detached and kill after tests complete otherwise ghost process tree will hang + detached: true, + cleanup: false, + })`npm run serve-examples --port ${argv.port}` + + let exitCode = 1 + try { + const waitPortRes = await $({ + stdio: stdioOption, + timeout: 10000, + })`wait-port ${argv.port}` + + if (waitPortRes.exitCode !== 0) { + console.error(chalk.red.bold('Failed to start server!')) + return 1 + } + + // Run the tests + exitCode = await runTest('chromium') + } finally { + // Kill the serve-examples process + serveExamplesChildProc.kill() + } + return exitCode +} + +/** + * Run the tests in capture or compare mode depending on the `argv.capture` flag + * for a specific browser type. + */ +async function runTest(browserType = 'chromium') { + const paramString = Object.entries({ + browser: browserType, + overwrite: argv.overwrite, + filter: argv.filter, + RUNTIME_ENV: runtimeEnv, + }).reduce((acc, [key, value]) => { + return `${acc ? `${acc}, ` : ''}${`${key}: ${chalk.white(value)}`}` + }, '') + console.log( + chalk.magentaBright.bold( + `${argv.capture ? 'Capturing' : 'Running'} Visual Tests (${paramString})...` + ) + ) + + const snapshotSubDirName = `${browserType}-${runtimeEnv}` + + const snapshotSubDir = path.join(certifiedSnapshotDir, snapshotSubDirName) + + if (!argv.capture) { + // If compare/run mode... + // Make sure the snapshot directory exists. If not, error out. + if (!fs.existsSync(snapshotSubDir)) { + console.error( + chalk.red.bold( + `Snapshot directory '${snapshotSubDir}' does not exist! Did you forget to run in --capture mode first?` + ) + ) + return 1 + } + + // Ensure the failedResult directory exists + await fs.ensureDir(failedResultsDir) + // Remove all files in the failedResultPath directory + await fs.emptyDir(failedResultsDir) + } + + // Launch browser and create page + const browser = await browsers[browserType].launch() + + const context = await browser.newContext({ viewport: { width: 1920, height: 1080 } }) + + const page = await context.newPage() + + // If verbose, log out console messages from the browser + if (argv.verbose) { + page.on('console', (msg) => console.log(`console: ${msg.text()}`)) + } + + /** + * Keeps track of the latest snapshot index for each test + */ + const testCounters = {} + + // Expose the `snapshot()` function to the browser + await page.exposeFunction('snapshot', async (test, options) => { + snapshotsTested++ + + // Ensure clip dimensions are integers + if (options.clip) { + for (const key of ['x', 'y', 'width', 'height']) { + options.clip[key] = Math.round(options.clip[key]) + } + } + + const subtestName = options.name ? `${test}_${options.name}` : test + const snapshotIndex = (testCounters[subtestName] = (testCounters[subtestName] || 0) + 1) + const makeFilename = (postfix) => + `${subtestName}-${snapshotIndex}${postfix ? `-${postfix}` : ''}.png` + const snapshotPath = path.join(snapshotSubDir, makeFilename()) + + if (argv.capture) { + // Handle snapshot capturing + const captureResponse = await saveSnapshot( + page, + snapshotPath, + options, + subtestName, + snapshotIndex, + argv.overwrite + ) + if (captureResponse === false) { + snapshotsSkipped++ + } + + if (captureResponse === true && argv.overwrite) { + snapshotsPassed++ + } + } else { + // Handle snapshot comparison + const resp = await compareSnapshot(page, snapshotPath, options, subtestName, snapshotIndex) + if (resp) { + snapshotsPassed++ + } else { + snapshotsFailed++ + } + } + }) + + /** + * Resolve function for the donePromise below + */ + let resolveDonePromise = (exitCode) => { + // returns void + } + + /** + * Promise that resolves when all tests are done + */ + const donePromise = new Promise((resolve) => { + resolveDonePromise = resolve + }) + + // Expose the `doneTests()` function to the browser + // which will close the browser, calculate/print results and resolve the donePromise + await page.exposeFunction('doneTests', async () => { + await browser.close() + + // Summarize results + + const passPerc = ((snapshotsPassed / snapshotsTested) * 100).toFixed(1) + const failPerc = ((snapshotsFailed / snapshotsTested) * 100).toFixed(1) + const skipPerc = ((snapshotsSkipped / snapshotsTested) * 100).toFixed(1) + + if (argv.capture) { + console.log(chalk.white.underline('\nVisual Tests Capture Completed:')) + + if (snapshotsPassed > 0) { + console.log(chalk.green(` ${snapshotsPassed} snapshots captured (${passPerc}%)`)) + } + + if (snapshotsSkipped > 0) { + console.log(chalk.yellow(` ${snapshotsSkipped} snapshots skipped (${skipPerc}%)`)) + } + + console.log(chalk.gray(` ${snapshotsTested} snapshots detected`)) + } else { + console.log(chalk.white.underline('\nVisual Tests Completed:')) + + if (snapshotsFailed > 0) { + console.log(chalk.red(` ${snapshotsFailed} snapshots failed (${failPerc}%)`)) + console.log(chalk.gray(` (See \`${failedResultsDir}\` directory for failed results)`)) + } + + if (snapshotsPassed > 0) { + console.log(chalk.green(` ${snapshotsPassed} snapshots passed (${passPerc}%)`)) + } + + console.log(chalk.gray(` ${snapshotsTested} snapshots tested`)) + } + + // Extra new line + console.log(chalk.reset('')) + + if (snapshotsFailed > 0) { + resolveDonePromise(1) + } else { + resolveDonePromise(0) + } + }) + + // set CPU to 6x slowdown + const client = await page.context().newCDPSession(page) + await client.send('Emulation.setCPUThrottlingRate', { rate: 6 }) + + await page.goto(`http://localhost:${argv.port}/`) + return donePromise +} diff --git a/visual-tests/src/snapshot.js b/visual-tests/src/snapshot.js new file mode 100644 index 00000000..5a856193 --- /dev/null +++ b/visual-tests/src/snapshot.js @@ -0,0 +1,154 @@ +import fs from 'fs-extra' +import chalk from 'chalk' +import path from 'path' + +import { failedResultsDir } from './index.js' + +import { PNG } from 'pngjs' +import pixelmatch from 'pixelmatch' + +/** + * Handles the snapshot capture process. + * + * @param page The Playwright page object + * @param snapshotPath The path to save the snapshot + * @param options The snapshot options + * @param subtestName The name of the subtest + * @param snapshotIndex The index of the snapshot + * @param overwrite Whether to overwrite the snapshot if it already exists + * @returns A promise that resolves to a boolean indicating whether the snapshot was saved or skipped + */ +export async function saveSnapshot( + page, + snapshotPath, + options, + subtestName, + snapshotIndex, + overwrite +) { + process.stdout.write( + chalk.gray(`Saving snapshot for ${chalk.white(`${subtestName}-${snapshotIndex}`)}... `) + ) + + if (fs.existsSync(snapshotPath) && !overwrite) { + process.stdout.write(chalk.yellow.bold('SKIPPED! (already exists)\n')) + return false + } + + await page.screenshot({ path: snapshotPath, clip: options.clip }) + process.stdout.write(chalk.green.bold('DONE!\n')) + return true +} + +/** + * Handles the snapshot comparison process. + */ +export async function compareSnapshot(page, snapshotPath, options, subtestName, snapshotIndex) { + process.stdout.write(chalk.gray(`Running ${chalk.white(`${subtestName}-${snapshotIndex}`)}... `)) + + const actualPng = await page.screenshot({ clip: options.clip }) + + if (!fs.existsSync(snapshotPath)) { + console.log(chalk.red.bold('FAILED! (snapshot does not exist!)')) + await saveFailedSnapshot(subtestName, snapshotIndex, actualPng, null, undefined) + return false + } + + const expectedPng = await fs.promises.readFile(snapshotPath) + const width = options.clip?.width || 1080 + const height = options.clip?.height || 1920 + const result = compareBuffers(actualPng, expectedPng, width, height) + + if (result.doesMatch) { + console.log(chalk.green.bold('PASS!')) + return true + } + + console.log(chalk.red.bold(`FAILED!${result.reason ? ` (${result.reason})` : ''}`)) + + await saveFailedSnapshot( + subtestName, + snapshotIndex, + actualPng, + expectedPng, + result.diffImageBuffer + ) + return false +} + +/** + * Saves failed snapshot results for debugging. + */ +export async function saveFailedSnapshot( + subtestName, + snapshotIndex, + actualPng, + expectedPng, + diffPng +) { + const writeTasks = [ + fs.promises.writeFile( + path.join(failedResultsDir, `${subtestName}-${snapshotIndex}-actual.png`), + actualPng + ), + ] + + if (expectedPng) { + writeTasks.push( + fs.promises.writeFile( + path.join(failedResultsDir, `${subtestName}-${snapshotIndex}-expected.png`), + expectedPng + ) + ) + } + + if (diffPng) { + writeTasks.push( + fs.promises.writeFile( + path.join(failedResultsDir, `${subtestName}-${snapshotIndex}-diff.png`), + + PNG.sync.write(diffPng) + ) + ) + } + + await Promise.all(writeTasks) +} + +/** + * Compare two image buffers and return if they match and a diff image buffer + * + * @param actualImageBuffer Buffer of the actual image + * @param expectedImageBuffer Buffer of the expected image + * @returns CompareResult + */ +export function compareBuffers(actualImageBuffer, expectedImageBuffer, width, height) { + const diff = new PNG({ width: width, height: height }) + const actualImage = PNG.sync.read(actualImageBuffer) + const expectedImage = PNG.sync.read(expectedImageBuffer) + + if (actualImage.width !== expectedImage.width || actualImage.height !== expectedImage.height) { + return { + doesMatch: false, + diffImageBuffer: undefined, + reason: 'Image dimensions do not match', + } + } + const count = pixelmatch( + actualImage.data, + expectedImage.data, + diff.data, + width, + height, + { threshold: 0.1 } // Adjust threshold for sensitivity + ) + + const doesMatch = count === 0 + + return { + doesMatch, + + diffImageBuffer: doesMatch ? undefined : diff, + reason: doesMatch ? undefined : `${count} pixels differ`, + } +} From a51d20a8d29658bac6cc9f9fc4830752b4a626d7 Mon Sep 17 00:00:00 2001 From: Suresh Kumar Gangumalla Date: Wed, 19 Nov 2025 18:03:38 +0530 Subject: [PATCH 2/5] Resolved issues in docker container visual tests Signed-off-by: Suresh Kumar Gangumalla --- examples/package-lock.json | 20 ++++++---- package-lock.json | 80 ++++++++++++++++++++++++++++++++++++++ package.json | 1 + visual-tests-runner.sh | 20 ++++++++++ visual-tests/src/index.js | 14 ++++--- 5 files changed, 121 insertions(+), 14 deletions(-) create mode 100644 visual-tests-runner.sh diff --git a/examples/package-lock.json b/examples/package-lock.json index 73190e19..34c5aa50 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -26,11 +26,11 @@ }, "..": { "name": "@lightningjs/blits", - "version": "1.34.0", + "version": "1.43.2", "license": "Apache-2.0", "dependencies": { - "@lightningjs/msdf-generator": "^1.1.1", - "@lightningjs/renderer": "^2.15.0" + "@lightningjs/msdf-generator": "^1.2.0", + "@lightningjs/renderer": "^2.19.1" }, "bin": { "blits": "bin/index.js" @@ -38,16 +38,20 @@ "devDependencies": { "@babel/eslint-parser": "^7.26.5", "@babel/plugin-syntax-import-assertions": "^7.26.0", - "c8": "^8.0.1", - "eslint": "^8.8.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "^9.33.0", + "c8": "^9.1.0", + "eslint": "^9.33.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.4", "fast-glob": "^3.3.3", "global-jsdom": "24.0.0", + "globals": "^16.3.0", "husky": "^9.1.7", "jsdom": "24.0.0", "lint-staged": "^15.5.0", - "prettier": "^2.5.1", + "prettier": "^3.6.2", + "sinon": "^21.0.0", "tap-diff": "^0.1.1", "tape": "^5.5.0" } diff --git a/package-lock.json b/package-lock.json index c925a59e..b55585c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "jsdom": "24.0.0", "lint-staged": "^15.5.0", "prettier": "^3.6.2", + "sinon": "^21.0.0", "tap-diff": "^0.1.1", "tape": "^5.5.0" } @@ -1318,6 +1319,47 @@ "node": ">=12" } }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" + } + }, + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/@tokenizer/token": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", @@ -6350,6 +6392,34 @@ "node": ">=20.12.2" } }, + "node_modules/sinon": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.0.tgz", + "integrity": "sha512-TOgRcwFPbfGtpqvZw+hyqJDvqfapr1qUlOizROIk4bBLjlsjlB00Pg6wMFXNtJRpu+eCZuVOaLatG7M8105kAw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.5", + "@sinonjs/samsam": "^8.0.1", + "diff": "^7.0.0", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -6992,6 +7062,16 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", diff --git a/package.json b/package.json index 42d66a41..97f23e22 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "jsdom": "24.0.0", "lint-staged": "^15.5.0", "prettier": "^3.6.2", + "sinon": "^21.0.0", "tap-diff": "^0.1.1", "tape": "^5.5.0" }, diff --git a/visual-tests-runner.sh b/visual-tests-runner.sh new file mode 100644 index 00000000..8002e0f3 --- /dev/null +++ b/visual-tests-runner.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -e + +# Optional: echo the command-line args +echo "Running visual tests with options: $@" + +#Install dependencies +npm install + +# Install example application dependencies +cd examples && npm install + +# Install visual-tests dependencies +cd ../visual-tests && npm install + +# Back to blits root dir +cd .. + +# Run visual tests with passed arguments +RUNTIME_ENV=ci npm run test:visual -- "$@" \ No newline at end of file diff --git a/visual-tests/src/index.js b/visual-tests/src/index.js index 57056fe9..7a82a400 100644 --- a/visual-tests/src/index.js +++ b/visual-tests/src/index.js @@ -136,13 +136,12 @@ async function dockerCiMode() { const __dirname = path.dirname(fileURLToPath(import.meta.url)) const rootDir = path.resolve(__dirname, '..', '..') + const cmdToRun = `./visual-tests-runner.sh ${commandLineStr}` + const childProc = $({ stdio: 'inherit' })`${runtime} run --network host \ -v ${rootDir}:/work/ \ - -v /work/node_modules \ - -v /work/examples/node_modules \ - -v /work/visual-tests/node_modules \ -w /work/ -it visual-tests:latest \ - /bin/bash -c ${`npm install && cd examples && npm install && cd .. && cd visual-tests && npm install && cd .. && RUNTIME_ENV=ci npm run test:visual -- -- ${commandLineStr}`} + /bin/bash -c ${cmdToRun} ` await childProc return childProc.exitCode ?? 1 @@ -181,7 +180,7 @@ async function compareCaptureMode() { try { const waitPortRes = await $({ stdio: stdioOption, - timeout: 10000, + timeout: 60000, })`wait-port ${argv.port}` if (waitPortRes.exitCode !== 0) { @@ -240,7 +239,10 @@ async function runTest(browserType = 'chromium') { } // Launch browser and create page - const browser = await browsers[browserType].launch() + const browser = await browsers[browserType].launch({ + headless: true, + args: ['--no-sandbox'], + }) const context = await browser.newContext({ viewport: { width: 1920, height: 1080 } }) From 87f9bf12a32bbc4c30bbe95e0a6d9f2c79ab488b Mon Sep 17 00:00:00 2001 From: Michiel van der Geest Date: Thu, 20 Nov 2025 14:59:17 +0100 Subject: [PATCH 3/5] Added missing playwright dev dependency. --- package-lock.json | 45 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 46 insertions(+) diff --git a/package-lock.json b/package-lock.json index b55585c2..f393e65f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "husky": "^9.1.7", "jsdom": "24.0.0", "lint-staged": "^15.5.0", + "playwright": "^1.56.1", "prettier": "^3.6.2", "sinon": "^21.0.0", "tap-diff": "^0.1.1", @@ -3427,6 +3428,20 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5680,6 +5695,36 @@ "node": ">=12.13.0" } }, + "node_modules/playwright": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", + "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", + "dev": true, + "dependencies": { + "playwright-core": "1.56.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", + "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/plur": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", diff --git a/package.json b/package.json index 97f23e22..1b6d11c5 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "husky": "^9.1.7", "jsdom": "24.0.0", "lint-staged": "^15.5.0", + "playwright": "^1.56.1", "prettier": "^3.6.2", "sinon": "^21.0.0", "tap-diff": "^0.1.1", From a7b43c20232699acafdd0524dec5a4877d9e6619 Mon Sep 17 00:00:00 2001 From: suresh-gangumalla Date: Fri, 5 Dec 2025 15:38:39 +0530 Subject: [PATCH 4/5] Updated playwright image to nobel version Earlier playwright version was build on top of linux 22.x and latest changes to msdf-font-generator linux binaries requires GLIBC > 2.38. Ubuntu 24.X comes with GLIBC version which satisifies msdf-font-generator binaries in linux OS so updated playwright to nobel version which build on Ubutntu 24.X. Masking node_modules of examples and visual-tests projects inside docker from blits directory complete mount so that examples and visual-tests projects get node_modules of playwright image (linux) node-modules on container run instead of depending on host machine installed node-modules Signed-off-by: suresh-gangumalla --- Dockerfile | 10 ++-------- examples/package-lock.json | 1 + package.json | 2 +- visual-tests-runner.sh | 20 -------------------- visual-tests/package.json | 4 ++-- visual-tests/src/index.js | 6 +++++- 6 files changed, 11 insertions(+), 32 deletions(-) delete mode 100644 visual-tests-runner.sh diff --git a/Dockerfile b/Dockerfile index 797fa9ee..b23fdf8d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,5 @@ - - - - - - -# Use Playwright's base image -FROM mcr.microsoft.com/playwright:v1.49.0-jammy +#FROM mcr.microsoft.com/playwright:v1.49.0-jammy +FROM mcr.microsoft.com/playwright:v1.49.0-noble # Set working directory WORKDIR /work diff --git a/examples/package-lock.json b/examples/package-lock.json index 34c5aa50..ba29d942 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -50,6 +50,7 @@ "husky": "^9.1.7", "jsdom": "24.0.0", "lint-staged": "^15.5.0", + "playwright": "^1.56.1", "prettier": "^3.6.2", "sinon": "^21.0.0", "tap-diff": "^0.1.1", diff --git a/package.json b/package.json index 1b6d11c5..d6f5a2aa 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "pack-preview": "npm pack --dry-run", "release": "npm publish --access public", "build:docker": "cd visual-tests && npm run build:docker", - "test:visual": "cd visual-tests && npm run test:visual" + "test:visual": "cd visual-tests && npm install && npm run test:visual" }, "types": "./index.d.ts", "lint-staged": { diff --git a/visual-tests-runner.sh b/visual-tests-runner.sh deleted file mode 100644 index 8002e0f3..00000000 --- a/visual-tests-runner.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -set -e - -# Optional: echo the command-line args -echo "Running visual tests with options: $@" - -#Install dependencies -npm install - -# Install example application dependencies -cd examples && npm install - -# Install visual-tests dependencies -cd ../visual-tests && npm install - -# Back to blits root dir -cd .. - -# Run visual tests with passed arguments -RUNTIME_ENV=ci npm run test:visual -- "$@" \ No newline at end of file diff --git a/visual-tests/package.json b/visual-tests/package.json index 81af2c97..59a23ee9 100644 --- a/visual-tests/package.json +++ b/visual-tests/package.json @@ -6,9 +6,9 @@ "scripts": { "start": "npm test:visual", "test:visual": "node ./src/index.js", - "build:examples": "cd ../examples && npm run build", + "build:examples": "cd ../examples && npm install && npm run build", "build:docker": "node ./src/build-docker.js ", - "serve-examples": "cd ../examples && npm run preview", + "serve-examples": "cd ../examples && npm install && npm run preview", "node-version": "node --version" }, "keywords": [], diff --git a/visual-tests/src/index.js b/visual-tests/src/index.js index 7a82a400..b396205c 100644 --- a/visual-tests/src/index.js +++ b/visual-tests/src/index.js @@ -136,10 +136,14 @@ async function dockerCiMode() { const __dirname = path.dirname(fileURLToPath(import.meta.url)) const rootDir = path.resolve(__dirname, '..', '..') - const cmdToRun = `./visual-tests-runner.sh ${commandLineStr}` + // const cmdToRun = `sed -i 's/\r$//' ./visual-tests-runner.sh && ./visual-tests-runner.sh ${commandLineStr}` + const cmdToRun = 'npm install && RUNTIME_ENV=ci npm run test:visual -- ' + commandLineStr const childProc = $({ stdio: 'inherit' })`${runtime} run --network host \ -v ${rootDir}:/work/ \ + -v /work/node_modules \ + -v /work/examples/node_modules \ + -v /work/visual-tests/node_modules \ -w /work/ -it visual-tests:latest \ /bin/bash -c ${cmdToRun} ` From db70db0ac964a181e5a9db9d6ce3608c59edfb00 Mon Sep 17 00:00:00 2001 From: suresh-gangumalla Date: Mon, 8 Dec 2025 15:54:25 +0530 Subject: [PATCH 5/5] Added shaders example for visual test Signed-off-by: suresh-gangumalla --- examples/package-lock.json | 2651 +++++++---------- examples/src/App.js | 15 +- examples/src/pages/Shaders.js | 67 + package-lock.json | 122 +- scripts/lint.js | 9 +- .../chromium-ci/shaders-1.png | Bin 0 -> 21394 bytes 6 files changed, 1276 insertions(+), 1588 deletions(-) create mode 100644 examples/src/pages/Shaders.js create mode 100644 visual-tests/certified-snapshots/chromium-ci/shaders-1.png diff --git a/examples/package-lock.json b/examples/package-lock.json index ba29d942..c1787762 100644 --- a/examples/package-lock.json +++ b/examples/package-lock.json @@ -57,18 +57,6 @@ "tape": "^5.5.0" } }, - "node_modules/@babel/polyfill": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", - "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", - "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", - "dev": true, - "license": "MIT", - "dependencies": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -461,9 +449,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -493,9 +481,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -503,13 +491,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -518,19 +506,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -541,9 +532,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -553,7 +544,7 @@ "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, @@ -578,9 +569,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.30.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.1.tgz", - "integrity": "sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz", + "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", "engines": { @@ -591,9 +582,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -601,32 +592,19 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.3.tgz", - "integrity": "sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.1", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -638,33 +616,19 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -693,419 +657,444 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@jimp/bmp": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.3.9.tgz", - "integrity": "sha512-r+gAyODQBC8sHCJDQgdZgNcQhEeLlCd2wtfWK16cPhwiLmZoDjKt+sOsSkLg0PgBTmRFDLd7ewoUwS3DFyaMmQ==", + "node_modules/@jimp/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", + "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "bmp-js": "^0.1.0", - "core-js": "^2.5.7" + "@jimp/file-ops": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "await-to-js": "^3.0.0", + "exif-parser": "^0.1.12", + "file-type": "^16.0.0", + "mime": "3" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/core": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.3.9.tgz", - "integrity": "sha512-phf7Ar3jyxC7LtwvBow/VMa/1H2bcY1x+QMZboJDCbIzAWi+t46VgsJLiIqCpmUgkVGnDfsXwabrso490E4UOg==", + "node_modules/@jimp/diff": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz", + "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "core-js": "^2.5.7", - "exif-parser": "^0.1.12", - "file-type": "^9.0.0", - "load-bmfont": "^1.3.1", - "mkdirp": "0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "pixelmatch": "^5.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/file-ops": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz", + "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/custom": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.3.9.tgz", - "integrity": "sha512-6VjZPZx3kC/SAxxqb4bYymwkUPBzbh1rzSafjBp13A+i9lb4M0ECE+D9ioO3tILpa0NfdL5zg9rtFf1j6Yzg2g==", + "node_modules/@jimp/js-bmp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz", + "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/core": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "bmp-ts": "^1.0.9" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/gif": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.3.9.tgz", - "integrity": "sha512-rXjUteUUbB+3EzGMCQuj+0dCWF20RuqNwrSrPY/jNcfxQ7tnIOLAcj6pL3zlgF3/DCdVtvcHMh1OULr975fA/A==", + "node_modules/@jimp/js-gif": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz", + "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7", - "omggif": "^1.0.9" + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "gifwrap": "^0.10.1", + "omggif": "^1.0.10" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/jpeg": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.3.9.tgz", - "integrity": "sha512-WJ5ESHpJIetJSqp1myMewQf4KD1VegbdOQbiLvkW6CvX+lW1jQ83xouFv+jbZqZy5JNG1TtwMBNLMXzoBSbp1A==", + "node_modules/@jimp/js-jpeg": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz", + "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7", - "jpeg-js": "^0.3.4" + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "jpeg-js": "^0.4.4" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-blit": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.3.9.tgz", - "integrity": "sha512-biiz9QvHB4Mz9DyumI44LbnfXAzGmEdOCJAA0Wc30Pmqn3CbQUIbOo5KtSKcEKYZxsYG2MQYn22OpPL17yHMwg==", + "node_modules/@jimp/js-png": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz", + "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "pngjs": "^7.0.0" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-blur": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.3.9.tgz", - "integrity": "sha512-QK7KSx8o2JKvRKESfqPYEuMFLzKQofqvxhVNKY+KVevT+BfDlONuZ5KrHdahzZ/uDu7GQcyhCl3Axe92CSvH1w==", + "node_modules/@jimp/js-tiff": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz", + "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "utif2": "^4.1.0" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-color": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.3.10.tgz", - "integrity": "sha512-XObgRjjw720T0jJn41fm5POC/FH2rifN+TQqAlaZ/7Wn1kNlH4G8H1v6M0RNzMEKEYTgQud1oVZqY61gceowSQ==", + "node_modules/@jimp/plugin-blit": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz", + "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7", - "tinycolor2": "^1.4.1" + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-contain": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.3.9.tgz", - "integrity": "sha512-BqW2uidZBmMMVdU8b+/SRpDMMcvD6KYt5qsJhckkpoU5wROltng2trI02KAHaWy0eJwTdMApWJbxp+5MdBoreg==", + "node_modules/@jimp/plugin-blur": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz", + "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/utils": "1.6.0" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-cover": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.3.9.tgz", - "integrity": "sha512-l9nALbXi9+QE1ohCmgRF3bWsLZGzN4YeZuSfhMiIKChtzinEKput4N5jl89+KeFFnusTR22ivlQcgWq3Zcia+w==", + "node_modules/@jimp/plugin-circle": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz", + "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/types": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-crop": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.3.9.tgz", - "integrity": "sha512-FzVwErLj89sAYOWa1NwICLWgdF0HS4LvGfUw+5oSHDUJ2ym4bUKplb3AO6IG494zT2jpTWc0hbQrGrF3HK2Y9Q==", + "node_modules/@jimp/plugin-color": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz", + "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "tinycolor2": "^1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-displace": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.3.9.tgz", - "integrity": "sha512-/RM8sTxkHy8YW88DoS2KMPujekLUCNdB4XO6wv74pXRMDCC0jBvePAO0rJ9BBE/L93ShQtoe/gBUa3lVWitf8w==", + "node_modules/@jimp/plugin-contain": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz", + "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-dither": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.3.9.tgz", - "integrity": "sha512-sWPSXnZZK8F2tXZOpfpknkySXlxjghjIJAaFjDyFDSKm3NiSNyL0CXd0GUwvPyof3lBRLqghPMsRw3Px6zJg3g==", + "node_modules/@jimp/plugin-cover": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz", + "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-flip": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.3.9.tgz", - "integrity": "sha512-GsF4sq0oHpZYXkMEcdfQS+yN1xcQX0YORNSwApKLV1c05AS0T0xqj+0U6FN9vPmyNJ0ptS+TyATf0CbupT7zzA==", + "node_modules/@jimp/plugin-crop": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz", + "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.3.9.tgz", - "integrity": "sha512-XSYaYhBEMvMejqSgIIFAvaNwQynFWbXmSgrD8VxEuQtJyi5jO5XVmL3q3rxN034XD7NO8UKyjB+QE2oiaMsKiw==", + "node_modules/@jimp/plugin-displace": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz", + "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-invert": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.3.9.tgz", - "integrity": "sha512-csdCm9QpV2W1IdE8jo4gTNC8Q6Eh7hgE7kp/Ikc9W4SNkHA+ppcNOliT2tT+o/Yxza393cWTAIVHHOfKC+gPzw==", + "node_modules/@jimp/plugin-dither": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz", + "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/types": "1.6.0" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-mask": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.3.9.tgz", - "integrity": "sha512-UHTRbyb230t/EOJANUDFk9dGAwv+1i1LRAMZ14Zv4vgVRHl/DqknNX6owVd6fYJJKthHOKSmTtDLPNR2b+MCWg==", + "node_modules/@jimp/plugin-fisheye": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz", + "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.3.9.tgz", - "integrity": "sha512-eIrs29cStWVuQk3NBrq0cY6F4taoydmu4jdpy/Hw+9gIi96Dpd+eakDhU1y5F7sFAZrfy65Ps2m56IYwn+FE5A==", + "node_modules/@jimp/plugin-flip": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz", + "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/types": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-print": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.3.9.tgz", - "integrity": "sha512-1hcfxceeUAqluUpV8m0clE/mtuGQ8/RdB6gESr/0hYfVFHzULasIKKTWw410buiBL9i2nrTOoehgWKU/AgRGCg==", + "node_modules/@jimp/plugin-hash": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz", + "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7", - "load-bmfont": "^1.3.1" + "@jimp/core": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "any-base": "^1.1.0" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-resize": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.3.9.tgz", - "integrity": "sha512-Rq9l1+VtqI71bvzdo3wfiqJ4iDO7ZrIbzjRFysRJpfwRm4bVibUoLPf0wCpDDkNAJllP5l8y/4Y+x/TzREKpBw==", + "node_modules/@jimp/plugin-mask": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz", + "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/types": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-rotate": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.3.9.tgz", - "integrity": "sha512-9o/pix6zojMEEfqNAbFBaVpjLDAdFJIAVa0pegPGS6v0aTytHo2cRL0OYN8cP8NbFPG+kMD+v2i/XV+Ubv2pJg==", + "node_modules/@jimp/plugin-print": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz", + "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "@jimp/core": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/types": "1.6.0", + "parse-bmfont-ascii": "^1.0.6", + "parse-bmfont-binary": "^1.0.6", + "parse-bmfont-xml": "^1.1.6", + "simple-xml-to-json": "^1.2.2", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/plugin-scale": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.3.9.tgz", - "integrity": "sha512-hlKBwqo59ZxIjYyIx/zPFmfER6XyNJAUh3jXcofJ0oF1sH1fTl+BjqkYvouw4CAGQlF3invLRXLp7sluCcau6g==", + "node_modules/@jimp/plugin-quantize": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz", + "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7" + "image-q": "^4.0.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugins": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.3.10.tgz", - "integrity": "sha512-RYFO8A8qFo7q0fKiZIcwaNco375Mdknat2oDn67B21k/3CZPUtqzLWy2+X9WXBPHULrF9F8J2loxN8rvSe/0Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jimp/plugin-blit": "^0.3.9", - "@jimp/plugin-blur": "^0.3.9", - "@jimp/plugin-color": "^0.3.10", - "@jimp/plugin-contain": "^0.3.9", - "@jimp/plugin-cover": "^0.3.9", - "@jimp/plugin-crop": "^0.3.9", - "@jimp/plugin-displace": "^0.3.9", - "@jimp/plugin-dither": "^0.3.9", - "@jimp/plugin-flip": "^0.3.9", - "@jimp/plugin-gaussian": "^0.3.9", - "@jimp/plugin-invert": "^0.3.9", - "@jimp/plugin-mask": "^0.3.9", - "@jimp/plugin-normalize": "^0.3.9", - "@jimp/plugin-print": "^0.3.9", - "@jimp/plugin-resize": "^0.3.9", - "@jimp/plugin-rotate": "^0.3.9", - "@jimp/plugin-scale": "^0.3.9", - "core-js": "^2.5.7", - "timm": "^1.6.1" + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz", + "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/png": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.3.9.tgz", - "integrity": "sha512-PrqH0gE9AzFV2mJPepm6U9GBzeuS9Fn9BMZPDg1p8AOIXlzySv2cgby6gaLpUk5XiQwiOwhO6A6rLvXXJ0s17A==", + "node_modules/@jimp/plugin-rotate": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz", + "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/utils": "^0.3.9", - "core-js": "^2.5.7", - "pngjs": "^3.3.3" + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, - "node_modules/@jimp/tiff": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.3.9.tgz", - "integrity": "sha512-OkoUmeBVOlP/AWgcHNXi9W32hk3glZWm/gMzbEOyExVQYPb/C9emTpJ5SAfFEKAkIJ5ylnC4q0Lvip8YvYihLQ==", + "node_modules/@jimp/plugin-threshold": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz", + "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", "dev": true, "license": "MIT", "dependencies": { - "core-js": "^2.5.7", - "utif": "^2.0.0" + "@jimp/core": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, "node_modules/@jimp/types": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.3.9.tgz", - "integrity": "sha512-ref+xXz21h7SI3O95CC7XIR0Hkn5LhVffMfSiXz4R9oC41DhANmpi3flkN/uv+WMRhwoIzYEnoU2aljGJ58sXg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz", + "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", "dev": true, "license": "MIT", "dependencies": { - "@jimp/bmp": "^0.3.9", - "@jimp/gif": "^0.3.9", - "@jimp/jpeg": "^0.3.9", - "@jimp/png": "^0.3.9", - "@jimp/tiff": "^0.3.9", - "core-js": "^2.5.7", - "timm": "^1.6.1" + "zod": "^3.23.8" }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" + "engines": { + "node": ">=18" } }, "node_modules/@jimp/utils": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.3.9.tgz", - "integrity": "sha512-nqJmMQbSBf1AmRZ3AZTq6Gct7T0gZ5R6bGhD9AaPbCb7AkkGX+DPMhT39VIiDT8sbwl+3Lxakr8KCjkrWz8nFQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", "dev": true, "license": "MIT", "dependencies": { - "core-js": "^2.5.7" + "@jimp/types": "1.6.0", + "tinycolor2": "^1.6.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/@lightningjs/blits": { @@ -1113,15 +1102,15 @@ "link": true }, "node_modules/@lightningjs/msdf-generator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lightningjs/msdf-generator/-/msdf-generator-1.1.1.tgz", - "integrity": "sha512-+NmqNUr4UA6mAOuz2fbIgI+y6ic2XpalS/MRPzrba/RaazY6WWxXM2/y3HUdacmYUpAUmq0kU3fSN3BzomS/eg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lightningjs/msdf-generator/-/msdf-generator-1.2.0.tgz", + "integrity": "sha512-FHIgj5rkOQPd9/wDXaiR0GOoWDEj7BytIzvYq5K8/wAh3z2bbW8gTNN+0J5kc1KXtqPrbyg1i87ksUVLrLEr1g==", "dev": true, "license": "Apache-2.0", "dependencies": { "chalk": "^5.3.0", "fs-extra": "^11.2.0", - "msdf-bmfont-xml": "git+https://github.com/soimy/msdf-bmfont-xml.git#5a2495a14a1ebd3170d49350f450b6e3f531a941", + "msdf-bmfont-xml": "^2.8.0", "opentype.js": "^1.3.4" }, "engines": { @@ -1129,9 +1118,9 @@ } }, "node_modules/@pkgr/core": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.7.tgz", - "integrity": "sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", "engines": { @@ -1141,10 +1130,55 @@ "url": "https://opencollective.com/pkgr" } }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz", - "integrity": "sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", "cpu": [ "arm" ], @@ -1156,9 +1190,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz", - "integrity": "sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", "cpu": [ "arm64" ], @@ -1170,9 +1204,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz", - "integrity": "sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", "cpu": [ "arm64" ], @@ -1184,9 +1218,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz", - "integrity": "sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", "cpu": [ "x64" ], @@ -1198,9 +1232,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz", - "integrity": "sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", "cpu": [ "arm64" ], @@ -1212,9 +1246,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz", - "integrity": "sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", "cpu": [ "x64" ], @@ -1226,9 +1260,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz", - "integrity": "sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", "cpu": [ "arm" ], @@ -1240,9 +1274,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz", - "integrity": "sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", "cpu": [ "arm" ], @@ -1254,9 +1288,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz", - "integrity": "sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", "cpu": [ "arm64" ], @@ -1268,9 +1302,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz", - "integrity": "sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", "cpu": [ "arm64" ], @@ -1281,10 +1315,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz", - "integrity": "sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", "cpu": [ "loong64" ], @@ -1295,10 +1329,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz", - "integrity": "sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", "cpu": [ "ppc64" ], @@ -1310,9 +1344,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz", - "integrity": "sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", "cpu": [ "riscv64" ], @@ -1324,9 +1358,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.1.tgz", - "integrity": "sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", "cpu": [ "riscv64" ], @@ -1338,9 +1372,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz", - "integrity": "sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", "cpu": [ "s390x" ], @@ -1352,9 +1386,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz", - "integrity": "sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", "cpu": [ "x64" ], @@ -1366,9 +1400,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz", - "integrity": "sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", "cpu": [ "x64" ], @@ -1379,10 +1413,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz", - "integrity": "sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", "cpu": [ "arm64" ], @@ -1394,9 +1442,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz", - "integrity": "sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", "cpu": [ "ia32" ], @@ -1407,10 +1455,10 @@ "win32" ] }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz", - "integrity": "sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==", + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", "cpu": [ "x64" ], @@ -1421,28 +1469,26 @@ "win32" ] }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "dev": true, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } + "license": "MIT" }, "node_modules/@types/estree": { "version": "1.0.8", @@ -1458,6 +1504,31 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -1564,9 +1635,9 @@ } }, "node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", + "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", "dev": true, "license": "MIT", "dependencies": { @@ -1580,9 +1651,9 @@ } }, "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -1593,9 +1664,9 @@ } }, "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { @@ -1626,8 +1697,29 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/balanced-match": { - "version": "1.0.2", + "node_modules/atomically": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.0.tgz", + "integrity": "sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "stubborn-fs": "^2.0.0", + "when-exit": "^2.1.4" + } + }, + "node_modules/await-to-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", + "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, @@ -1654,142 +1746,36 @@ ], "license": "MIT" }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "node_modules/bmp-ts": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz", + "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==", "dev": true, "license": "MIT" }, "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -1815,9 +1801,9 @@ } }, "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, "funding": [ { @@ -1836,79 +1822,7 @@ "license": "MIT", "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cacheable-request/node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "ieee754": "^1.2.1" } }, "node_modules/callsites": { @@ -1922,32 +1836,22 @@ } }, "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/centra": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", - "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6" - } - }, "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { @@ -1957,21 +1861,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true, - "license": "MIT" - }, "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2078,19 +1975,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2135,33 +2019,43 @@ "dev": true, "license": "MIT" }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz", + "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "atomically": "^2.0.3", + "dot-prop": "^9.0.0", + "graceful-fs": "^4.2.11", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true, - "license": "MIT" - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2177,20 +2071,10 @@ "node": ">= 8" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -2205,19 +2089,6 @@ } } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -2235,66 +2106,29 @@ "dev": true, "license": "MIT" }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz", + "integrity": "sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==", "dev": true, "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "type-fest": "^4.18.2" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/duplexer3": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", - "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/end-of-stream/node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", @@ -2348,13 +2182,16 @@ } }, "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escape-string-regexp": { @@ -2371,25 +2208,24 @@ } }, "node_modules/eslint": { - "version": "9.30.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.1.tgz", - "integrity": "sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==", + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.14.0", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.30.1", - "@eslint/plugin-kit": "^0.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", @@ -2432,9 +2268,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", "dev": true, "license": "MIT", "bin": { @@ -2445,9 +2281,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.1.tgz", - "integrity": "sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", "dev": true, "license": "MIT", "dependencies": { @@ -2602,6 +2438,16 @@ "node": ">=0.10.0" } }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -2609,6 +2455,16 @@ "dev": true, "license": "MIT" }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", @@ -2681,13 +2537,21 @@ } }, "node_modules/file-type": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", - "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", "dev": true, "license": "MIT", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, "node_modules/fill-range": { @@ -2741,31 +2605,10 @@ "dev": true, "license": "ISC" }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", + "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", "dev": true, "license": "MIT", "dependencies": { @@ -2793,9 +2636,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "dev": true, "license": "MIT", "engines": { @@ -2818,6 +2661,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gifwrap": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", + "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -2831,28 +2685,17 @@ "node": ">=10.13.0" } }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, "license": "MIT", "dependencies": { - "ini": "2.0.0" + "ini": "4.1.1" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2871,42 +2714,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -2946,23 +2753,6 @@ "node": ">=8" } }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/human-signals": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", @@ -3020,6 +2810,23 @@ "node": ">= 4" } }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", + "dev": true, + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -3037,16 +2844,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3058,26 +2855,13 @@ } }, "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, "license": "ISC", "engines": { - "node": ">=10" - } - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/is-extglob": { @@ -3103,13 +2887,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true, - "license": "MIT" - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3123,18 +2900,34 @@ "node": ">=0.10.0" } }, + "node_modules/is-in-ci": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-1.0.0.tgz", + "integrity": "sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==", + "dev": true, + "license": "MIT", + "bin": { + "is-in-ci": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz", + "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", "dev": true, "license": "MIT", "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3151,13 +2944,13 @@ } }, "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz", + "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3173,24 +2966,17 @@ "node": ">=0.12.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-stream": { @@ -3206,20 +2992,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3228,30 +3000,55 @@ "license": "ISC" }, "node_modules/jimp": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.3.11.tgz", - "integrity": "sha512-M+MWaCg/sJmeXSP5TRzKHmJUU2LpBWKEdoxiqczhY4FdMqz2k3Db4pdQjkcYR5ihW9MvtrjqarPAF6iTMGT34g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/polyfill": "^7.0.0", - "@jimp/custom": "^0.3.9", - "@jimp/plugins": "^0.3.10", - "@jimp/types": "^0.3.9", - "core-js": "^2.5.7" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", + "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/diff": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-gif": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-blur": "1.6.0", + "@jimp/plugin-circle": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-contain": "1.6.0", + "@jimp/plugin-cover": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-displace": "1.6.0", + "@jimp/plugin-dither": "1.6.0", + "@jimp/plugin-fisheye": "1.6.0", + "@jimp/plugin-flip": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/plugin-mask": "1.6.0", + "@jimp/plugin-print": "1.6.0", + "@jimp/plugin-quantize": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/plugin-rotate": "1.6.0", + "@jimp/plugin-threshold": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0" + }, + "engines": { + "node": ">=18" } }, "node_modules/jpeg-js": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz", - "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -3262,9 +3059,9 @@ } }, "node_modules/js2xmlparser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", - "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-5.0.0.tgz", + "integrity": "sha512-ckXs0Fzd6icWurbeAXuqo+3Mhq2m8pOPygsQjTPh8K5UWgKaUgDSHrdDxAfexmT11xvBKOQ6sgYwPkYc5RW/bg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3293,9 +3090,9 @@ "license": "MIT" }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -3315,17 +3112,33 @@ "json-buffer": "3.0.1" } }, + "node_modules/ky": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.1.tgz", + "integrity": "sha512-hYje4L9JCmpEQBtudo+v52X5X8tgWXUYyPcxKSuxQNboqufecl9VMWjGiucAFH060AwPXHZuH+WB2rrqfkmafw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz", + "integrity": "sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==", "dev": true, "license": "MIT", "dependencies": { - "package-json": "^6.3.0" + "package-json": "^10.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/levn": { @@ -3401,36 +3214,6 @@ "node": ">=18.0.0" } }, - "node_modules/load-bmfont": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", - "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^3.7.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "node_modules/load-bmfont/node_modules/phin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", - "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "centra": "^2.7.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3475,13 +3258,13 @@ } }, "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.0.0" + "get-east-asian-width": "^1.3.1" }, "engines": { "node": ">=18" @@ -3491,9 +3274,9 @@ } }, "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", "dev": true, "license": "MIT", "dependencies": { @@ -3507,42 +3290,6 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/map-limit": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", @@ -3582,16 +3329,16 @@ } }, "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, "license": "MIT", "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=10.0.0" } }, "node_modules/mimic-fn": { @@ -3620,25 +3367,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3662,27 +3390,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mkdirp/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", - "dev": true, - "license": "MIT" - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -3691,47 +3398,36 @@ "license": "MIT" }, "node_modules/msdf-bmfont-xml": { - "version": "2.7.0", - "resolved": "git+ssh://git@github.com/soimy/msdf-bmfont-xml.git#5a2495a14a1ebd3170d49350f450b6e3f531a941", - "integrity": "sha512-ZII9Wj0XgvJ8ZxbntmGWSEoSup/3Pr/8v/SLpYbqpT3z4NiKiXw15LrANduTbKumm5RfZVj2So6LR0fr9AAOHw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/msdf-bmfont-xml/-/msdf-bmfont-xml-2.8.0.tgz", + "integrity": "sha512-VK6US7QqNhY9K5sq6TKlpKNlbBch1M2P1vLirf8mZLHK3j7X86fM4sqEyVnwCBYwZ/xiTbJeUWMEv5Ji+jQQMQ==", "dev": true, "license": "MIT", "dependencies": { "arabic-persian-reshaper": "^1.0.1", "cli-progress": "^3.12.0", - "commander": "^2.20.3", - "handlebars": "^4.7.7", + "commander": "^14.0.0", + "handlebars": "^4.7.8", "is-invalid-path": "^1.0.2", - "jimp": "^0.3.11", - "js2xmlparser": "^4.0.2", + "jimp": "^1.6.0", + "js2xmlparser": "^5.0.0", "map-limit": "0.0.1", "maxrects-packer": "^2.7.3", - "opentype.js": "^0.11.0", - "update-notifier": "^5.1.0" + "opentype.js": "^1.3.4", + "update-notifier": "^7.3.1" }, "bin": { "msdf-bmfont": "cli.js" } }, "node_modules/msdf-bmfont-xml/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/msdf-bmfont-xml/node_modules/opentype.js": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-0.11.0.tgz", - "integrity": "sha512-Z9NkAyQi/iEKQYzCSa7/VJSqVIs33wknw8Z8po+DzuRUAqivJ+hJZ94mveg3xIeKwLreJdWTMyEO7x1K13l41Q==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "dev": true, "license": "MIT", - "dependencies": { - "string.prototype.codepointat": "^0.2.1", - "tiny-inflate": "^1.0.2" - }, - "bin": { - "ot": "bin/ot" + "engines": { + "node": ">=20" } }, "node_modules/nanoid": { @@ -3767,16 +3463,6 @@ "dev": true, "license": "MIT" }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/npm-run-path": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", @@ -3874,16 +3560,6 @@ "node": ">= 0.8.0" } }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -3917,29 +3593,22 @@ } }, "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz", + "integrity": "sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==", "dev": true, "license": "MIT", "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" + "ky": "^1.2.0", + "registry-auth-token": "^5.0.2", + "registry-url": "^6.0.1", + "semver": "^7.6.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pako": { @@ -3987,13 +3656,6 @@ "xml2js": "^0.5.0" } }, - "node_modules/parse-headers": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", - "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", - "dev": true, - "license": "MIT" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4014,13 +3676,19 @@ "node": ">=8" } }, - "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } }, "node_modules/picocolors": { "version": "1.1.1", @@ -4056,26 +3724,36 @@ } }, "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", "dev": true, "license": "ISC", "dependencies": { - "pngjs": "^3.0.0" + "pngjs": "^6.0.0" }, "bin": { "pixelmatch": "bin/pixelmatch" } }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13.0" + } + }, "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", "dev": true, "license": "MIT", "engines": { - "node": ">=4.0.0" + "node": ">=14.19.0" } }, "node_modules/postcss": { @@ -4117,20 +3795,10 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", + "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, "license": "MIT", "bin": { @@ -4166,16 +3834,12 @@ "node": ">= 0.6.0" } }, - "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } + "license": "ISC" }, "node_modules/punycode": { "version": "2.3.1", @@ -4188,16 +3852,19 @@ } }, "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz", + "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==", "dev": true, "license": "MIT", "dependencies": { - "escape-goat": "^2.0.0" + "escape-goat": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/rc": { @@ -4233,37 +3900,67 @@ "node": ">=0.10.0" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz", + "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^4.7.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } }, "node_modules/registry-auth-token": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", - "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz", + "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", "dev": true, "license": "MIT", "dependencies": { - "rc": "1.2.8" + "@pnpm/npm-conf": "^2.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=14" } }, "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, "license": "MIT", "dependencies": { - "rc": "^1.2.8" + "rc": "1.2.8" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/resolve-from": { @@ -4276,16 +3973,6 @@ "node": ">=4" } }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, "node_modules/restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -4327,9 +4014,9 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.44.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.44.1.tgz", - "integrity": "sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==", + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", "dev": true, "license": "MIT", "dependencies": { @@ -4343,40 +4030,63 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.44.1", - "@rollup/rollup-android-arm64": "4.44.1", - "@rollup/rollup-darwin-arm64": "4.44.1", - "@rollup/rollup-darwin-x64": "4.44.1", - "@rollup/rollup-freebsd-arm64": "4.44.1", - "@rollup/rollup-freebsd-x64": "4.44.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.44.1", - "@rollup/rollup-linux-arm-musleabihf": "4.44.1", - "@rollup/rollup-linux-arm64-gnu": "4.44.1", - "@rollup/rollup-linux-arm64-musl": "4.44.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.44.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.44.1", - "@rollup/rollup-linux-riscv64-gnu": "4.44.1", - "@rollup/rollup-linux-riscv64-musl": "4.44.1", - "@rollup/rollup-linux-s390x-gnu": "4.44.1", - "@rollup/rollup-linux-x64-gnu": "4.44.1", - "@rollup/rollup-linux-x64-musl": "4.44.1", - "@rollup/rollup-win32-arm64-msvc": "4.44.1", - "@rollup/rollup-win32-ia32-msvc": "4.44.1", - "@rollup/rollup-win32-x64-msvc": "4.44.1", + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", "fsevents": "~2.3.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0" }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { @@ -4386,29 +4096,6 @@ "node": ">=10" } }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4445,6 +4132,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/simple-xml-to-json": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz", + "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.12.2" + } + }, "node_modules/slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -4482,6 +4179,16 @@ "node": ">=0.10.0" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -4518,9 +4225,9 @@ "license": "MIT" }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { @@ -4559,6 +4266,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/stubborn-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-2.0.0.tgz", + "integrity": "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "stubborn-utils": "^1.0.1" + } + }, + "node_modules/stubborn-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stubborn-utils/-/stubborn-utils-1.0.2.tgz", + "integrity": "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==", + "dev": true, + "license": "MIT" + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4573,13 +4315,13 @@ } }, "node_modules/synckit": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.8.tgz", - "integrity": "sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", + "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", "dev": true, "license": "MIT", "dependencies": { - "@pkgr/core": "^0.2.4" + "@pkgr/core": "^0.2.9" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -4588,13 +4330,6 @@ "url": "https://opencollective.com/synckit" } }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", - "dev": true, - "license": "MIT" - }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -4609,16 +4344,6 @@ "dev": true, "license": "MIT" }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4632,6 +4357,24 @@ "node": ">=8.0" } }, + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4646,28 +4389,18 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -4682,18 +4415,14 @@ "node": ">=0.8.0" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } + "optional": true, + "peer": true }, "node_modules/universalify": { "version": "2.0.1", @@ -4706,67 +4435,30 @@ } }, "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-7.3.1.tgz", + "integrity": "sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" + "boxen": "^8.0.1", + "chalk": "^5.3.0", + "configstore": "^7.0.0", + "is-in-ci": "^1.0.0", + "is-installed-globally": "^1.0.0", + "is-npm": "^6.0.0", + "latest-version": "^9.0.0", + "pupa": "^3.1.0", + "semver": "^7.6.3", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4777,33 +4469,20 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "node_modules/utif2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", + "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", "dev": true, "license": "MIT", "dependencies": { - "pako": "^1.0.5" + "pako": "^1.0.11" } }, "node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -4860,6 +4539,13 @@ } } }, + "node_modules/when-exit": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.5.tgz", + "integrity": "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==", + "dev": true, + "license": "MIT" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4877,71 +4563,19 @@ } }, "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "string-width": "^7.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" + "node": ">=18" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/word-wrap": { @@ -4962,9 +4596,9 @@ "license": "MIT" }, "node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "dev": true, "license": "MIT", "dependencies": { @@ -4986,47 +4620,17 @@ "dev": true, "license": "ISC" }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/xml-parse-from-string": { @@ -5067,20 +4671,10 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, "license": "ISC", "bin": { @@ -5088,6 +4682,9 @@ }, "engines": { "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yocto-queue": { @@ -5102,6 +4699,16 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/examples/src/App.js b/examples/src/App.js index 8c135f34..fd0c16cd 100644 --- a/examples/src/App.js +++ b/examples/src/App.js @@ -1,6 +1,7 @@ import Blits from '@lightningjs/blits' import StaticItems from './pages/StaticItems' +import Shaders from './pages/Shaders' export default Blits.Application({ template: ` @@ -10,22 +11,26 @@ export default Blits.Application({ `, state() { return { - counter: 1, - totalTests: 1, + counter: 0, + testPaths: ['/', '/shaders'], } }, hooks: { init() { + this.totalTests = this.testPaths.length this.$listen('move-to-next', () => { + this.counter++ if (this.counter >= this.totalTests) { window.doneTests() } else { // navigate to next route - this.$router.to('/random') + this.$router.to(this.testPaths[this.counter]) } - this.counter++ }) }, }, - routes: [{ path: '/', component: StaticItems }], + routes: [ + { path: '/', component: StaticItems }, + { path: '/shaders', component: Shaders }, + ], }) diff --git a/examples/src/pages/Shaders.js b/examples/src/pages/Shaders.js new file mode 100644 index 00000000..18a65fa7 --- /dev/null +++ b/examples/src/pages/Shaders.js @@ -0,0 +1,67 @@ +/* + * Copyright 2023 Comcast Cable Communications Management, LLC + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +import Blits from '@lightningjs/blits' + +export default Blits.Component('Shaders', { + template: ` + + + + + + + + + + + + + + + + + + + + + + `, + + state() { + return { + direction: 'up', + radius: 0, + border: 0, + } + }, + hooks: { + async ready() { + this.$setTimeout(async () => { + await window.snapshot('shaders', {}) + this.$emit('move-to-next') + }, 500) + }, + }, +}) diff --git a/package-lock.json b/package-lock.json index f393e65f..636296cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -565,9 +565,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -577,7 +577,7 @@ "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, @@ -1180,9 +1180,9 @@ } }, "node_modules/@lightningjs/renderer": { - "version": "2.19.1", - "resolved": "https://registry.npmjs.org/@lightningjs/renderer/-/renderer-2.19.1.tgz", - "integrity": "sha512-sxI9u91zqyYZrSqR9vQma0eWtUr0p32A2mFuX0l1K9bBuXt6F99cwJetM/Gya4vkquiPsVT++w+wfjQyzfYoAg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@lightningjs/renderer/-/renderer-2.20.0.tgz", + "integrity": "sha512-Ko71Zs2GxeaXb4fcYK/jWWu2txUtx9v1Yg49LoFNqTUF2aCdINNRlj4l0ghlE8SunQWm3pRn38HUr/kR9wt97A==", "hasInstallScript": true, "license": "Apache-2.0", "engines": { @@ -1713,9 +1713,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz", - "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.4.tgz", + "integrity": "sha512-ZCQ9GEWl73BVm8bu5Fts8nt7MHdbt5vY9bP6WGnUh+r3l8M7CgfyTlwsgCbMC66BNxPr6Xoce3j66Ms5YUQTNA==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -1776,9 +1776,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -1797,11 +1797,11 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.25", - "caniuse-lite": "^1.0.30001754", - "electron-to-chromium": "^1.5.249", + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", - "update-browserslist-db": "^1.1.4" + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -1933,9 +1933,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001756", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz", - "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==", + "version": "1.0.30001759", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001759.tgz", + "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==", "dev": true, "funding": [ { @@ -2517,9 +2517,9 @@ } }, "node_modules/diff": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", - "integrity": "sha512-9wfm3RLzMp/PyTFWuw9liEzdlxsdGixCW0ZTU1XDmtlAkvpVXTPGF8KnfSs0hm3BPbg19OrUPPsRkHXoREpP1g==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2577,9 +2577,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.256", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.256.tgz", - "integrity": "sha512-uqYq1IQhpXXLX+HgiXdyOZml7spy4xfy42yPxcCCRjswp0fYM2X+JwCON07lqnpLEGVCj739B7Yr+FngmHBMEQ==", + "version": "1.5.266", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.266.tgz", + "integrity": "sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg==", "dev": true, "license": "ISC", "peer": true @@ -3434,6 +3434,7 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4839,9 +4840,9 @@ } }, "node_modules/ky": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.0.tgz", - "integrity": "sha512-Rczb6FMM6JT0lvrOlP5WUOCB7s9XKxzwgErzhKlKde1bEV90FXplV1o87fpt4PU/asJFiqjYJxAJyzJhcrxOsQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.1.tgz", + "integrity": "sha512-hYje4L9JCmpEQBtudo+v52X5X8tgWXUYyPcxKSuxQNboqufecl9VMWjGiucAFH060AwPXHZuH+WB2rrqfkmafw==", "license": "MIT", "engines": { "node": ">=18" @@ -5304,9 +5305,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", "dev": true, "license": "MIT" }, @@ -5696,12 +5697,13 @@ } }, "node_modules/playwright": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", - "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.56.1" + "playwright-core": "1.57.0" }, "bin": { "playwright": "cli.js" @@ -5714,10 +5716,11 @@ } }, "node_modules/playwright-core": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", - "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", "dev": true, + "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, @@ -5765,9 +5768,9 @@ } }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", + "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", "dev": true, "license": "MIT", "bin": { @@ -6455,16 +6458,6 @@ "url": "https://opencollective.com/sinon" } }, - "node_modules/sinon/node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/slice-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", @@ -6791,6 +6784,16 @@ "node": ">=0.10.0" } }, + "node_modules/tap-diff/node_modules/diff": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", + "integrity": "sha512-9wfm3RLzMp/PyTFWuw9liEzdlxsdGixCW0ZTU1XDmtlAkvpVXTPGF8KnfSs0hm3BPbg19OrUPPsRkHXoREpP1g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/tap-diff/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -7249,9 +7252,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", + "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", "dev": true, "funding": [ { @@ -7707,9 +7710,9 @@ "peer": true }, "node_modules/yaml": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", - "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, "license": "ISC", "bin": { @@ -7717,6 +7720,9 @@ }, "engines": { "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yargs": { diff --git a/scripts/lint.js b/scripts/lint.js index 55e7437e..522c21d7 100644 --- a/scripts/lint.js +++ b/scripts/lint.js @@ -12,9 +12,12 @@ const isFix = process.argv[2] === 'fix' console.log('Starting the linting process...') console.log(`Fix mode is ${isFix ? 'enabled' : 'disabled'}`) -const lintFiles = await fg(['**/*.js', '!node_modules/**'], { - cwd: __dirname, -}) +const lintFiles = await fg( + ['**/*.js', '!node_modules/**', '!examples/node_modules/**', '!visual-tests/node_modules/**'], + { + cwd: __dirname, + } +) console.log(`Found ${lintFiles.length} JavaScript file(s) to lint.`) diff --git a/visual-tests/certified-snapshots/chromium-ci/shaders-1.png b/visual-tests/certified-snapshots/chromium-ci/shaders-1.png new file mode 100644 index 0000000000000000000000000000000000000000..99e778065c063f602440dd51f8dc763678953add GIT binary patch literal 21394 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�U?a|yiH9c zn<)hpx`nty?@43D;tymw;WXBm(mhVwksyQ>2zeYp#NkF4f z*aP>lOd{Lo*5u8xJx|Vn)j?~}VQm2eBCKq|k1R;Nk&|TXqC0z-v)sdZhTe3&4sd!D z+DrdBnOC0_VS2fPGiuFQrErQ`6?Utz=|$KTzzmgjS$?~*8xq12F?TIOcWs(O?V%X! z@RxLpQkklWX4y*nRh5Q;@=TpdXwmU|7_tmAqfa=V0@>Mv5VxV=xsiy3v8Hmm7yJ|vKb-#o&LRz5F>p^IUDJC2D_j@*h1aHZOUbu z0?*N~%C#6X@VF)z`WZn|Rrk5==EWE#so2eOSrx|k1rrm5M9qYuL0|+8@Z&h>-~SO& z{%@`Lzk{Uz834BXA0GU}17KwT=)pfcfSm0=dhibq{?P+2>imx_{Qtur3~&k@s-ZFt zc5gM;D4%%5Y7-ajhKcd6mye