From 694572f8f78b1260895b81567a0c8aed6e025502 Mon Sep 17 00:00:00 2001 From: Byounghern Kim Date: Wed, 2 Oct 2024 01:11:04 +0900 Subject: [PATCH] init: v0.1.5 --- .astro/types.d.ts | 1 + .github/workflows/deploy-docs.yml | 38 + .gitignore | 25 + README.md | 67 + docs/.astro/settings.json | 5 + docs/.astro/types.d.ts | 1 + docs/astro.config.mjs | 8 + docs/docs/env.d.ts | 1 + docs/env.d.ts | 1 + docs/public/sample.geojson | 425 ++ docs/src/docs/env.d.ts | 1 + docs/src/env.d.ts | 1 + docs/src/examples/DataSourceExample.tsx | 14 + docs/src/examples/DefaultMapExample.tsx | 14 + docs/src/layouts/Layout.astro | 90 + docs/src/pages/index.astro | 59 + docs/src/pages/test-data-source.astro | 5 + docs/src/pages/test.astro | 5 + eslint.config.js | 28 + index.html | 13 + package.json | 57 + playright.config.ts | 40 + pnpm-lock.yaml | 4539 +++++++++++++++++ src/env.d.ts | 2 + src/lib/components/GeoDataSource.ts | 14 + src/lib/components/GeoMap.ts | 60 + src/lib/components/Popup.ts | 49 + src/lib/index.d.ts | 28 + src/lib/index.js | 4 + src/lib/render.ts | 242 + src/lib/types.d.ts | 15 + src/lib/utils/config.ts | 2 + src/lib/utils/utils.ts | 23 + test-results/.last-run.json | 4 + tests/snapshot.spec.ts | 17 + .../snapshot.spec.ts-snapshots/map-darwin.png | Bin 0 -> 37452 bytes tsconfig.app.json | 29 + tsconfig.app.tsbuildinfo | 1 + tsconfig.json | 7 + tsconfig.node.json | 24 + tsconfig.node.tsbuildinfo | 1 + vite.config.ts | 25 + 42 files changed, 5985 insertions(+) create mode 100644 .astro/types.d.ts create mode 100644 .github/workflows/deploy-docs.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docs/.astro/settings.json create mode 100644 docs/.astro/types.d.ts create mode 100644 docs/astro.config.mjs create mode 100644 docs/docs/env.d.ts create mode 100644 docs/env.d.ts create mode 100644 docs/public/sample.geojson create mode 100644 docs/src/docs/env.d.ts create mode 100644 docs/src/env.d.ts create mode 100644 docs/src/examples/DataSourceExample.tsx create mode 100644 docs/src/examples/DefaultMapExample.tsx create mode 100644 docs/src/layouts/Layout.astro create mode 100644 docs/src/pages/index.astro create mode 100644 docs/src/pages/test-data-source.astro create mode 100644 docs/src/pages/test.astro create mode 100644 eslint.config.js create mode 100644 index.html create mode 100644 package.json create mode 100644 playright.config.ts create mode 100644 pnpm-lock.yaml create mode 100644 src/env.d.ts create mode 100644 src/lib/components/GeoDataSource.ts create mode 100644 src/lib/components/GeoMap.ts create mode 100644 src/lib/components/Popup.ts create mode 100644 src/lib/index.d.ts create mode 100644 src/lib/index.js create mode 100644 src/lib/render.ts create mode 100644 src/lib/types.d.ts create mode 100644 src/lib/utils/config.ts create mode 100644 src/lib/utils/utils.ts create mode 100644 test-results/.last-run.json create mode 100644 tests/snapshot.spec.ts create mode 100644 tests/snapshot.spec.ts-snapshots/map-darwin.png create mode 100644 tsconfig.app.json create mode 100644 tsconfig.app.tsbuildinfo create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 tsconfig.node.tsbuildinfo create mode 100644 vite.config.ts diff --git a/.astro/types.d.ts b/.astro/types.d.ts new file mode 100644 index 0000000..f964fe0 --- /dev/null +++ b/.astro/types.d.ts @@ -0,0 +1 @@ +/// diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 0000000..2d16b5c --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,38 @@ +name: Deploy Docs + +on: + push: + branches: + - main + +env: + PUBLISH_DIR: ./docs/dist + +jobs: + build-and-deploy-docs: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: 9 + + - name: Install dependencies + run: pnpm install + + - name: Build docs + run: pnpm build:docs + + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ${{ env.PUBLISH_DIR }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..37046ae --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +tsconfig.app.tsbuildinfo diff --git a/README.md b/README.md new file mode 100644 index 0000000..709d17e --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# React Geojson Map + +> This is under development and not yet ready for production use. + +react-geojson-map is a library that enables declarative geospatial visualization using React Fiber. +It seamlessly integrates React's component-based architecture with OpenLayers' mapping capabilities, providing developers with a robust solution for creating interactive and efficient map-based applications. + +## Features + +- Declarative components for defining map layers, sources, and interactions using JSX +- CSS styling support for dynamic and themeable vector layer styling +- Data source injection for streamlined integration and management of geospatial data sources + +## Installation + +Make sure you have Node.js installed (Node 18 recommended). Install the package using: + +```bash +npm install react-geojson-map +``` + +## Usage + +Here's a basic example of how to use react-geojson-map: + +```jsx +import React from "react"; +import { GeoMap, GeoDataSource } from "react-geojson-map"; + +const MyMap = () => ( + + + {/* Add other map components */} + +); +export default MyMap; +``` + +## Development + +### Setup + +1. Clone the repository: + +```bash +git clone https://github.com/behoney/react-geojson-map.git +``` + +2. Install dependencies: + +```bash +pnpm install +``` + +### Run tests + +```bash +pnpm test +``` + +## Contributing + +Contributions are welcome! Please open issues and submit pull requests for any enhancements or bug fixes. Make sure your code follows the project's coding standards and includes appropriate tests. + +## License + +MIT © behoney diff --git a/docs/.astro/settings.json b/docs/.astro/settings.json new file mode 100644 index 0000000..803259e --- /dev/null +++ b/docs/.astro/settings.json @@ -0,0 +1,5 @@ +{ + "_variables": { + "lastUpdateCheck": 1727923824793 + } +} \ No newline at end of file diff --git a/docs/.astro/types.d.ts b/docs/.astro/types.d.ts new file mode 100644 index 0000000..f964fe0 --- /dev/null +++ b/docs/.astro/types.d.ts @@ -0,0 +1 @@ +/// diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs new file mode 100644 index 0000000..38dbeba --- /dev/null +++ b/docs/astro.config.mjs @@ -0,0 +1,8 @@ +import react from "@astrojs/react"; +import { defineConfig } from "astro/config"; + +export default defineConfig({ + integrations: [react()], + site: "https://behoney.github.io", + base: process.env.NODE_ENV === "production" ? "/react-geojson-map" : "/", +}); diff --git a/docs/docs/env.d.ts b/docs/docs/env.d.ts new file mode 100644 index 0000000..9bc5cb4 --- /dev/null +++ b/docs/docs/env.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/docs/env.d.ts b/docs/env.d.ts new file mode 100644 index 0000000..dae6149 --- /dev/null +++ b/docs/env.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/docs/public/sample.geojson b/docs/public/sample.geojson new file mode 100644 index 0000000..d96c3a5 --- /dev/null +++ b/docs/public/sample.geojson @@ -0,0 +1,425 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": { + "name": "Surrounding Zigzag LineString" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + -65, + 15 + ], + [ + -60, + 10 + ], + [ + -55, + 15 + ], + [ + -50, + 10 + ], + [ + -45, + 15 + ], + [ + -40, + 10 + ], + [ + -35, + 15 + ], + [ + -30, + 10 + ], + [ + -25, + 15 + ], + [ + -20, + 10 + ], + [ + -15, + 15 + ], + [ + -10, + 10 + ], + [ + -10, + 5 + ], + [ + -15, + 0 + ], + [ + -20, + -5 + ], + [ + -25, + 0 + ], + [ + -30, + -5 + ], + [ + -35, + 0 + ], + [ + -40, + -5 + ], + [ + -45, + 0 + ], + [ + -50, + -5 + ], + [ + -55, + 0 + ], + [ + -60, + -5 + ], + [ + -65, + 0 + ], + [ + -65, + 15 + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "name": "GEOJSON Characters" + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -60, + 10 + ], + [ + -55, + 10 + ], + [ + -55, + 0 + ], + [ + -60, + 0 + ], + [ + -60, + 5 + ], + [ + -57, + 5 + ], + [ + -57, + 7 + ], + [ + -60, + 7 + ], + [ + -60, + 10 + ] + ] + ], + [ + [ + [ + -53, + 10 + ], + [ + -48, + 10 + ], + [ + -48, + 0 + ], + [ + -53, + 0 + ], + [ + -53, + 3 + ], + [ + -50, + 3 + ], + [ + -50, + 7 + ], + [ + -53, + 7 + ], + [ + -53, + 10 + ] + ] + ], + [ + [ + [ + -46, + 10 + ], + [ + -41, + 10 + ], + [ + -41, + 0 + ], + [ + -46, + 0 + ], + [ + -46, + 10 + ] + ], + [ + [ + -44, + 8 + ], + [ + -43, + 8 + ], + [ + -43, + 2 + ], + [ + -44, + 2 + ], + [ + -44, + 8 + ] + ] + ], + [ + [ + [ + -39, + 10 + ], + [ + -34, + 10 + ], + [ + -34, + 0 + ], + [ + -39, + 0 + ], + [ + -39, + 3 + ], + [ + -36, + 3 + ], + [ + -36, + 7 + ], + [ + -39, + 7 + ], + [ + -39, + 10 + ] + ] + ], + [ + [ + [ + -32, + 10 + ], + [ + -27, + 10 + ], + [ + -27, + 0 + ], + [ + -32, + 0 + ], + [ + -32, + 10 + ] + ], + [ + [ + -30, + 8 + ], + [ + -29, + 8 + ], + [ + -29, + 2 + ], + [ + -30, + 2 + ], + [ + -30, + 8 + ] + ] + ], + [ + [ + [ + -25, + 10 + ], + [ + -20, + 10 + ], + [ + -20, + 0 + ], + [ + -25, + 0 + ], + [ + -25, + 3 + ], + [ + -22, + 3 + ], + [ + -22, + 7 + ], + [ + -25, + 7 + ], + [ + -25, + 10 + ] + ] + ], + [ + [ + [ + -18, + 10 + ], + [ + -13, + 10 + ], + [ + -13, + 0 + ], + [ + -18, + 0 + ], + [ + -18, + 10 + ] + ], + [ + [ + -16, + 8 + ], + [ + -15, + 8 + ], + [ + -15, + 2 + ], + [ + -16, + 2 + ], + [ + -16, + 8 + ] + ] + ] + ] + } + } + ] +} \ No newline at end of file diff --git a/docs/src/docs/env.d.ts b/docs/src/docs/env.d.ts new file mode 100644 index 0000000..4e6b85c --- /dev/null +++ b/docs/src/docs/env.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/docs/src/env.d.ts b/docs/src/env.d.ts new file mode 100644 index 0000000..9bc5cb4 --- /dev/null +++ b/docs/src/env.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/docs/src/examples/DataSourceExample.tsx b/docs/src/examples/DataSourceExample.tsx new file mode 100644 index 0000000..60dbb7d --- /dev/null +++ b/docs/src/examples/DataSourceExample.tsx @@ -0,0 +1,14 @@ +import React from "react"; +import { GeoDataSource, GeoMap } from "../../../src/lib"; + +const DataSourceExample: React.FC = () => { + return ( +
+ + + +
+ ); +}; + +export default DataSourceExample; diff --git a/docs/src/examples/DefaultMapExample.tsx b/docs/src/examples/DefaultMapExample.tsx new file mode 100644 index 0000000..0d5cd47 --- /dev/null +++ b/docs/src/examples/DefaultMapExample.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { GeoDataSource, GeoMap } from '../../../src/lib'; + +const DefaultMapExample: React.FC = () => { + return ( +
+ + + +
+ ); +}; + +export default DefaultMapExample; diff --git a/docs/src/layouts/Layout.astro b/docs/src/layouts/Layout.astro new file mode 100644 index 0000000..b41a48d --- /dev/null +++ b/docs/src/layouts/Layout.astro @@ -0,0 +1,90 @@ +--- +export interface Props { + title: string; +} + +const { title } = Astro.props; +--- + + + + + + + + {title} + + +
+ +
+
+

© {new Date().getFullYear()} behoney. All rights reserved.

+
+ + + diff --git a/docs/src/pages/index.astro b/docs/src/pages/index.astro new file mode 100644 index 0000000..9a56254 --- /dev/null +++ b/docs/src/pages/index.astro @@ -0,0 +1,59 @@ +--- +import DefaultMapExample from '../examples/DefaultMapExample'; +import Layout from '../layouts/Layout.astro'; +--- + + +

React GeoJSON Map

+

Welcome to react-geojson-map, a library for declarative geospatial visualization using React Fiber and OpenLayers. It offers a robust solution for creating interactive and efficient map-based applications with React's component-based architecture.

+ +

Key Features

+
    +
  • Declarative components for defining map layers, sources, and interactions using JSX
  • +
  • CSS styling support for dynamic and themeable vector layer styling
  • +
  • Data source injection for streamlined integration and management of geospatial data sources
  • +
+ +

Note: This library is currently under development and not yet ready for production use.

+ +

Usage Example

+
+
+      
+{`
+import { GeoMap } from 'react-geojson-map';
+
+function App() {
+  return (
+  
+ + + +
+ ); +} +`} +
+
+ +
+

Try it live on StackBlitz

+ + +

Why Use React Reconciler?

+

React GeoJSON Map leverages React Reconciler for superior performance and flexibility in geospatial visualization. This approach enables fine-grained control over rendering, custom logic aligned with OpenLayers, and a declarative API for map components. As a result, it offers efficient updates, smooth performance with large datasets, and an intuitive development experience.

+ +

By using React Reconciler, the library achieves efficient tree updates, better separation of concerns, and reduced overhead compared to React Context. This leads to more granular control over updates, cleaner code separation, and potentially fewer unnecessary re-renders. Consequently, React GeoJSON Map is ideal for building complex, interactive geospatial applications with enhanced performance and maintainability.

+ + +
diff --git a/docs/src/pages/test-data-source.astro b/docs/src/pages/test-data-source.astro new file mode 100644 index 0000000..cc95fa1 --- /dev/null +++ b/docs/src/pages/test-data-source.astro @@ -0,0 +1,5 @@ +--- +import DataSourceExample from "../examples/DataSourceExample"; +--- + + \ No newline at end of file diff --git a/docs/src/pages/test.astro b/docs/src/pages/test.astro new file mode 100644 index 0000000..0709a8f --- /dev/null +++ b/docs/src/pages/test.astro @@ -0,0 +1,5 @@ +--- +import DefaultMapExample from "../examples/DefaultMapExample"; +--- + + \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..1e02d01 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,28 @@ +import js from "@eslint/js"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import globals from "globals"; +import tseslint from "typescript-eslint"; + +export default tseslint.config( + { ignores: ["dist"] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: 2023, + globals: globals.browser, + }, + plugins: { + "react-hooks": reactHooks, + "react-refresh": reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + "react-refresh/only-export-components": [ + "warn", + { allowConstantExport: true }, + ], + }, + }, +); diff --git a/index.html b/index.html new file mode 100644 index 0000000..e4b78ea --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..c3ffc96 --- /dev/null +++ b/package.json @@ -0,0 +1,57 @@ +{ + "name": "react-geojson-map", + "version": "0.1.5", + "description": "A library for declarative geospatial visualization using React Fiber and OpenLayers", + "main": "dist/react-geojson-map.umd.js", + "module": "dist/react-geojson-map.es.js", + "type": "module", + "types": "dist/index.d.ts", + "scripts": { + "dev": "npx astro dev --root ./docs", + "build": "tsc -b && vite build", + "lint": "eslint .", + "test": "pnpm run dev & playwright test; kill $!", + "build:docs": "npx astro build --root ./docs" + }, + "homepage": "https://behoney.github.io/react-geojson-map/", + "repository": { + "type": "git", + "url": "https://github.com/behoney/react-geojson-map.git" + }, + "keywords": [ + "react", + "openlayers", + "geospatial", + "visualization", + "mapping" + ], + "author": "behoney", + "license": "MIT", + "peerDependencies": { + "ol": "^10.2.1", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-reconciler": "^0.29.2" + }, + "devDependencies": { + "@astrojs/react": "^3.6.2", + "@eslint/js": "^9.9.0", + "@playwright/test": "^1.47.2", + "@types/node": "^22.7.4", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "@types/react-reconciler": "^0.28.8", + "@vitejs/plugin-react": "^4.3.1", + "astro": "^4.15.10", + "eslint": "^9.9.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.1" + }, + "files": [ + "dist" + ] +} \ No newline at end of file diff --git a/playright.config.ts b/playright.config.ts new file mode 100644 index 0000000..c439976 --- /dev/null +++ b/playright.config.ts @@ -0,0 +1,40 @@ +import type { PlaywrightTestConfig } from "@playwright/test"; + +const config: PlaywrightTestConfig = { + webServer: { + command: "pnpm run dev", + port: 4321, + timeout: 120 * 1000, + reuseExistingServer: !process.env.CI, + }, + use: { + baseURL: "http://localhost:4321", + viewport: { width: 480, height: 320 }, + }, + testDir: "./tests", + timeout: 120 * 1000, + expect: { + timeout: 120 * 1000, + }, + fullyParallel: true, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 2 : 0, + workers: process.env.CI ? 1 : undefined, + reporter: "html", + projects: [ + { + name: "chromium", + use: { browserName: "chromium", viewport: { width: 480, height: 320 } }, + }, + { + name: "firefox", + use: { browserName: "firefox", viewport: { width: 480, height: 320 } }, + }, + { + name: "webkit", + use: { browserName: "webkit", viewport: { width: 480, height: 320 } }, + }, + ], +}; + +export default config; \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..236308c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4539 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + ol: + specifier: ^10.2.1 + version: 10.2.1 + react: + specifier: ^18.3.1 + version: 18.3.1 + react-dom: + specifier: ^18.3.1 + version: 18.3.1(react@18.3.1) + react-reconciler: + specifier: ^0.29.2 + version: 0.29.2(react@18.3.1) + devDependencies: + '@astrojs/react': + specifier: ^3.6.2 + version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.7.4)) + '@eslint/js': + specifier: ^9.9.0 + version: 9.11.1 + '@playwright/test': + specifier: ^1.47.2 + version: 1.47.2 + '@types/node': + specifier: ^22.7.4 + version: 22.7.4 + '@types/react': + specifier: ^18.3.3 + version: 18.3.10 + '@types/react-dom': + specifier: ^18.3.0 + version: 18.3.0 + '@types/react-reconciler': + specifier: ^0.28.8 + version: 0.28.8 + '@vitejs/plugin-react': + specifier: ^4.3.1 + version: 4.3.2(vite@5.4.8(@types/node@22.7.4)) + astro: + specifier: ^4.15.10 + version: 4.15.10(@types/node@22.7.4)(rollup@4.23.0)(typescript@5.6.2) + eslint: + specifier: ^9.9.0 + version: 9.11.1 + eslint-plugin-react-hooks: + specifier: ^5.1.0-rc.0 + version: 5.1.0-rc-fb9a90fa48-20240614(eslint@9.11.1) + eslint-plugin-react-refresh: + specifier: ^0.4.9 + version: 0.4.12(eslint@9.11.1) + globals: + specifier: ^15.9.0 + version: 15.9.0 + typescript: + specifier: ^5.5.3 + version: 5.6.2 + typescript-eslint: + specifier: ^8.0.1 + version: 8.8.0(eslint@9.11.1)(typescript@5.6.2) + vite: + specifier: ^5.4.1 + version: 5.4.8(@types/node@22.7.4) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@astrojs/compiler@2.10.3': + resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} + + '@astrojs/internal-helpers@0.4.1': + resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} + + '@astrojs/markdown-remark@5.2.0': + resolution: {integrity: sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==} + + '@astrojs/prism@3.1.0': + resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + + '@astrojs/react@3.6.2': + resolution: {integrity: sha512-fK29lYI7zK/KG4ZBy956x4dmauZcZ18osFkuyGa8r3gmmCQa2NZ9XNu9WaVYEUm0j89f4Gii4tbxLoyM8nk2MA==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + peerDependencies: + '@types/react': ^17.0.50 || ^18.0.21 + '@types/react-dom': ^17.0.17 || ^18.0.6 + react: ^17.0.2 || ^18.0.0 || ^19.0.0-beta + react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0-beta + + '@astrojs/telemetry@3.1.0': + resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.6': + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.2': + resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@emnapi/runtime@1.2.0': + resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.6.0': + resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.11.1': + resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.0': + resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@oslojs/encoding@1.1.0': + resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} + + '@petamoriken/float16@3.8.7': + resolution: {integrity: sha512-/Ri4xDDpe12NT6Ex/DRgHzLlobiQXEW/hmG08w1wj/YU7hLemk97c+zHQFp0iZQ9r7YqgLEXZR2sls4HxBf9NA==} + + '@playwright/test@1.47.2': + resolution: {integrity: sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==} + engines: {node: '>=18'} + hasBin: true + + '@rollup/pluginutils@5.1.2': + resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.23.0': + resolution: {integrity: sha512-8OR+Ok3SGEMsAZispLx8jruuXw0HVF16k+ub2eNXKHDmdxL4cf9NlNpAzhlOhNyXzKDEJuFeq0nZm+XlNb1IFw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.23.0': + resolution: {integrity: sha512-rEFtX1nP8gqmLmPZsXRMoLVNB5JBwOzIAk/XAcEPuKrPa2nPJ+DuGGpfQUR0XjRm8KjHfTZLpWbKXkA5BoFL3w==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.23.0': + resolution: {integrity: sha512-ZbqlMkJRMMPeapfaU4drYHns7Q5MIxjM/QeOO62qQZGPh9XWziap+NF9fsqPHT0KzEL6HaPspC7sOwpgyA3J9g==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.23.0': + resolution: {integrity: sha512-PfmgQp78xx5rBCgn2oYPQ1rQTtOaQCna0kRaBlc5w7RlA3TDGGo7m3XaptgitUZ54US9915i7KeVPHoy3/W8tA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.23.0': + resolution: {integrity: sha512-WAeZfAAPus56eQgBioezXRRzArAjWJGjNo/M+BHZygUcs9EePIuGI1Wfc6U/Ki+tMW17FFGvhCfYnfcKPh18SA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.23.0': + resolution: {integrity: sha512-v7PGcp1O5XKZxKX8phTXtmJDVpE20Ub1eF6w9iMmI3qrrPak6yR9/5eeq7ziLMrMTjppkkskXyxnmm00HdtXjA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.23.0': + resolution: {integrity: sha512-nAbWsDZ9UkU6xQiXEyXBNHAKbzSAi95H3gTStJq9UGiS1v+YVXwRHcQOQEF/3CHuhX5BVhShKoeOf6Q/1M+Zhg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.23.0': + resolution: {integrity: sha512-5QT/Di5FbGNPaVw8hHO1wETunwkPuZBIu6W+5GNArlKHD9fkMHy7vS8zGHJk38oObXfWdsuLMogD4sBySLJ54g==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.23.0': + resolution: {integrity: sha512-Sefl6vPyn5axzCsO13r1sHLcmPuiSOrKIImnq34CBurntcJ+lkQgAaTt/9JkgGmaZJ+OkaHmAJl4Bfd0DmdtOQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.23.0': + resolution: {integrity: sha512-o4QI2KU/QbP7ZExMse6ULotdV3oJUYMrdx3rBZCgUF3ur3gJPfe8Fuasn6tia16c5kZBBw0aTmaUygad6VB/hQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.23.0': + resolution: {integrity: sha512-+bxqx+V/D4FGrpXzPGKp/SEZIZ8cIW3K7wOtcJAoCrmXvzRtmdUhYNbgd+RztLzfDEfA2WtKj5F4tcbNPuqgeg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.23.0': + resolution: {integrity: sha512-I/eXsdVoCKtSgK9OwyQKPAfricWKUMNCwJKtatRYMmDo5N859tbO3UsBw5kT3dU1n6ZcM1JDzPRSGhAUkxfLxw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.23.0': + resolution: {integrity: sha512-4ZoDZy5ShLbbe1KPSafbFh1vbl0asTVfkABC7eWqIs01+66ncM82YJxV2VtV3YVJTqq2P8HMx3DCoRSWB/N3rw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.23.0': + resolution: {integrity: sha512-+5Ky8dhft4STaOEbZu3/NU4QIyYssKO+r1cD3FzuusA0vO5gso15on7qGzKdNXnc1gOrsgCqZjRw1w+zL4y4hQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.23.0': + resolution: {integrity: sha512-0SPJk4cPZQhq9qA1UhIRumSE3+JJIBBjtlGl5PNC///BoaByckNZd53rOYD0glpTkYFBQSt7AkMeLVPfx65+BQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.23.0': + resolution: {integrity: sha512-lqCK5GQC8fNo0+JvTSxcG7YB1UKYp8yrNLhsArlvPWN+16ovSZgoehlVHg6X0sSWPUkpjRBR5TuR12ZugowZ4g==} + cpu: [x64] + os: [win32] + + '@shikijs/core@1.21.0': + resolution: {integrity: sha512-zAPMJdiGuqXpZQ+pWNezQAk5xhzRXBNiECFPcJLtUdsFM3f//G95Z15EHTnHchYycU8kIIysqGgxp8OVSj1SPQ==} + + '@shikijs/engine-javascript@1.21.0': + resolution: {integrity: sha512-jxQHNtVP17edFW4/0vICqAVLDAxmyV31MQJL4U/Kg+heQALeKYVOWo0sMmEZ18FqBt+9UCdyqGKYE7bLRtk9mg==} + + '@shikijs/engine-oniguruma@1.21.0': + resolution: {integrity: sha512-AIZ76XocENCrtYzVU7S4GY/HL+tgHGbVU+qhiDyNw1qgCA5OSi4B4+HY4BtAoJSMGuD/L5hfTzoRVbzEm2WTvg==} + + '@shikijs/types@1.21.0': + resolution: {integrity: sha512-tzndANDhi5DUndBtpojEq/42+dpUF2wS7wdCDQaFtIXm3Rd1QkrcVgSSRLOvEwexekihOXfbYJINW37g96tJRw==} + + '@shikijs/vscode-textmate@9.2.2': + resolution: {integrity: sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/nlcst@2.0.3': + resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + + '@types/node@22.7.4': + resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/rbush@3.0.3': + resolution: {integrity: sha512-lX55lR0iYCgapxD3IrgujpQA1zDxwZI5qMRelKvmKAsSMplFVr7wmMpG7/6+Op2tjrgEex8o3vjg8CRDrRNYxg==} + + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} + + '@types/react-reconciler@0.28.8': + resolution: {integrity: sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==} + + '@types/react@18.3.10': + resolution: {integrity: sha512-02sAAlBnP39JgXwkAq3PeU9DVaaGpZyF3MGcC0MKgQVkZor5IiiDAipVaxQHtDJAmO4GIy/rVBy/LzVj76Cyqg==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript-eslint/eslint-plugin@8.8.0': + resolution: {integrity: sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@8.8.0': + resolution: {integrity: sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@8.8.0': + resolution: {integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.8.0': + resolution: {integrity: sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@8.8.0': + resolution: {integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.8.0': + resolution: {integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@8.8.0': + resolution: {integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@8.8.0': + resolution: {integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitejs/plugin-react@4.3.2': + resolution: {integrity: sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-iterate@2.0.1: + resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + + astro@4.15.10: + resolution: {integrity: sha512-2NA9VWkIAxruq7GyR6ojpEqPLVlN2pyXqUDxiuXSEaaF1ajoQzLkXUIfhJgYmmVSIeTnd4ps9T4nTOEjWaOKrw==} + engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + + boxen@8.0.1: + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} + engines: {node: '>=18'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + + caniuse-lite@1.0.30001664: + resolution: {integrity: sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + ci-info@4.0.0: + resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + engines: {node: '>=8'} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-name@2.0.0: + resolution: {integrity: sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==} + engines: {node: '>=12.20'} + + color-parse@2.0.2: + resolution: {integrity: sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==} + + color-rgba@3.0.0: + resolution: {integrity: sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==} + + color-space@2.0.1: + resolution: {integrity: sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + deterministic-object-hash@2.0.2: + resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} + engines: {node: '>=18'} + + devalue@5.1.1: + resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + dset@3.1.4: + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + engines: {node: '>=4'} + + earcut@3.0.0: + resolution: {integrity: sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==} + + electron-to-chromium@1.5.30: + resolution: {integrity: sha512-sXI35EBN4lYxzc/pIGorlymYNzDBOqkSlVRe6MkgBsW/hW1tpC/HDJ2fjG7XnjakzfLEuvdmux0Mjs6jHq4UOA==} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614: + resolution: {integrity: sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react-refresh@0.4.12: + resolution: {integrity: sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==} + peerDependencies: + eslint: '>=7' + + eslint-scope@8.1.0: + resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.1.0: + resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.11.1: + resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.2.0: + resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + geotiff@2.1.3: + resolution: {integrity: sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==} + engines: {node: '>=10.19'} + + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@15.9.0: + resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + engines: {node: '>=18'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.1: + resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-parse-selector@4.0.0: + resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} + + hast-util-raw@9.0.4: + resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} + + hast-util-to-html@9.0.3: + resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + + hast-util-to-parse5@8.0.0: + resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hastscript@8.0.0: + resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + + html-escaper@3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + lerc@3.0.0: + resolution: {integrity: sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + + markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.1: + resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + neotraverse@0.6.18: + resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==} + engines: {node: '>= 10'} + + nlcst-to-string@4.0.0: + resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + ol@10.2.1: + resolution: {integrity: sha512-2bB/y2vEnmzjqynP0NA7Cp8k86No3Psn63Dueicep3E3i09axWRVIG5IS/bylEAGfWQx0QXD/uljkyFoY60Wig==} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + oniguruma-to-js@0.4.3: + resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@8.1.0: + resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} + engines: {node: '>=18'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@6.1.0: + resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} + engines: {node: '>=18'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-queue@8.0.1: + resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==} + engines: {node: '>=18'} + + p-timeout@6.1.2: + resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + engines: {node: '>=14.16'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + + parse-latin@7.0.0: + resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + pbf@4.0.1: + resolution: {integrity: sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==} + hasBin: true + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + playwright-core@1.47.2: + resolution: {integrity: sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.47.2: + resolution: {integrity: sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==} + engines: {node: '>=18'} + hasBin: true + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + preferred-pm@4.0.0: + resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} + engines: {node: '>=18.12'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@6.1.2: + resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} + engines: {node: '>=12'} + + quickselect@3.0.0: + resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} + + rbush@4.0.1: + resolution: {integrity: sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-reconciler@0.29.2: + resolution: {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^18.3.1 + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + regex@4.3.2: + resolution: {integrity: sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw==} + + rehype-parse@9.0.1: + resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} + + rehype-raw@7.0.0: + resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + + rehype-stringify@10.0.1: + resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} + + rehype@13.0.2: + resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.1: + resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + + remark-smartypants@3.0.2: + resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==} + engines: {node: '>=16.0.0'} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + retext-latin@4.0.0: + resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} + + retext-smartypants@6.1.1: + resolution: {integrity: sha512-onsHf34i/GzgElJgtT1K2V+31yEhWs7NJboKNxXJcmVMMPxLpgxZ9iADoMdydd6j/bHic5F/aNq0CGqElEtu2g==} + + retext-stringify@4.0.0: + resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} + + retext@9.0.0: + resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@4.23.0: + resolution: {integrity: sha512-vXB4IT9/KLDrS2WRXmY22sVB2wTsTwkpxjB8Q3mnakTENcYw3FRmfdYDy/acNmls+lHmDazgrRjK/yQ6hQAtwA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shiki@1.21.0: + resolution: {integrity: sha512-apCH5BoWTrmHDPGgg3RF8+HAAbEL/CdbYr8rMw7eIrdhCkZHdVGat5mMNlRtd1erNG01VPMIKHNQ0Pj2HMAiog==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + tsconfck@3.1.3: + resolution: {integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + engines: {node: '>=16'} + + typescript-eslint@8.8.0: + resolution: {integrity: sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + + ultrahtml@1.5.3: + resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-modify-children@4.0.0: + resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-children@3.0.0: + resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vite@5.4.8: + resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + 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 + + vitefu@1.0.2: + resolution: {integrity: sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + web-worker@1.3.0: + resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which-pm@3.0.0: + resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==} + engines: {node: '>=18.12'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@5.0.0: + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + engines: {node: '>=18'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + + xml-utils@1.10.1: + resolution: {integrity: sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==} + + xxhash-wasm@1.0.2: + resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + zod-to-json-schema@3.23.3: + resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} + peerDependencies: + zod: ^3.23.3 + + zod-to-ts@1.2.0: + resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} + peerDependencies: + typescript: ^4.9.4 || ^5.0.2 + zod: ^3 + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zstddec@0.1.0: + resolution: {integrity: sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@astrojs/compiler@2.10.3': {} + + '@astrojs/internal-helpers@0.4.1': {} + + '@astrojs/markdown-remark@5.2.0': + dependencies: + '@astrojs/prism': 3.1.0 + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-to-text: 4.0.2 + import-meta-resolve: 4.1.0 + mdast-util-definitions: 6.0.0 + rehype-raw: 7.0.0 + rehype-stringify: 10.0.1 + remark-gfm: 4.0.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.1 + remark-smartypants: 3.0.2 + shiki: 1.21.0 + unified: 11.0.5 + unist-util-remove-position: 5.0.0 + unist-util-visit: 5.0.0 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@astrojs/prism@3.1.0': + dependencies: + prismjs: 1.29.0 + + '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.7.4))': + dependencies: + '@types/react': 18.3.10 + '@types/react-dom': 18.3.0 + '@vitejs/plugin-react': 4.3.2(vite@5.4.8(@types/node@22.7.4)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + ultrahtml: 1.5.3 + transitivePeerDependencies: + - supports-color + - vite + + '@astrojs/telemetry@3.1.0': + dependencies: + ci-info: 4.0.0 + debug: 4.3.7 + dlv: 1.1.3 + dset: 3.1.4 + is-docker: 3.0.0 + is-wsl: 3.1.0 + which-pm-runs: 1.1.0 + transitivePeerDependencies: + - supports-color + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 + + '@babel/compat-data@7.25.4': {} + + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.6': + dependencies: + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.25.6 + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.24.0 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helpers@7.25.6': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 + + '@babel/parser@7.25.6': + dependencies: + '@babel/types': 7.25.6 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + + '@babel/traverse@7.25.6': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.6': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@emnapi/runtime@1.2.0': + dependencies: + tslib: 2.7.0 + optional: true + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1)': + dependencies: + eslint: 9.11.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.1': {} + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.6.0': {} + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.2.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.11.1': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.0': + dependencies: + levn: 0.4.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.0': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.2.0 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@oslojs/encoding@1.1.0': {} + + '@petamoriken/float16@3.8.7': {} + + '@playwright/test@1.47.2': + dependencies: + playwright: 1.47.2 + + '@rollup/pluginutils@5.1.2(rollup@4.23.0)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.23.0 + + '@rollup/rollup-android-arm-eabi@4.23.0': + optional: true + + '@rollup/rollup-android-arm64@4.23.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.23.0': + optional: true + + '@rollup/rollup-darwin-x64@4.23.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.23.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.23.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.23.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.23.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.23.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.23.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.23.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.23.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.23.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.23.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.23.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.23.0': + optional: true + + '@shikijs/core@1.21.0': + dependencies: + '@shikijs/engine-javascript': 1.21.0 + '@shikijs/engine-oniguruma': 1.21.0 + '@shikijs/types': 1.21.0 + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + + '@shikijs/engine-javascript@1.21.0': + dependencies: + '@shikijs/types': 1.21.0 + '@shikijs/vscode-textmate': 9.2.2 + oniguruma-to-js: 0.4.3 + + '@shikijs/engine-oniguruma@1.21.0': + dependencies: + '@shikijs/types': 1.21.0 + '@shikijs/vscode-textmate': 9.2.2 + + '@shikijs/types@1.21.0': + dependencies: + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.2.2': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.6 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.6 + + '@types/cookie@0.6.0': {} + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/estree@1.0.6': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@0.7.34': {} + + '@types/nlcst@2.0.3': + dependencies: + '@types/unist': 3.0.3 + + '@types/node@22.7.4': + dependencies: + undici-types: 6.19.8 + + '@types/prop-types@15.7.13': {} + + '@types/rbush@3.0.3': {} + + '@types/react-dom@18.3.0': + dependencies: + '@types/react': 18.3.10 + + '@types/react-reconciler@0.28.8': + dependencies: + '@types/react': 18.3.10 + + '@types/react@18.3.10': + dependencies: + '@types/prop-types': 15.7.13 + csstype: 3.1.3 + + '@types/unist@3.0.3': {} + + '@typescript-eslint/eslint-plugin@8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2)': + dependencies: + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 8.8.0(eslint@9.11.1)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.8.0 + '@typescript-eslint/type-utils': 8.8.0(eslint@9.11.1)(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.0(eslint@9.11.1)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.8.0 + eslint: 9.11.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.8.0(eslint@9.11.1)(typescript@5.6.2)': + dependencies: + '@typescript-eslint/scope-manager': 8.8.0 + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.8.0 + debug: 4.3.7 + eslint: 9.11.1 + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.8.0': + dependencies: + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/visitor-keys': 8.8.0 + + '@typescript-eslint/type-utils@8.8.0(eslint@9.11.1)(typescript@5.6.2)': + dependencies: + '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.0(eslint@9.11.1)(typescript@5.6.2) + debug: 4.3.7 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - eslint + - supports-color + + '@typescript-eslint/types@8.8.0': {} + + '@typescript-eslint/typescript-estree@8.8.0(typescript@5.6.2)': + dependencies: + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/visitor-keys': 8.8.0 + debug: 4.3.7 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.8.0(eslint@9.11.1)(typescript@5.6.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) + '@typescript-eslint/scope-manager': 8.8.0 + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) + eslint: 9.11.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@8.8.0': + dependencies: + '@typescript-eslint/types': 8.8.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vitejs/plugin-react@4.3.2(vite@5.4.8(@types/node@22.7.4))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.4.8(@types/node@22.7.4) + transitivePeerDependencies: + - supports-color + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-iterate@2.0.1: {} + + astro@4.15.10(@types/node@22.7.4)(rollup@4.23.0)(typescript@5.6.2): + dependencies: + '@astrojs/compiler': 2.10.3 + '@astrojs/internal-helpers': 0.4.1 + '@astrojs/markdown-remark': 5.2.0 + '@astrojs/telemetry': 3.1.0 + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + '@babel/types': 7.25.6 + '@oslojs/encoding': 1.1.0 + '@rollup/pluginutils': 5.1.2(rollup@4.23.0) + '@types/babel__core': 7.20.5 + '@types/cookie': 0.6.0 + acorn: 8.12.1 + aria-query: 5.3.2 + axobject-query: 4.1.0 + boxen: 8.0.1 + ci-info: 4.0.0 + clsx: 2.1.1 + common-ancestor-path: 1.0.1 + cookie: 0.6.0 + cssesc: 3.0.0 + debug: 4.3.7 + deterministic-object-hash: 2.0.2 + devalue: 5.1.1 + diff: 5.2.0 + dlv: 1.1.3 + dset: 3.1.4 + es-module-lexer: 1.5.4 + esbuild: 0.21.5 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + fastq: 1.17.1 + flattie: 1.1.1 + github-slugger: 2.0.0 + gray-matter: 4.0.3 + html-escaper: 3.0.3 + http-cache-semantics: 4.1.1 + js-yaml: 4.1.0 + kleur: 4.1.5 + magic-string: 0.30.11 + magicast: 0.3.5 + micromatch: 4.0.8 + mrmime: 2.0.0 + neotraverse: 0.6.18 + ora: 8.1.0 + p-limit: 6.1.0 + p-queue: 8.0.1 + preferred-pm: 4.0.0 + prompts: 2.4.2 + rehype: 13.0.2 + semver: 7.6.3 + shiki: 1.21.0 + string-width: 7.2.0 + strip-ansi: 7.1.0 + tinyexec: 0.3.0 + tsconfck: 3.1.3(typescript@5.6.2) + unist-util-visit: 5.0.0 + vfile: 6.0.3 + vite: 5.4.8(@types/node@22.7.4) + vitefu: 1.0.2(vite@5.4.8(@types/node@22.7.4)) + which-pm: 3.0.0 + xxhash-wasm: 1.0.2 + yargs-parser: 21.1.1 + zod: 3.23.8 + zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-ts: 1.2.0(typescript@5.6.2)(zod@3.23.8) + optionalDependencies: + sharp: 0.33.5 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - typescript + + axobject-query@4.1.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + base-64@1.0.0: {} + + boxen@8.0.1: + dependencies: + 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.26.1 + widest-line: 5.0.0 + wrap-ansi: 9.0.0 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.0: + dependencies: + caniuse-lite: 1.0.30001664 + electron-to-chromium: 1.5.30 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.0) + + callsites@3.1.0: {} + + camelcase@8.0.0: {} + + caniuse-lite@1.0.30001664: {} + + ccount@2.0.1: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + ci-info@4.0.0: {} + + cli-boxes@3.0.0: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + clsx@2.1.1: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-name@2.0.0: {} + + color-parse@2.0.2: + dependencies: + color-name: 2.0.0 + + color-rgba@3.0.0: + dependencies: + color-parse: 2.0.2 + color-space: 2.0.1 + + color-space@2.0.1: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + + comma-separated-tokens@2.0.3: {} + + common-ancestor-path@1.0.1: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + cookie@0.6.0: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + + deep-is@0.1.4: {} + + dequal@2.0.3: {} + + detect-libc@2.0.3: + optional: true + + deterministic-object-hash@2.0.2: + dependencies: + base-64: 1.0.0 + + devalue@5.1.1: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff@5.2.0: {} + + dlv@1.1.3: {} + + dset@3.1.4: {} + + earcut@3.0.0: {} + + electron-to-chromium@1.5.30: {} + + emoji-regex@10.4.0: {} + + emoji-regex@8.0.0: {} + + entities@4.5.0: {} + + es-module-lexer@1.5.4: {} + + esbuild@0.21.5: + 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 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-plugin-react-hooks@5.1.0-rc-fb9a90fa48-20240614(eslint@9.11.1): + dependencies: + eslint: 9.11.1 + + eslint-plugin-react-refresh@0.4.12(eslint@9.11.1): + dependencies: + eslint: 9.11.1 + + eslint-scope@8.1.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.1.0: {} + + eslint@9.11.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) + '@eslint-community/regexpp': 4.11.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.6.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.11.1 + '@eslint/plugin-kit': 0.2.0 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 + '@nodelib/fs.walk': 1.2.8 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint-scope: 8.1.0 + eslint-visitor-keys: 4.1.0 + espree: 10.2.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + 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.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@10.2.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.1.0 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + eventemitter3@5.0.1: {} + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up-simple@1.0.0: {} + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.8 + pkg-dir: 4.2.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + flattie@1.1.1: {} + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + gensync@1.0.0-beta.2: {} + + geotiff@2.1.3: + dependencies: + '@petamoriken/float16': 3.8.7 + lerc: 3.0.0 + pako: 2.1.0 + parse-headers: 2.0.5 + quick-lru: 6.1.2 + web-worker: 1.3.0 + xml-utils: 1.10.1 + zstddec: 0.1.0 + + get-east-asian-width@1.2.0: {} + + github-slugger@2.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globals@15.9.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.1 + parse5: 7.1.2 + vfile: 6.0.3 + vfile-message: 4.0.2 + + hast-util-from-parse5@8.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 8.0.0 + property-information: 6.5.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-parse-selector@4.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-raw@9.0.4: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + '@ungap/structured-clone': 1.2.0 + hast-util-from-parse5: 8.0.1 + hast-util-to-parse5: 8.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + parse5: 7.1.2 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-html@9.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-parse5@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hastscript@8.0.0: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + + html-escaper@3.0.3: {} + + html-void-elements@3.0.0: {} + + http-cache-semantics@4.1.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.1.0: {} + + imurmurhash@0.1.4: {} + + is-arrayish@0.3.2: + optional: true + + is-docker@3.0.0: {} + + is-extendable@0.1.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@2.0.0: {} + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@4.1.0: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isexe@2.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + kleur@4.1.5: {} + + lerc@3.0.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + log-symbols@6.0.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magicast@0.3.5: + dependencies: + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + source-map-js: 1.2.1 + + markdown-table@3.0.3: {} + + mdast-util-definitions@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + unist-util-visit: 5.0.0 + + mdast-util-find-and-replace@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.1 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-table@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-space@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + + micromark@4.0.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.7 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mimic-function@5.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + mrmime@2.0.0: {} + + ms@2.1.3: {} + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + neotraverse@0.6.18: {} + + nlcst-to-string@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + + node-releases@2.0.18: {} + + ol@10.2.1: + dependencies: + '@types/rbush': 3.0.3 + color-rgba: 3.0.0 + color-space: 2.0.1 + earcut: 3.0.0 + geotiff: 2.1.3 + pbf: 4.0.1 + rbush: 4.0.1 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + oniguruma-to-js@0.4.3: + dependencies: + regex: 4.3.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@8.1.0: + dependencies: + chalk: 5.3.0 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@6.1.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-queue@8.0.1: + dependencies: + eventemitter3: 5.0.1 + p-timeout: 6.1.2 + + p-timeout@6.1.2: {} + + p-try@2.2.0: {} + + pako@2.1.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-headers@2.0.5: {} + + parse-latin@7.0.0: + dependencies: + '@types/nlcst': 2.0.3 + '@types/unist': 3.0.3 + nlcst-to-string: 4.0.0 + unist-util-modify-children: 4.0.0 + unist-util-visit-children: 3.0.0 + vfile: 6.0.3 + + parse5@7.1.2: + dependencies: + entities: 4.5.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + pbf@4.0.1: + dependencies: + resolve-protobuf-schema: 2.1.0 + + picocolors@1.1.0: {} + + picomatch@2.3.1: {} + + pify@4.0.1: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + playwright-core@1.47.2: {} + + playwright@1.47.2: + dependencies: + playwright-core: 1.47.2 + optionalDependencies: + fsevents: 2.3.2 + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + preferred-pm@4.0.0: + dependencies: + find-up-simple: 1.0.0 + find-yarn-workspace-root2: 1.2.16 + which-pm: 3.0.0 + + prelude-ls@1.2.1: {} + + prismjs@1.29.0: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + property-information@6.5.0: {} + + protocol-buffers-schema@3.6.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + quick-lru@6.1.2: {} + + quickselect@3.0.0: {} + + rbush@4.0.1: + dependencies: + quickselect: 3.0.0 + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-reconciler@0.29.2(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-refresh@0.14.2: {} + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + regex@4.3.2: {} + + rehype-parse@9.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html: 2.0.3 + unified: 11.0.5 + + rehype-raw@7.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-raw: 9.0.4 + vfile: 6.0.3 + + rehype-stringify@10.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + unified: 11.0.5 + + rehype@13.0.2: + dependencies: + '@types/hast': 3.0.4 + rehype-parse: 9.0.1 + rehype-stringify: 10.0.1 + unified: 11.0.5 + + remark-gfm@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.1 + micromark-util-types: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + + remark-smartypants@3.0.2: + dependencies: + retext: 9.0.0 + retext-smartypants: 6.1.1 + unified: 11.0.5 + unist-util-visit: 5.0.0 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.5 + + resolve-from@4.0.0: {} + + resolve-protobuf-schema@2.1.0: + dependencies: + protocol-buffers-schema: 3.6.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + retext-latin@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + parse-latin: 7.0.0 + unified: 11.0.5 + + retext-smartypants@6.1.1: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unist-util-visit: 5.0.0 + + retext-stringify@4.0.0: + dependencies: + '@types/nlcst': 2.0.3 + nlcst-to-string: 4.0.0 + unified: 11.0.5 + + retext@9.0.0: + dependencies: + '@types/nlcst': 2.0.3 + retext-latin: 4.0.0 + retext-stringify: 4.0.0 + unified: 11.0.5 + + reusify@1.0.4: {} + + rollup@4.23.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.23.0 + '@rollup/rollup-android-arm64': 4.23.0 + '@rollup/rollup-darwin-arm64': 4.23.0 + '@rollup/rollup-darwin-x64': 4.23.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.23.0 + '@rollup/rollup-linux-arm-musleabihf': 4.23.0 + '@rollup/rollup-linux-arm64-gnu': 4.23.0 + '@rollup/rollup-linux-arm64-musl': 4.23.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.23.0 + '@rollup/rollup-linux-riscv64-gnu': 4.23.0 + '@rollup/rollup-linux-s390x-gnu': 4.23.0 + '@rollup/rollup-linux-x64-gnu': 4.23.0 + '@rollup/rollup-linux-x64-musl': 4.23.0 + '@rollup/rollup-win32-arm64-msvc': 4.23.0 + '@rollup/rollup-win32-ia32-msvc': 4.23.0 + '@rollup/rollup-win32-x64-msvc': 4.23.0 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + + semver@6.3.1: {} + + semver@7.6.3: {} + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@1.21.0: + dependencies: + '@shikijs/core': 1.21.0 + '@shikijs/engine-javascript': 1.21.0 + '@shikijs/engine-oniguruma': 1.21.0 + '@shikijs/types': 1.21.0 + '@shikijs/vscode-textmate': 9.2.2 + '@types/hast': 3.0.4 + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + + sisteransi@1.0.5: {} + + source-map-js@1.2.1: {} + + space-separated-tokens@2.0.2: {} + + sprintf-js@1.0.3: {} + + stdin-discarder@0.2.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom-string@1.0.0: {} + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + text-table@0.2.0: {} + + tinyexec@0.3.0: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-api-utils@1.3.0(typescript@5.6.2): + dependencies: + typescript: 5.6.2 + + tsconfck@3.1.3(typescript@5.6.2): + optionalDependencies: + typescript: 5.6.2 + + tslib@2.7.0: + optional: true + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@4.26.1: {} + + typescript-eslint@8.8.0(eslint@9.11.1)(typescript@5.6.2): + dependencies: + '@typescript-eslint/eslint-plugin': 8.8.0(@typescript-eslint/parser@8.8.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2) + '@typescript-eslint/parser': 8.8.0(eslint@9.11.1)(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.0(eslint@9.11.1)(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - eslint + - supports-color + + typescript@5.6.2: {} + + ultrahtml@1.5.3: {} + + undici-types@6.19.8: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-modify-children@4.0.0: + dependencies: + '@types/unist': 3.0.3 + array-iterate: 2.0.1 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.0.0 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-children@3.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + update-browserslist-db@1.1.1(browserslist@4.24.0): + dependencies: + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vite@5.4.8(@types/node@22.7.4): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.23.0 + optionalDependencies: + '@types/node': 22.7.4 + fsevents: 2.3.3 + + vitefu@1.0.2(vite@5.4.8(@types/node@22.7.4)): + optionalDependencies: + vite: 5.4.8(@types/node@22.7.4) + + web-namespaces@2.0.1: {} + + web-worker@1.3.0: {} + + which-pm-runs@1.1.0: {} + + which-pm@3.0.0: + dependencies: + load-yaml-file: 0.2.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@5.0.0: + dependencies: + string-width: 7.2.0 + + word-wrap@1.2.5: {} + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + xml-utils@1.10.1: {} + + xxhash-wasm@1.0.2: {} + + yallist@3.1.1: {} + + yargs-parser@21.1.1: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + zod-to-json-schema@3.23.3(zod@3.23.8): + dependencies: + zod: 3.23.8 + + zod-to-ts@1.2.0(typescript@5.6.2)(zod@3.23.8): + dependencies: + typescript: 5.6.2 + zod: 3.23.8 + + zod@3.23.8: {} + + zstddec@0.1.0: {} + + zwitch@2.0.4: {} diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..22087ee --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/src/lib/components/GeoDataSource.ts b/src/lib/components/GeoDataSource.ts new file mode 100644 index 0000000..2131d92 --- /dev/null +++ b/src/lib/components/GeoDataSource.ts @@ -0,0 +1,14 @@ +import VectorLayer from "ol/layer/Vector"; +import { createElement } from "react"; +import { DATA_SOURCE } from "../utils/config"; + +export interface DataSourceProps { + url: string; + fitViewToData?: boolean; +} + +export default function GeoDataSource(props: DataSourceProps) { + const layerConstructor = VectorLayer; + + return createElement(DATA_SOURCE, { ...props, layerConstructor }); +} diff --git a/src/lib/components/GeoMap.ts b/src/lib/components/GeoMap.ts new file mode 100644 index 0000000..ca0bebf --- /dev/null +++ b/src/lib/components/GeoMap.ts @@ -0,0 +1,60 @@ +import { Map as OlMap, View } from "ol"; +import TileLayer from "ol/layer/Tile"; +import { OSM } from "ol/source"; +import React, { forwardRef, useEffect, useId, useRef } from "react"; +import { render } from "../render"; +interface Props { + children?: React.ReactNode; + className?: string; +} + +function GeoMap(props: Props, ref: React.Ref) { + const map = useRef(null); + const mapRef: React.Ref = ref ?? map; + const containerRef = useRef(null); + const id = useId(); + + useEffect(() => { + if (!map.current) { + map.current = new OlMap({ + target: id, + view: new View({ + center: [0, 0], + zoom: 1, + }), + layers: [ + new TileLayer({ + source: new OSM(), + }), + ], + controls: [], + }); + } + + if (typeof mapRef === "function") { + mapRef(map.current); + } else if (mapRef.current === null && map.current) { + (mapRef as React.MutableRefObject).current = map.current; + } + }, []); + + useEffect(() => { + if (map.current && props.children) { + render(props.children as React.ReactElement, map.current); + } + }, [props.children]); + + return React.createElement("div", { + id: id, + ref: containerRef, + className: props.className + ? `react-geojson-map ${props.className}` + : "react-geojson-map", + style: { + width: "100%", + height: "100%", + }, + }); +} + +export default forwardRef(GeoMap); diff --git a/src/lib/components/Popup.ts b/src/lib/components/Popup.ts new file mode 100644 index 0000000..c77664e --- /dev/null +++ b/src/lib/components/Popup.ts @@ -0,0 +1,49 @@ +import { createElement, useEffect, useRef } from "react"; +import { createPortal } from "react-dom"; +import { POPUP } from "../utils/config"; + +export interface PopupProps

{ + properties: P; + popupFunc: (properties: P) => React.ReactNode; +} + +export default function Popup

(props: PopupProps

) { + const overlayPortalContainer = useRef(null); + + if (!overlayPortalContainer.current) { + overlayPortalContainer.current = document.createElement("div"); + + if (process.env.NODE_ENV === "development") { + overlayPortalContainer.current.className = "popup"; + overlayPortalContainer.current.style.zIndex = "1000"; + overlayPortalContainer.current.style.width = "200px"; + overlayPortalContainer.current.style.height = "200px"; + overlayPortalContainer.current.style.backgroundColor = "red"; + } + + document.body.appendChild(overlayPortalContainer.current); + createPortal( + props.popupFunc(props.properties), + overlayPortalContainer.current + ); + } + + useEffect(() => { + return () => { + document.body.removeChild( + overlayPortalContainer.current as HTMLDivElement + ); + overlayPortalContainer.current = null; + }; + }, []); + + // NOTE:: WIP + return null; + + return createElement(POPUP, { + ...props, + type: POPUP, + overlayPortalContainer: overlayPortalContainer.current, + popupFunc: props.popupFunc, + }); +} diff --git a/src/lib/index.d.ts b/src/lib/index.d.ts new file mode 100644 index 0000000..6746d97 --- /dev/null +++ b/src/lib/index.d.ts @@ -0,0 +1,28 @@ +import type React from "react"; + +export interface GeoMapProps { + children?: React.ReactNode; + className?: string; +} + +export function GeoMap(props: GeoMapProps): React.ReactElement; + +export interface DataSourceProps { + url: string; + fitViewToData?: boolean; +} + +export function GeoDataSource(props: DataSourceProps): React.ReactElement; + +// NOTE:: WIP +export interface PopupProps

{ + properties: P; + popupFunc: (properties: P) => React.ReactNode; +} + +export function Popup

(props: PopupProps

): React.ReactElement | null; + +export function observeCSSVariables( + targetElement: HTMLElement, + callback: () => void +): MutationObserver; diff --git a/src/lib/index.js b/src/lib/index.js new file mode 100644 index 0000000..d16534d --- /dev/null +++ b/src/lib/index.js @@ -0,0 +1,4 @@ +import GeoDataSource from "./components/GeoDataSource"; +import GeoMap from "./components/GeoMap"; + +export { GeoDataSource, GeoMap }; diff --git a/src/lib/render.ts b/src/lib/render.ts new file mode 100644 index 0000000..b2ca9ef --- /dev/null +++ b/src/lib/render.ts @@ -0,0 +1,242 @@ +import { Map as OlMap, Overlay } from "ol"; +import GeoJSON from "ol/format/GeoJSON"; +import VectorSource from "ol/source/Vector"; +import ReactDOM from "react-dom"; +import ReactReconciler from "react-reconciler"; +import { + ConcurrentRoot, + DefaultEventPriority, +} from "react-reconciler/constants.js"; +import type { DataSourceProps } from "./components/GeoDataSource"; +import type { OlInstance, PopupInstance, SupportedLayerType } from "./types"; +import { DATA_SOURCE, POPUP } from "./utils/config"; +import { observeCSSVariables } from "./utils/utils"; + +const roots = new WeakMap(); + +function createInstance( + type: string, + props: Record +): OlInstance | null { + try { + if (type === DATA_SOURCE) { + if (typeof props.layerConstructor === "function") { + const geojsonFormat = new GeoJSON(); + const layer = new props.layerConstructor({ + source: new VectorSource({ + url: props.url, + format: geojsonFormat, + }), + }); + + return { type, element: layer, props }; + } + } + + if (type === POPUP) { + // NOTE:: WIP + const popupOverlay = new Overlay({ + element: props.overlayPortalContainer, + }); + + return { type, element: popupOverlay, props }; + } + } catch (error) { + console.error("Error in createInstance", error); + return null; + } + return null; +} + +function appendChildToContainer(container: OlMap, child: OlInstance) { + if (container instanceof OlMap) { + if (child.type === DATA_SOURCE) { + const layer = child.element as SupportedLayerType; + + const targetElement = container.getTargetElement() as HTMLElement; + + const applyStyles = () => { + const computedStyle = getComputedStyle(targetElement); + layer.setStyle({ + "fill-color": + computedStyle.getPropertyValue( + "--data-source-polygon-fill-color" + ) || "rgba(126, 188, 111, 0.1)", + "stroke-color": + computedStyle.getPropertyValue( + "--data-source-polygon-stroke-color" + ) || "rgba(91, 124, 186, 1)", + "stroke-width": + Number.parseFloat( + computedStyle.getPropertyValue( + "--data-source-polygon-stroke-width" + ) + ) || 2, + }); + }; + + container.addLayer(layer); + + const observer = observeCSSVariables(targetElement, applyStyles); + observer.observe(targetElement, { + attributes: true, + attributeFilter: ["style", "class"], + }); + + applyStyles(); + + layer.getSource()?.once("change", () => { + if (layer.getSource()?.getState() === "ready") { + const extent = layer.getSource()?.getExtent(); + + if ( + child.props?.fitViewToData && + extent && + !extent.every((value) => !Number.isFinite(value)) + ) { + container.getView().fit(extent, { + padding: [20, 20, 20, 20], + maxZoom: 19, + duration: 1000, + }); + } + } + }); + } else if (child.type === POPUP) { + const popupInstance = child as PopupInstance; + container.addOverlay(popupInstance.popupOverlay); + + if (!popupInstance) + console.error("popupInstance is null, this feature is WIP"); + + container.on("singleclick", (event) => { + const feature = container.forEachFeatureAtPixel( + event.pixel, + (feature) => feature + ); + + if (feature) { + const coordinate = event.coordinate; + popupInstance.popupOverlay.setPosition(coordinate); + ReactDOM.render( + popupInstance.popupFunc( + feature.getProperties() + ) as React.ReactElement, + popupInstance.popupOverlay.getElement() as HTMLElement + ); + } else { + popupInstance.popupOverlay?.setPosition(undefined); + if (popupInstance.popupOverlay?.getElement()) { + ReactDOM.unmountComponentAtNode( + popupInstance.popupOverlay.getElement() as HTMLElement + ); + } + } + }); + } + } +} +function removeChild(parent: OlInstance | null, child: OlInstance | null) { + if (parent?.element instanceof OlMap && child) { + (parent.element as OlMap).removeLayer(child.element as SupportedLayerType); + } + if (child?.element instanceof Overlay) { + (child as PopupInstance).popupOverlay.setMap(null); + } +} + +function commitUpdate( + instance: OlInstance, + updatePayload: any, + type: string, + nextProps: any +) { + if (type === DATA_SOURCE) { + if ( + (updatePayload as DataSourceProps).url && + (instance?.element as SupportedLayerType).getSource() + ) { + (instance?.element as SupportedLayerType) + .getSource() + ?.setUrl((updatePayload as DataSourceProps).url); + } + } +} + +function prepareUpdate( + instance: OlInstance, + type: string, + prevProps: Record, + nextProps: Record +) { + if (type === DATA_SOURCE && prevProps.url !== nextProps.url) { + return { url: nextProps.url }; + } + if (type === POPUP && prevProps.overlay !== nextProps.overlay) { + return { overlay: nextProps.overlay }; + } + return null; +} + +const reconciler = ReactReconciler({ + supportsMutation: true, + createInstance, + createTextInstance: () => null, + appendChildToContainer, + appendChild: (parent, child) => {}, + removeChild, + insertBefore: (parent, child, beforeChild) => {}, + commitUpdate, + removeChildFromContainer: (container, child) => { + if (container instanceof OlMap) { + (container as OlMap).removeLayer(child?.element as SupportedLayerType); + } + }, + insertInContainerBefore: (container, child, beforeChild) => {}, + prepareUpdate, + finalizeInitialChildren: () => { + return false; + }, + getPublicInstance: (instance) => instance, + getChildHostContext: () => ({}), + getRootHostContext: () => ({}), + getCurrentEventPriority: () => DefaultEventPriority, + prepareForCommit: () => null, + resetAfterCommit: () => {}, + clearContainer: () => null, + appendInitialChild: (container, child) => {}, + shouldSetTextContent: () => false, + detachDeletedInstance: () => {}, + supportsPersistence: false, + preparePortalMount: () => {}, + scheduleTimeout: setTimeout, + cancelTimeout: clearTimeout, + noTimeout: -1, + isPrimaryRenderer: false, + warnsIfNotActing: true, + getInstanceFromNode: () => null, + beforeActiveInstanceBlur: () => {}, + afterActiveInstanceBlur: () => {}, + prepareScopeUpdate: () => {}, + getInstanceFromScope: () => null, + supportsHydration: false, +}); + +export function render(element: React.ReactElement, container: OlMap) { + let root = roots.get(container); + if (!root) { + root = reconciler.createContainer( + container, + ConcurrentRoot, + null, + false, + null, + "", + () => {}, + null + ); + roots.set(container, root); + } + + reconciler.updateContainer(element, root, null, () => {}); +} diff --git a/src/lib/types.d.ts b/src/lib/types.d.ts new file mode 100644 index 0000000..66af882 --- /dev/null +++ b/src/lib/types.d.ts @@ -0,0 +1,15 @@ +import type { Map as OlMap, Overlay } from "ol"; +import type VectorLayer from "ol/layer/Vector"; + +export type SupportedLayerType = VectorLayer; + +export interface OlInstance { + type: string; + element: OlMap | SupportedLayerType | Overlay; + props?: Record; +} + +export interface PopupInstance extends OlInstance { + popupOverlay: Overlay; + popupFunc: (properties: any) => React.ReactNode; +} diff --git a/src/lib/utils/config.ts b/src/lib/utils/config.ts new file mode 100644 index 0000000..76a7fc0 --- /dev/null +++ b/src/lib/utils/config.ts @@ -0,0 +1,2 @@ +export const DATA_SOURCE = "data-source"; +export const POPUP = "popup"; diff --git a/src/lib/utils/utils.ts b/src/lib/utils/utils.ts new file mode 100644 index 0000000..6f6a844 --- /dev/null +++ b/src/lib/utils/utils.ts @@ -0,0 +1,23 @@ +export function observeCSSVariables( + targetElement: HTMLElement, + callback: () => void +): MutationObserver { + const observer = new MutationObserver((mutations) => { + for (const mutation of mutations) { + if ( + mutation.type === "attributes" && + (mutation.attributeName === "style" || + mutation.attributeName === "class") + ) { + callback(); + } + } + }); + + observer.observe(targetElement, { + attributes: true, + attributeFilter: ["style", "class"], + }); + + return observer; +} diff --git a/test-results/.last-run.json b/test-results/.last-run.json new file mode 100644 index 0000000..cbcc1fb --- /dev/null +++ b/test-results/.last-run.json @@ -0,0 +1,4 @@ +{ + "status": "passed", + "failedTests": [] +} \ No newline at end of file diff --git a/tests/snapshot.spec.ts b/tests/snapshot.spec.ts new file mode 100644 index 0000000..72cf5fb --- /dev/null +++ b/tests/snapshot.spec.ts @@ -0,0 +1,17 @@ +import { Page, expect, test } from "@playwright/test"; + +test( + "renders map correctly", + async ({ page }: { page: Page }) => { + await new Promise((resolve) => setTimeout(resolve, 1000)); // Wait for 5 seconds + + await page.goto("http://localhost:4321/test"); + + await page.waitForSelector(".ol-viewport", { timeout: 30000 }); + + await page.waitForTimeout(1000); + + expect(await page.screenshot()).toMatchSnapshot("map.png"); + }, + { timeout: 90000 }, +); \ No newline at end of file diff --git a/tests/snapshot.spec.ts-snapshots/map-darwin.png b/tests/snapshot.spec.ts-snapshots/map-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..400ba3d12ea498c14da9685c63a675103491d406 GIT binary patch literal 37452 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

9*Hma|p_htg6(mDsJ=JRK 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 literal 0 HcmV?d00001 diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..3edec40 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "moduleResolution": "node", + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + + /* Bundler mode */ + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true, + "allowSyntheticDefaultImports": true, + + "outDir": "dist", + "declaration": true + }, + "include": ["src/lib"] +} diff --git a/tsconfig.app.tsbuildinfo b/tsconfig.app.tsbuildinfo new file mode 100644 index 0000000..8dbaf89 --- /dev/null +++ b/tsconfig.app.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./src/lib/index.d.ts","./src/lib/render.ts","./src/lib/types.d.ts","./src/lib/components/geodatasource.ts","./src/lib/components/geomap.ts","./src/lib/components/popup.ts","./src/lib/utils/config.ts","./src/lib/utils/utils.ts"],"version":"5.6.2"} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..3984362 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022"], + "module": "ESNext", + "moduleResolution": "node", + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + + /* Bundler mode */ + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noFallthroughCasesInSwitch": true, + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/tsconfig.node.tsbuildinfo b/tsconfig.node.tsbuildinfo new file mode 100644 index 0000000..98ef2f9 --- /dev/null +++ b/tsconfig.node.tsbuildinfo @@ -0,0 +1 @@ +{"root":["./vite.config.ts"],"version":"5.6.2"} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..46fcb23 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,25 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + build: { + lib: { + entry: "src/lib/index.js", + name: "react-geojson-map", + fileName: (format) => `react-geojson-map.${format}.js`, + }, + rollupOptions: { + external: ["react", "react-dom", "ol", "react-reconciler"], + output: { + globals: { + react: "React", + "react-dom": "ReactDOM", + ol: "ol", + "react-reconciler": "ReactReconciler", + }, + }, + }, + }, +});