From 60f3f8a0969d7662b9b62f24ba59c0981cb3f716 Mon Sep 17 00:00:00 2001 From: bytedream Date: Sun, 18 May 2025 13:16:20 +0200 Subject: [PATCH] initial commit --- .devcontainer/Dockerfile | 5 + .devcontainer/devcontainer.json | 18 + .devcontainer/docker-compose.yml | 23 + .env.example | 13 + .gitea/workflows/deploy.yml | 34 + .gitignore | 23 + .prettierrc.mjs | 25 + README.md | 188 + astro.config.mjs | 53 + eslint.config.mjs | 49 + package-lock.json | 10660 ++++++++++++++++ package.json | 47 + public/favicon.svg | 9 + src/actions/admin.ts | 45 + src/actions/feedback.ts | 40 + src/actions/index.ts | 19 + src/actions/report.ts | 80 + src/actions/session.ts | 49 + src/actions/settings.ts | 23 + src/actions/signup.ts | 119 + src/actions/team.ts | 122 + src/actions/user.ts | 88 + src/app/admin/admins/Admins.svelte | 63 + src/app/admin/admins/Badges.svelte | 49 + src/app/admin/admins/CreateOrEditPopup.svelte | 115 + src/app/admin/admins/SidebarActions.svelte | 34 + src/app/admin/admins/actions.ts | 41 + src/app/admin/admins/state.ts | 4 + src/app/admin/admins/types.ts | 4 + src/app/admin/feedback/BottomBar.svelte | 29 + src/app/admin/feedback/Feedback.svelte | 53 + src/app/admin/feedback/actions.ts | 13 + src/app/admin/feedback/state.ts | 4 + src/app/admin/feedback/types.ts | 4 + src/app/admin/reports/BottomBar.svelte | 87 + src/app/admin/reports/CreatePopup.svelte | 97 + src/app/admin/reports/Reports.svelte | 50 + src/app/admin/reports/SidebarActions.svelte | 34 + src/app/admin/reports/actions.ts | 67 + src/app/admin/reports/state.ts | 4 + src/app/admin/reports/types.ts | 14 + src/app/admin/settings/Settings.svelte | 137 + src/app/admin/settings/actions.ts | 19 + src/app/admin/settings/dynamicSettings.ts | 44 + src/app/admin/teams/CreateOrEditPopup.svelte | 102 + src/app/admin/teams/SidebarActions.svelte | 43 + src/app/admin/teams/Teams.svelte | 65 + src/app/admin/teams/actions.ts | 41 + src/app/admin/teams/state.ts | 4 + src/app/admin/teams/types.ts | 6 + src/app/admin/users/CreateOrEditPopup.svelte | 95 + src/app/admin/users/SidebarActions.svelte | 34 + src/app/admin/users/Users.svelte | 56 + src/app/admin/users/actions.ts | 56 + src/app/admin/users/state.ts | 6 + src/app/admin/users/types.ts | 9 + src/app/webite/index/Teams.svelte | 62 + src/assets/admin_layout.css | 32 + src/assets/fonts/Geist.ttf | Bin 0 -> 148768 bytes src/assets/fonts/GeistMono.ttf | Bin 0 -> 137740 bytes src/assets/fonts/MinecraftRegular.otf | Bin 0 -> 11016 bytes src/assets/img/background.webp | Bin 0 -> 79432 bytes src/assets/img/menu-button.webp | Bin 0 -> 15422 bytes src/assets/img/menu-faq.webp | Bin 0 -> 252 bytes src/assets/img/menu-feedback.webp | Bin 0 -> 128 bytes src/assets/img/menu-home.webp | Bin 0 -> 180 bytes src/assets/img/menu-inventory-bar.webp | Bin 0 -> 1812 bytes src/assets/img/menu-rules.webp | Bin 0 -> 198 bytes src/assets/img/menu-selected-frame.webp | Bin 0 -> 322 bytes src/assets/img/menu-signup.webp | Bin 0 -> 216 bytes src/assets/img/menu-team.webp | Bin 0 -> 156 bytes src/assets/img/skeleton.png | Bin 0 -> 1293 bytes src/assets/img/steve.png | Bin 0 -> 1252 bytes src/assets/img/varo.webp | Bin 0 -> 6588 bytes src/assets/website_layout.css | 41 + src/components/Welcome.astro | 205 + src/components/admin/search/Search.svelte | 97 + src/components/admin/search/TeamSearch.svelte | 61 + src/components/admin/search/UserSearch.svelte | 61 + src/components/admin/table/SortableTh.svelte | 48 + src/components/admin/table/SortableTr.svelte | 57 + src/components/input/Checkbox.svelte | 51 + src/components/input/Input.svelte | 75 + src/components/input/Password.svelte | 70 + src/components/input/Select.svelte | 71 + src/components/input/Textarea.svelte | 36 + src/components/popup/ConfirmPopup.svelte | 33 + src/components/popup/ConfirmPopup.ts | 3 + src/components/popup/Popup.svelte | 33 + src/components/popup/Popup.ts | 3 + src/components/website/Team.svelte | 13 + src/components/website/index/Countdown.svelte | 69 + src/components/website/index/Scroll.svelte | 39 + src/components/website/layout/Menu.svelte | 180 + .../website/signup/RegisteredPopup.svelte | 94 + .../website/signup/RegisteredPopup.ts | 12 + .../website/signup/RulesPopup.svelte | 84 + src/components/website/signup/RulesPopup.ts | 4 + .../website/signup/TeamPopup.svelte | 30 + src/components/website/signup/TeamPopup.ts | 4 + src/db/database.sql | 121 + src/db/database.ts | 221 + src/db/schema/admin.ts | 63 + src/db/schema/death.ts | 42 + src/db/schema/feedback.ts | 78 + src/db/schema/report.ts | 104 + src/db/schema/reportStatus.ts | 54 + src/db/schema/settings.ts | 41 + src/db/schema/strike.ts | 34 + src/db/schema/strikeReason.ts | 17 + src/db/schema/team.ts | 256 + src/db/schema/teamDraft.ts | 56 + src/db/schema/teamMember.ts | 35 + src/db/schema/user.ts | 107 + src/layouts/BaseLayout.astro | 29 + src/layouts/admin/AdminLayout.astro | 125 + src/layouts/admin/AdminLoginLayout.astro | 16 + src/layouts/website/SignupLayout.astro | 20 + src/layouts/website/WebsiteLayout.astro | 41 + src/middleware.ts | 30 + src/pages/admin/admins.astro | 16 + src/pages/admin/feedback.astro | 14 + src/pages/admin/index.astro | 10 + src/pages/admin/login.astro | 50 + src/pages/admin/reports.astro | 16 + src/pages/admin/settings.astro | 17 + src/pages/admin/teams.astro | 16 + src/pages/admin/users.astro | 16 + src/pages/api/feedback/index.ts | 37 + src/pages/api/player/death.ts | 44 + src/pages/api/player/status.ts | 74 + src/pages/api/team/index.ts | 26 + src/pages/faq.astro | 214 + src/pages/feedback.astro | 119 + src/pages/index.astro | 89 + src/pages/rules.astro | 39 + src/pages/signup.astro | 226 + src/pages/team.astro | 76 + src/rules.ts | 236 + src/util/action.ts | 10 + src/util/minecraft.ts | 14 + src/util/permissions.ts | 80 + src/util/random.ts | 5 + src/util/session.ts | 77 + src/util/settings.ts | 50 + src/util/sleep.ts | 7 + src/util/webhook.ts | 33 + tsconfig.json | 16 + 148 files changed, 17900 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yml create mode 100644 .env.example create mode 100644 .gitea/workflows/deploy.yml create mode 100644 .gitignore create mode 100644 .prettierrc.mjs create mode 100644 README.md create mode 100644 astro.config.mjs create mode 100644 eslint.config.mjs create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 src/actions/admin.ts create mode 100644 src/actions/feedback.ts create mode 100644 src/actions/index.ts create mode 100644 src/actions/report.ts create mode 100644 src/actions/session.ts create mode 100644 src/actions/settings.ts create mode 100644 src/actions/signup.ts create mode 100644 src/actions/team.ts create mode 100644 src/actions/user.ts create mode 100644 src/app/admin/admins/Admins.svelte create mode 100644 src/app/admin/admins/Badges.svelte create mode 100644 src/app/admin/admins/CreateOrEditPopup.svelte create mode 100644 src/app/admin/admins/SidebarActions.svelte create mode 100644 src/app/admin/admins/actions.ts create mode 100644 src/app/admin/admins/state.ts create mode 100644 src/app/admin/admins/types.ts create mode 100644 src/app/admin/feedback/BottomBar.svelte create mode 100644 src/app/admin/feedback/Feedback.svelte create mode 100644 src/app/admin/feedback/actions.ts create mode 100644 src/app/admin/feedback/state.ts create mode 100644 src/app/admin/feedback/types.ts create mode 100644 src/app/admin/reports/BottomBar.svelte create mode 100644 src/app/admin/reports/CreatePopup.svelte create mode 100644 src/app/admin/reports/Reports.svelte create mode 100644 src/app/admin/reports/SidebarActions.svelte create mode 100644 src/app/admin/reports/actions.ts create mode 100644 src/app/admin/reports/state.ts create mode 100644 src/app/admin/reports/types.ts create mode 100644 src/app/admin/settings/Settings.svelte create mode 100644 src/app/admin/settings/actions.ts create mode 100644 src/app/admin/settings/dynamicSettings.ts create mode 100644 src/app/admin/teams/CreateOrEditPopup.svelte create mode 100644 src/app/admin/teams/SidebarActions.svelte create mode 100644 src/app/admin/teams/Teams.svelte create mode 100644 src/app/admin/teams/actions.ts create mode 100644 src/app/admin/teams/state.ts create mode 100644 src/app/admin/teams/types.ts create mode 100644 src/app/admin/users/CreateOrEditPopup.svelte create mode 100644 src/app/admin/users/SidebarActions.svelte create mode 100644 src/app/admin/users/Users.svelte create mode 100644 src/app/admin/users/actions.ts create mode 100644 src/app/admin/users/state.ts create mode 100644 src/app/admin/users/types.ts create mode 100644 src/app/webite/index/Teams.svelte create mode 100644 src/assets/admin_layout.css create mode 100644 src/assets/fonts/Geist.ttf create mode 100644 src/assets/fonts/GeistMono.ttf create mode 100644 src/assets/fonts/MinecraftRegular.otf create mode 100644 src/assets/img/background.webp create mode 100644 src/assets/img/menu-button.webp create mode 100644 src/assets/img/menu-faq.webp create mode 100644 src/assets/img/menu-feedback.webp create mode 100644 src/assets/img/menu-home.webp create mode 100644 src/assets/img/menu-inventory-bar.webp create mode 100644 src/assets/img/menu-rules.webp create mode 100644 src/assets/img/menu-selected-frame.webp create mode 100644 src/assets/img/menu-signup.webp create mode 100644 src/assets/img/menu-team.webp create mode 100644 src/assets/img/skeleton.png create mode 100644 src/assets/img/steve.png create mode 100644 src/assets/img/varo.webp create mode 100644 src/assets/website_layout.css create mode 100644 src/components/Welcome.astro create mode 100644 src/components/admin/search/Search.svelte create mode 100644 src/components/admin/search/TeamSearch.svelte create mode 100644 src/components/admin/search/UserSearch.svelte create mode 100644 src/components/admin/table/SortableTh.svelte create mode 100644 src/components/admin/table/SortableTr.svelte create mode 100644 src/components/input/Checkbox.svelte create mode 100644 src/components/input/Input.svelte create mode 100644 src/components/input/Password.svelte create mode 100644 src/components/input/Select.svelte create mode 100644 src/components/input/Textarea.svelte create mode 100644 src/components/popup/ConfirmPopup.svelte create mode 100644 src/components/popup/ConfirmPopup.ts create mode 100644 src/components/popup/Popup.svelte create mode 100644 src/components/popup/Popup.ts create mode 100644 src/components/website/Team.svelte create mode 100644 src/components/website/index/Countdown.svelte create mode 100644 src/components/website/index/Scroll.svelte create mode 100644 src/components/website/layout/Menu.svelte create mode 100644 src/components/website/signup/RegisteredPopup.svelte create mode 100644 src/components/website/signup/RegisteredPopup.ts create mode 100644 src/components/website/signup/RulesPopup.svelte create mode 100644 src/components/website/signup/RulesPopup.ts create mode 100644 src/components/website/signup/TeamPopup.svelte create mode 100644 src/components/website/signup/TeamPopup.ts create mode 100644 src/db/database.sql create mode 100644 src/db/database.ts create mode 100644 src/db/schema/admin.ts create mode 100644 src/db/schema/death.ts create mode 100644 src/db/schema/feedback.ts create mode 100644 src/db/schema/report.ts create mode 100644 src/db/schema/reportStatus.ts create mode 100644 src/db/schema/settings.ts create mode 100644 src/db/schema/strike.ts create mode 100644 src/db/schema/strikeReason.ts create mode 100644 src/db/schema/team.ts create mode 100644 src/db/schema/teamDraft.ts create mode 100644 src/db/schema/teamMember.ts create mode 100644 src/db/schema/user.ts create mode 100644 src/layouts/BaseLayout.astro create mode 100644 src/layouts/admin/AdminLayout.astro create mode 100644 src/layouts/admin/AdminLoginLayout.astro create mode 100644 src/layouts/website/SignupLayout.astro create mode 100644 src/layouts/website/WebsiteLayout.astro create mode 100644 src/middleware.ts create mode 100644 src/pages/admin/admins.astro create mode 100644 src/pages/admin/feedback.astro create mode 100644 src/pages/admin/index.astro create mode 100644 src/pages/admin/login.astro create mode 100644 src/pages/admin/reports.astro create mode 100644 src/pages/admin/settings.astro create mode 100644 src/pages/admin/teams.astro create mode 100644 src/pages/admin/users.astro create mode 100644 src/pages/api/feedback/index.ts create mode 100644 src/pages/api/player/death.ts create mode 100644 src/pages/api/player/status.ts create mode 100644 src/pages/api/team/index.ts create mode 100644 src/pages/faq.astro create mode 100644 src/pages/feedback.astro create mode 100644 src/pages/index.astro create mode 100644 src/pages/rules.astro create mode 100644 src/pages/signup.astro create mode 100644 src/pages/team.astro create mode 100644 src/rules.ts create mode 100644 src/util/action.ts create mode 100644 src/util/minecraft.ts create mode 100644 src/util/permissions.ts create mode 100644 src/util/random.ts create mode 100644 src/util/session.ts create mode 100644 src/util/settings.ts create mode 100644 src/util/sleep.ts create mode 100644 src/util/webhook.ts create mode 100644 tsconfig.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..e1b21b5 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,5 @@ +FROM node:22 + +WORKDIR /workspace + +USER node diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..e6a41ff --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,18 @@ +{ + "name": "website", + "dockerComposeFile": "docker-compose.yml", + "service": "app", + "workspaceFolder": "/workspace", + "forwardPorts": ["3306:3306", "4321:4321"], + "features": { + "ghcr.io/devcontainers/features/node:1": { + "version": "22" + } + }, + "postCreateCommand": "npm install", + "customizations": { + "jetbrains": { + "plugins": ["org.jetbrains.plugins.astro", "dev.blachut.svelte.lang"] + } + } +} diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 0000000..4ba3485 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,23 @@ +services: + app: + build: + context: .. + dockerfile: .devcontainer/Dockerfile + command: sleep infinity + depends_on: + - db + environment: + DATABASE_URL: mysql://website:website@db:3306/website + ports: + - '4321:4321' + + db: + image: mariadb:latest + environment: + MARIADB_ROOT_PASSWORD: root + MARIADB_DATABASE: website + MARIADB_USER: website + MARIADB_PASSWORD: website + ports: + - '3306:3306' + restart: always diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..72da78f --- /dev/null +++ b/.env.example @@ -0,0 +1,13 @@ +START_DATE=2025-06-23T00:19:00+0200 + +DATABASE_URI=mysql://website:website@localhost:3306/website + +ADMIN_USER=admin +ADMIN_PASSWORD=admin + +TEAMSPEAK_LINK=http://example.com +DISCORD_LINK=http://example.com +PAYPAL_LINK=http://example.com +SERVER_IP=1.1.1.1 + +BASE_PATH=http://localhost:4321 diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..94e4376 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,34 @@ +name: deploy + +on: + push: + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install dependencies + run: npm i + + - name: Build website + run: npm run build + + - name: Deploy + env: + HOST: ${{ secrets.SSH_HOST}} + USER: ${{ secrets.SSH_USER }} + SSH_KEY: ${{ secrets.SSH_KEY }} + run: | + mkdir -p "$HOME/.ssh" && touch "$HOME/.ssh/known_hosts" + echo "$SSH_KEY" > "$HOME/.ssh/deploy_key" + chmod 700 "$HOME/.ssh" && chmod 600 "$HOME/.ssh/known_hosts" && chmod 600 "$HOME/.ssh/deploy_key" + eval $(ssh-agent) + ssh-add "$HOME/.ssh/deploy_key" + ssh-keyscan -t rsa "$HOST" >> "$HOME/.ssh/known_hosts" + + ssh -o StrictHostKeyChecking=no $USER@$HOST "rm -r /opt/website; mkdir -p /opt/website" + scp -r -o StrictHostKeyChecking=no $(ls -d -1 dist/*) $(ls package*) $USER@$HOST:/opt/website + ssh -o StrictHostKeyChecking=no $USER@$HOST "cd /opt/website; npm i --omit=dev; systemctl restart website" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..153c2a2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# build output +dist/ + +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ diff --git a/.prettierrc.mjs b/.prettierrc.mjs new file mode 100644 index 0000000..4865afd --- /dev/null +++ b/.prettierrc.mjs @@ -0,0 +1,25 @@ +// @ts-check + +/** @type {import("prettier").Config} */ +export default { + useTabs: false, + singleQuote: true, + trailingComma: 'none', + tabWidth: 2, + printWidth: 120, + plugins: ['prettier-plugin-astro', 'prettier-plugin-svelte'], + overrides: [ + { + files: '*.svelte', + options: { + parser: 'svelte' + } + }, + { + files: '*.astro', + options: { + parser: 'astro' + } + } + ] +}; diff --git a/README.md b/README.md new file mode 100644 index 0000000..0565d04 --- /dev/null +++ b/README.md @@ -0,0 +1,188 @@ +## API + +> Wenn die env variable `API_SECRET` gesetzt ist, muss jede API Request den HTTP Header `Authorization: Basic ` haben. + +
+POST /api/feedback (Erstellt Feedbackformulare) + +##### Request Body + +``` +{ + // Interner Event Name (oder ID) + "event": string, + // Event Titel, wird über dem Feedbackformular angezeigt + "title": string, + // UUIDs aller Spieler, die das Feedback ausfüllen sollen + "users": string[] +} +``` + +##### Response Codes + +| http code | beschreibung | +| --------- | ------------------------------------------ | +| 200 | / | +| 400 | Der Request Body ist falsch | +| 401 | Es wurde ein falsches API Secret angegeben | + +##### Response Body + +``` +{ + "feedback": { + // UUID eines Spieler + "uuid": string + // URL zum Feedbackformular + "url": string + }[] +} +``` + +
+ +
+POST /api/player/death (Registriert einen Spielertod) + +##### Request Body + +``` +{ + // UUID des getöteten Spielers + "user": string, + // UUID des Spielers, der den Kill gemacht hat + "killer": string | null, + // Todesnachricht + "message": string +} +``` + +##### Response Codes + +| http code | beschreibung | +| --------- | -------------------------------------------------------------------------------- | +| 200 | / | +| 400 | Der Request Body ist falsch | +| 401 | Es wurde ein falsches API Secret angegeben | +| 404 | Der getötete Spieler, oder der Spieler der den Kill gemacht hat, existiert nicht | + +##### Response Body + +`/` + +
+ +
+POST /api/player/status (Status eines Spielers) + +##### Request Body + +``` +{ + // UUID eines Spielers + "user": string +} +``` + +##### Response Codes + +| http code | beschreibung | +| --------- | --------------------------------------------------- | +| 200 | / | +| 400 | Der Request Body ist falsch | +| 401 | Es wurde ein falsches API Secret angegeben | +| 404 | Der Spieler existiert nicht oder ist in keinem Team | + +##### Response Body + +``` +{ + "team": { + // Teamname + "name": string, + // Teamfarbe in HEX + "color": string + }, + // Ob der Spieler Tot ist + "dead": boolean, + // Gewichtung aller Strikes + "strikeWeight": number, + // UTC timestamp wann das Team zuletzt gejoined ist + "lastJoined": number | null +} +``` + +
+ +
+PUT /api/player/status (Updatet den Status eines Spielers) + +##### Request Body + +``` +{ + // UUID eines Spieler + "user": string, + // Registriert einen neuen UTC timestamp an dem das Team zuletzt gejoined ist + "lastJoined": number +} +``` + +##### Response Codes + +| http code | beschreibung | +| --------- | ------------------------------------------ | +| 200 | / | +| 400 | Der Request Body ist falsch | +| 401 | Es wurde ein falsches API Secret angegeben | + +##### Response Body + +`/` + +
+ +
+POST /api/teams (Liste aller Teams) + +##### Request Body + +`/` + +##### Response Codes + +| http code | beschreibung | +| --------- | ------------------------------------------ | +| 200 | / | +| 400 | Der Request Body ist falsch | +| 401 | Es wurde ein falsches API Secret angegeben | + +##### Response Body + +``` +{ + // Teamname + "name": string, + // Teamfarbe in HEX + "color": string, + // UUIDs aller Teammitglieder + "users": (string | null)[] +} +``` + +
+ +## Webhook + +> Die env variable `WEBHOOK_ENDPOINT` muss gesetzt und eine valide HTTP URL sein. + +Bei bestimmten Aktionen wird an den Webhook Endpoint ein Webhook gesendet. +Die Art des Webhooks wird dabei durch den `x-webhook-action` HTTP Header angegeben und hat einen festgelegten JSON Body. + +Das Webhook wir so oft gesendet, bis der angegebene Webhook Endpoint eine Response mit Status `200` zurücksendet. + +Alle Webhooks: + +| Beschreibung | HTTP Header | Body | +| -------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Ein Team hat ein Strike bekommen |
x-webhook-action: strike
|
{
  // UUIDs aller Nutzer des Teams, das einen Strike bekommen hat
  "users": string[],
  // Gewichtung aller Strikes, die das Team insgesamt bekommen hat
  "totalWeight": number
}
| diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..61688e1 --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,53 @@ +// @ts-check +import { defineConfig, envField } from 'astro/config'; + +import icon from 'astro-icon'; +import tailwindcss from '@tailwindcss/vite'; + +import svelte, { vitePreprocess } from '@astrojs/svelte'; + +import node from '@astrojs/node'; + +import inoxToolsRuntimeLogger from '@inox-tools/runtime-logger'; + +// https://astro.build/config +export default defineConfig({ + output: 'server', + + prefetch: true, + + devToolbar: { + enabled: false + }, + + vite: { + plugins: [tailwindcss()] + }, + + integrations: [icon(), svelte({ preprocess: vitePreprocess() }), inoxToolsRuntimeLogger()], + + env: { + schema: { + API_SECRET: envField.string({ context: 'server', access: 'secret', optional: true }), + + ADMIN_USER: envField.string({ context: 'server', access: 'secret', optional: true }), + ADMIN_PASSWORD: envField.string({ context: 'server', access: 'secret', optional: true }), + + START_DATE: envField.string({ context: 'client', access: 'public' }), + + WEBHOOK_ENDPOINT: envField.string({ context: 'client', access: 'public', optional: true }), + + TEAMSPEAK_LINK: envField.string({ context: 'client', access: 'public' }), + DISCORD_LINK: envField.string({ context: 'client', access: 'public' }), + PAYPAL_LINK: envField.string({ context: 'client', access: 'public', optional: true }), + SERVER_IP: envField.string({ context: 'client', access: 'public' }), + + DATABASE_URI: envField.string({ context: 'server', access: 'secret' }), + BASE_PATH: envField.string({ context: 'client', access: 'public' }) + } + }, + + adapter: node({ + mode: 'standalone' + }) +}); diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..ba084b0 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,49 @@ +import astro from 'eslint-plugin-astro'; +import svelte from 'eslint-plugin-svelte'; +import js from '@eslint/js'; +import ts from 'typescript-eslint'; +import { defineConfig, globalIgnores } from 'eslint/config'; +import globals from 'globals'; + +export default defineConfig([ + js.configs.recommended, + ...ts.configs.recommended, + ...astro.configs.recommended, + ...svelte.configs.recommended, + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + { + files: ['**/*.svelte'], + languageOptions: { + parserOptions: { + projectService: true, + extraFileExtensions: ['.svelte'], + parser: ts.parser + } + } + }, + { + rules: { + 'no-empty': ['error', { allowEmptyCatch: true }], + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + destructuredArrayIgnorePattern: '^_', + varsIgnorePattern: '^_' + } + ], + '@typescript-eslint/no-empty-object-type': 'off', + '@typescript-eslint/no-explicit-any': 'off' + } + }, + globalIgnores(['.astro/*', '.devcontainer/*', 'dist/*']) +]); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9ba5198 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10660 @@ +{ + "name": "website", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "website", + "version": "0.0.1", + "dependencies": { + "@astrojs/node": "^9.2.1", + "@astrojs/svelte": "^7.0.13", + "@iconify-json/fa-brands": "^1.2.1", + "@iconify-json/heroicons": "^1.2.2", + "@iconify/svelte": "^4.2.0", + "@inox-tools/runtime-logger": "^0.4.2", + "@tailwindcss/vite": "^4.1.3", + "astro": "^5.7.10", + "astro-icon": "^1.1.5", + "bcrypt": "^5.1.1", + "daisyui": "^5.0.25", + "drizzle-orm": "^0.41.0", + "mysql2": "^3.14.0", + "nanostores": "^1.0.1", + "sass-embedded": "^1.87.0", + "skinview3d": "^3.3.0", + "tailwindcss": "^4.1.3", + "typescript": "^5.8.3", + "zod": "^3.24.2" + }, + "devDependencies": { + "@types/bcrypt": "^5.0.2", + "@typescript-eslint/parser": "^8.32.1", + "eslint": "^9.26.0", + "eslint-plugin-astro": "^1.3.1", + "eslint-plugin-svelte": "^3.7.0", + "globals": "^16.1.0", + "prettier": "3.5.3", + "prettier-plugin-astro": "0.14.1", + "prettier-plugin-svelte": "^3.3.3", + "svelte": "^5.30.1", + "typescript-eslint": "^8.32.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", + "integrity": "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==", + "license": "MIT", + "dependencies": { + "package-manager-detector": "^0.2.8", + "tinyexec": "^0.3.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/install-pkg/node_modules/package-manager-detector": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", + "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", + "license": "MIT", + "dependencies": { + "quansync": "^0.2.7" + } + }, + "node_modules/@antfu/utils": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", + "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@astrojs/compiler": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.11.0.tgz", + "integrity": "sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==", + "license": "MIT" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.6.1.tgz", + "integrity": "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==", + "license": "MIT" + }, + "node_modules/@astrojs/markdown-remark": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.1.tgz", + "integrity": "sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.6.1", + "@astrojs/prism": "3.2.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", + "js-yaml": "^4.1.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.1", + "remark-smartypants": "^3.0.2", + "shiki": "^3.0.0", + "smol-toml": "^1.3.1", + "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" + } + }, + "node_modules/@astrojs/node": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-9.2.1.tgz", + "integrity": "sha512-kEHLB37ooW91p7FLGalqa3jVQRIafntfKiZgCnjN1lEYw+j8NP6VJHQbLHmzzbtKUI0J+srGiTnGZmaHErHE5w==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.6.1", + "send": "^1.1.0", + "server-destroy": "^1.0.1" + }, + "peerDependencies": { + "astro": "^5.3.0" + } + }, + "node_modules/@astrojs/prism": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz", + "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==", + "license": "MIT", + "dependencies": { + "prismjs": "^1.29.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@astrojs/svelte": { + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@astrojs/svelte/-/svelte-7.0.13.tgz", + "integrity": "sha512-wAWZu3Y/shIa83qVWyhr34vqwfl0GOXLsTYp081mMMOzuiyDAqmusFILua2zpbhqsQhQlhH/BYbGLEIQ/zQpRA==", + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^5.0.3", + "svelte2tsx": "^0.7.36", + "vite": "^6.3.4" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + }, + "peerDependencies": { + "astro": "^5.0.0", + "svelte": "^5.1.16", + "typescript": "^5.3.3" + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.1.tgz", + "integrity": "sha512-SSVM820Jqc6wjsn7qYfV9qfeQvePtVc1nSofhyap7l0/iakUKywj3hfy3UJAOV4sGV4Q/u450RD4AaCaFvNPlg==", + "license": "MIT", + "dependencies": { + "ci-info": "^4.2.0", + "debug": "^4.4.0", + "dlv": "^1.1.3", + "dset": "^3.1.4", + "is-docker": "^3.0.0", + "is-wsl": "^3.1.0", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", + "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", + "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.5.tgz", + "integrity": "sha512-/g5EzJifw5GF8aren8wZ/G5oMuPoGeS6MQD3ca8ddcvdXR5UELUfdTZITCGNhNXynY/AYl3Z4plmxdj/tRl/hQ==", + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@capsizecss/unpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz", + "integrity": "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==", + "license": "MIT", + "dependencies": { + "blob-to-buffer": "^1.2.8", + "cross-fetch": "^3.0.4", + "fontkit": "^2.0.2" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.0.tgz", + "integrity": "sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", + "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz", + "integrity": "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.13.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@iconify-json/fa-brands": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@iconify-json/fa-brands/-/fa-brands-1.2.1.tgz", + "integrity": "sha512-v5wVXoWIusAU1n0GGctIY+VyINIFXaD/WWHiwS+TFX74C0pFZrmrwUkqZDDCclu7zxuhlixPO+VLyDqNtoppfA==", + "license": "CC-BY-4.0", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify-json/heroicons": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@iconify-json/heroicons/-/heroicons-1.2.2.tgz", + "integrity": "sha512-qoW4pXr5kTTL6juEjgTs83OJIwpePu7q1tdtKVEdj+i0zyyVHgg/dd9grsXJQnpTpBt6/VwNjrXBvFjRsKPENg==", + "license": "MIT", + "dependencies": { + "@iconify/types": "*" + } + }, + "node_modules/@iconify/svelte": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-4.2.0.tgz", + "integrity": "sha512-fEl0T7SAPonK7xk6xUlRPDmFDZVDe2Z7ZstlqeDS/sS8ve2uyU+Qa8rTWbIqzZJlRvONkK5kVXiUf9nIc+6OOQ==", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "svelte": ">4.0.0" + } + }, + "node_modules/@iconify/tools": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@iconify/tools/-/tools-4.1.2.tgz", + "integrity": "sha512-q6NzLQYEN9zkDfcyBqD3vItHcZw97w/s++3H3TBxUORr57EfHxj6tOW6fyufDjMq+Vl56WXWaPx1csBPYlI5CA==", + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0", + "@iconify/utils": "^2.3.0", + "@types/tar": "^6.1.13", + "axios": "^1.8.3", + "cheerio": "1.0.0", + "domhandler": "^5.0.3", + "extract-zip": "^2.0.1", + "local-pkg": "^0.5.1", + "pathe": "^1.1.2", + "svgo": "^3.3.2", + "tar": "^6.2.1" + } + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", + "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", + "license": "MIT", + "dependencies": { + "@antfu/install-pkg": "^1.0.0", + "@antfu/utils": "^8.1.0", + "@iconify/types": "^2.0.0", + "debug": "^4.4.0", + "globals": "^15.14.0", + "kolorist": "^1.8.0", + "local-pkg": "^1.0.0", + "mlly": "^1.7.4" + } + }, + "node_modules/@iconify/utils/node_modules/confbox": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", + "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "license": "MIT" + }, + "node_modules/@iconify/utils/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@iconify/utils/node_modules/local-pkg": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", + "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.0.1", + "quansync": "^0.2.8" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@iconify/utils/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/@iconify/utils/node_modules/pkg-types": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz", + "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", + "license": "MIT", + "dependencies": { + "confbox": "^0.2.1", + "exsolve": "^1.0.1", + "pathe": "^2.0.3" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@inox-tools/modular-station": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@inox-tools/modular-station/-/modular-station-0.4.2.tgz", + "integrity": "sha512-o9tt6BhPJ5Of+b/xKjMqfqMCETa6KAyxREcl9y45UmaALEU5xwV6ZwpuO4VDsRoKnG0HB6PgRSPnXU1IdwSIeQ==", + "license": "MIT", + "dependencies": { + "@inox-tools/utils": "^0.3.1", + "astro-integration-kit": "~0.18.0", + "debug": "^4.4.0" + }, + "peerDependencies": { + "astro": "^5" + } + }, + "node_modules/@inox-tools/runtime-logger": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@inox-tools/runtime-logger/-/runtime-logger-0.4.2.tgz", + "integrity": "sha512-7Py4nZmYJw94XQEuHh6R8HxFruxKPWuz909Y076nu6y4pt/U7XYH6lXsZSrroKyNOW40CoWjquTbACGiGADmpA==", + "license": "MIT", + "dependencies": { + "@inox-tools/modular-station": "^0.4.2", + "@inox-tools/utils": "^0.3.1", + "astro-integration-kit": "~0.18.0" + }, + "peerDependencies": { + "astro": "^5" + } + }, + "node_modules/@inox-tools/utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@inox-tools/utils/-/utils-0.3.1.tgz", + "integrity": "sha512-2ppd/FyGpkRrDpEriLupyBDbw4nYO/3peQlIR905i+cI0XeUQkJ9zgfYaVB/rE59d6yJ3dQbZe1B9sk23oHgpg==", + "license": "MIT" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.3.tgz", + "integrity": "sha512-rmOWVRUbUJD7iSvJugjUbFZshTAuJ48MXoZ80Osx1GM0K/H1w7rSEvmw8m6vdWxNASgtaHIhAgre4H/E9GJiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", + "license": "MIT" + }, + "node_modules/@pkgr/core": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.4.tgz", + "integrity": "sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz", + "integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz", + "integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz", + "integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz", + "integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz", + "integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz", + "integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz", + "integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz", + "integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz", + "integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz", + "integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz", + "integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz", + "integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz", + "integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz", + "integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz", + "integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz", + "integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz", + "integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz", + "integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz", + "integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz", + "integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.2.1.tgz", + "integrity": "sha512-FhsdxMWYu/C11sFisEp7FMGBtX/OSSbnXZDMBhGuUDBNTdsoZlMSgQv5f90rwvzWAdWIW6VobD+G3IrazxA6dQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.2.1", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.2.1.tgz", + "integrity": "sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.2.1", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.1.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.2.1.tgz", + "integrity": "sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.2.1", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.2.1.tgz", + "integrity": "sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.2.1" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.2.1.tgz", + "integrity": "sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.2.1" + } + }, + "node_modules/@shikijs/types": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.2.1.tgz", + "integrity": "sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==", + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "license": "MIT" + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", + "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.0.3.tgz", + "integrity": "sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==", + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", + "debug": "^4.4.0", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.15", + "vitefu": "^1.0.4" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", + "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.7" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "svelte": "^5.0.0", + "vite": "^6.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.3.tgz", + "integrity": "sha512-H/6r6IPFJkCfBJZ2dKZiPJ7Ueb2wbL592+9bQEl2r73qbX6yGnmQVIfiUvDRB2YI0a3PWDrzUwkvQx1XW1bNkA==", + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.29.2", + "tailwindcss": "4.1.3" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.3.tgz", + "integrity": "sha512-t16lpHCU7LBxDe/8dCj9ntyNpXaSTAgxWm1u2XQP5NiIu4KGSyrDJJRlK9hJ4U9yJxx0UKCVI67MJWFNll5mOQ==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.3", + "@tailwindcss/oxide-darwin-arm64": "4.1.3", + "@tailwindcss/oxide-darwin-x64": "4.1.3", + "@tailwindcss/oxide-freebsd-x64": "4.1.3", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.3", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.3", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.3", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.3", + "@tailwindcss/oxide-linux-x64-musl": "4.1.3", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.3", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.3" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.3.tgz", + "integrity": "sha512-cxklKjtNLwFl3mDYw4XpEfBY+G8ssSg9ADL4Wm6//5woi3XGqlxFsnV5Zb6v07dxw1NvEX2uoqsxO/zWQsgR+g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.3.tgz", + "integrity": "sha512-mqkf2tLR5VCrjBvuRDwzKNShRu99gCAVMkVsaEOFvv6cCjlEKXRecPu9DEnxp6STk5z+Vlbh1M5zY3nQCXMXhw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.3.tgz", + "integrity": "sha512-7sGraGaWzXvCLyxrc7d+CCpUN3fYnkkcso3rCzwUmo/LteAl2ZGCDlGvDD8Y/1D3ngxT8KgDj1DSwOnNewKhmg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.3.tgz", + "integrity": "sha512-E2+PbcbzIReaAYZe997wb9rId246yDkCwAakllAWSGqe6VTg9hHle67hfH6ExjpV2LSK/siRzBUs5wVff3RW9w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.3.tgz", + "integrity": "sha512-GvfbJ8wjSSjbLFFE3UYz4Eh8i4L6GiEYqCtA8j2Zd2oXriPuom/Ah/64pg/szWycQpzRnbDiJozoxFU2oJZyfg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.3.tgz", + "integrity": "sha512-35UkuCWQTeG9BHcBQXndDOrpsnt3Pj9NVIB4CgNiKmpG8GnCNXeMczkUpOoqcOhO6Cc/mM2W7kaQ/MTEENDDXg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.3.tgz", + "integrity": "sha512-dm18aQiML5QCj9DQo7wMbt1Z2tl3Giht54uVR87a84X8qRtuXxUqnKQkRDK5B4bCOmcZ580lF9YcoMkbDYTXHQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.3.tgz", + "integrity": "sha512-LMdTmGe/NPtGOaOfV2HuO7w07jI3cflPrVq5CXl+2O93DCewADK0uW1ORNAcfu2YxDUS035eY2W38TxrsqngxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.3.tgz", + "integrity": "sha512-aalNWwIi54bbFEizwl1/XpmdDrOaCjRFQRgtbv9slWjmNPuJJTIKPHf5/XXDARc9CneW9FkSTqTbyvNecYAEGw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.3.tgz", + "integrity": "sha512-PEj7XR4OGTGoboTIAdXicKuWl4EQIjKHKuR+bFy9oYN7CFZo0eu74+70O4XuERX4yjqVZGAkCdglBODlgqcCXg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.3.tgz", + "integrity": "sha512-T8gfxECWDBENotpw3HR9SmNiHC9AOJdxs+woasRZ8Q/J4VHN0OMs7F+4yVNZ9EVN26Wv6mZbK0jv7eHYuLJLwA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.3.tgz", + "integrity": "sha512-lUI/QaDxLtlV52Lho6pu07CG9pSnRYLOPmKGIQjyHdTBagemc6HmgZxyjGAQ/5HMPrNeWBfTVIpQl0/jLXvWHQ==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.3", + "@tailwindcss/oxide": "4.1.3", + "tailwindcss": "4.1.3" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/bcrypt": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-5.0.2.tgz", + "integrity": "sha512-6atioO8Y75fNcbmj0G7UjI9lXN2pQ/IGJ2FWT4a/btd0Lk9lQalHLKhkgKVZ3r+spnmWUKfbMi1GEe9wyHQfNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/stats.js": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", + "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==", + "license": "MIT" + }, + "node_modules/@types/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "minipass": "^4.0.0" + } + }, + "node_modules/@types/three": { + "version": "0.156.0", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.156.0.tgz", + "integrity": "sha512-733bXDSRdlrxqOmQuOmfC1UBRuJ2pREPk8sWnx9MtIJEVDQMx8U0NQO5MVVaOrjzDPyLI+cFPim2X/ss9v0+LQ==", + "license": "MIT", + "dependencies": { + "@types/stats.js": "*", + "@types/webxr": "*", + "fflate": "~0.6.10", + "meshoptimizer": "~0.18.1" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/webxr": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.22.tgz", + "integrity": "sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A==", + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz", + "integrity": "sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/type-utils": "8.32.1", + "@typescript-eslint/utils": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", + "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.32.1.tgz", + "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz", + "integrity": "sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz", + "integrity": "sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.32.1", + "@typescript-eslint/utils": "8.32.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.32.1.tgz", + "integrity": "sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz", + "integrity": "sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/visitor-keys": "8.32.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.32.1.tgz", + "integrity": "sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.32.1", + "@typescript-eslint/types": "8.32.1", + "@typescript-eslint/typescript-estree": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz", + "integrity": "sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.32.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC" + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astro": { + "version": "5.7.10", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.7.10.tgz", + "integrity": "sha512-9TQcFZqP2w6//JXXUHfw8/5PX7KUx9EkG5O3m+hISuyeUztvjY1q5+p7+C5HiXyg24Zs3KkpieoL5BGRXGCAGA==", + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.11.0", + "@astrojs/internal-helpers": "0.6.1", + "@astrojs/markdown-remark": "6.3.1", + "@astrojs/telemetry": "3.2.1", + "@capsizecss/unpack": "^2.4.0", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.1.4", + "acorn": "^8.14.1", + "aria-query": "^5.3.2", + "axobject-query": "^4.1.0", + "boxen": "8.0.1", + "ci-info": "^4.2.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^1.0.2", + "cssesc": "^3.0.0", + "debug": "^4.4.0", + "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.6.0", + "esbuild": "^0.25.0", + "estree-walker": "^3.0.3", + "flattie": "^1.1.1", + "github-slugger": "^2.0.0", + "html-escaper": "3.0.3", + "http-cache-semantics": "^4.1.1", + "js-yaml": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "mrmime": "^2.0.1", + "neotraverse": "^0.6.18", + "p-limit": "^6.2.0", + "p-queue": "^8.1.0", + "package-manager-detector": "^1.1.0", + "picomatch": "^4.0.2", + "prompts": "^2.4.2", + "rehype": "^13.0.2", + "semver": "^7.7.1", + "shiki": "^3.2.1", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.12", + "tsconfck": "^3.1.5", + "ultrahtml": "^1.6.0", + "unifont": "~0.4.1", + "unist-util-visit": "^5.0.0", + "unstorage": "^1.15.0", + "vfile": "^6.0.3", + "vite": "^6.3.4", + "vitefu": "^1.0.6", + "xxhash-wasm": "^1.1.0", + "yargs-parser": "^21.1.1", + "yocto-spinner": "^0.2.1", + "zod": "^3.24.2", + "zod-to-json-schema": "^3.24.5", + "zod-to-ts": "^1.2.0" + }, + "bin": { + "astro": "astro.js" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=22.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/astrodotbuild" + }, + "optionalDependencies": { + "sharp": "^0.33.3" + } + }, + "node_modules/astro-eslint-parser": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/astro-eslint-parser/-/astro-eslint-parser-1.2.2.tgz", + "integrity": "sha512-JepyLROIad6f44uyqMF6HKE2QbunNzp3mYKRcPoDGt0QkxXmH222FAFC64WTyQu2Kg8NNEXHTN/sWuUId9sSxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.0.0", + "@typescript-eslint/scope-manager": "^7.0.0 || ^8.0.0", + "@typescript-eslint/types": "^7.0.0 || ^8.0.0", + "astrojs-compiler-sync": "^1.0.0", + "debug": "^4.3.4", + "entities": "^6.0.0", + "eslint-scope": "^8.0.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.0", + "fast-glob": "^3.3.3", + "is-glob": "^4.0.3", + "semver": "^7.3.8" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/astro-eslint-parser/node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/astro-icon": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/astro-icon/-/astro-icon-1.1.5.tgz", + "integrity": "sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==", + "license": "MIT", + "dependencies": { + "@iconify/tools": "^4.0.5", + "@iconify/types": "^2.0.0", + "@iconify/utils": "^2.1.30" + } + }, + "node_modules/astro-integration-kit": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/astro-integration-kit/-/astro-integration-kit-0.18.0.tgz", + "integrity": "sha512-Z0QW5IQjosuKQDEGYYkvUX6EhEtrmE4/oViqWz23QveV8U7AuyFsTdg00WRNPevWZl/5a4lLUeDpv4bCRynRRg==", + "license": "MIT", + "dependencies": { + "pathe": "^1.1.2", + "recast": "^0.23.7" + }, + "peerDependencies": { + "astro": "^4.12.0 || ^5.0.0" + } + }, + "node_modules/astrojs-compiler-sync": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/astrojs-compiler-sync/-/astrojs-compiler-sync-1.1.1.tgz", + "integrity": "sha512-0mKvB9sDQRIZPsEJadw6OaFbGJ92cJPPR++ICca9XEyiUAZqgVuk25jNmzHPT0KF80rI94trSZrUR5iHFXGGOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "synckit": "^0.11.0" + }, + "engines": { + "node": "^18.18.0 || >=20.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "@astrojs/compiler": ">=0.27.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/axios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz", + "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.11", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/blob-to-buffer": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz", + "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "license": "MIT", + "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.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "license": "MIT/X11" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "license": "ISC" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cookie-es": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", + "license": "MIT" + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crossws": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.4.tgz", + "integrity": "sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==", + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" + }, + "node_modules/daisyui": { + "version": "5.0.25", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.0.25.tgz", + "integrity": "sha512-ETVQGxhwR8CIzPvJKKIKbQcOni9o2Dh9ODvy2aqNePo11lKRXkT7ugWldjNbqSTTr/jtHnQKMPau0AraRXSRKw==", + "license": "MIT", + "funding": { + "url": "https://github.com/saadeghi/daisyui?sponsor=1" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dedent-js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz", + "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", + "license": "MIT" + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/deterministic-object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", + "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "license": "MIT", + "dependencies": { + "base-64": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/devalue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/drizzle-orm": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.41.0.tgz", + "integrity": "sha512-7A4ZxhHk9gdlXmTdPj/lREtP+3u8KvZ4yEN6MYVxBzZGex5Wtdc+CWSbu7btgF6TB0N+MNPrvW7RKBbxJchs/Q==", + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=4", + "@electric-sql/pglite": ">=0.2.0", + "@libsql/client": ">=0.10.0", + "@libsql/client-wasm": ">=0.10.0", + "@neondatabase/serverless": ">=0.10.0", + "@op-engineering/op-sqlite": ">=2", + "@opentelemetry/api": "^1.4.1", + "@planetscale/database": ">=1", + "@prisma/client": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/sql.js": "*", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=14.0.0", + "gel": ">=2", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "optional": true + }, + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "@libsql/client-wasm": { + "optional": true + }, + "@neondatabase/serverless": { + "optional": true + }, + "@op-engineering/op-sqlite": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@prisma/client": { + "optional": true + }, + "@tidbcloud/serverless": { + "optional": true + }, + "@types/better-sqlite3": { + "optional": true + }, + "@types/pg": { + "optional": true + }, + "@types/sql.js": { + "optional": true + }, + "@vercel/postgres": { + "optional": true + }, + "@xata.io/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "bun-types": { + "optional": true + }, + "expo-sqlite": { + "optional": true + }, + "gel": { + "optional": true + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, + "node_modules/dset": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.26.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.26.0.tgz", + "integrity": "sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.13.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.26.0", + "@eslint/plugin-kit": "^0.2.8", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@modelcontextprotocol/sdk": "^1.8.0", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "zod": "^3.24.2" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz", + "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-plugin-astro": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-astro/-/eslint-plugin-astro-1.3.1.tgz", + "integrity": "sha512-2XaLCMQm8htW1UvJvy1Zcmg8l0ziskitiUfJTn/w1Mk7r4Mxj0fZeNpN6UTNrm64XBIXSa5h8UCGrg8mdu47+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@jridgewell/sourcemap-codec": "^1.4.14", + "@typescript-eslint/types": "^7.7.1 || ^8", + "astro-eslint-parser": "^1.0.2", + "eslint-compat-utils": "^0.6.0", + "globals": "^15.0.0", + "postcss": "^8.4.14", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=8.57.0" + } + }, + "node_modules/eslint-plugin-astro/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-svelte": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.7.0.tgz", + "integrity": "sha512-/MQ9gYLbA24AFUN0QwpzRqi4VCISaRyt8xa2t3iVnI5mWa38xuTXM+iz/8LxKCg34jX2PfPcEkZH7CUem/Eugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.1", + "@jridgewell/sourcemap-codec": "^1.5.0", + "esutils": "^2.0.3", + "known-css-properties": "^0.36.0", + "postcss": "^8.4.49", + "postcss-load-config": "^3.1.4", + "postcss-safe-parser": "^7.0.0", + "semver": "^7.6.3", + "svelte-eslint-parser": "^1.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": "^8.57.1 || ^9.0.0", + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "license": "MIT" + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrap": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz", + "integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.2.tgz", + "integrity": "sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", + "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": "^4.11 || 5 || ^5.0.0-beta.1" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/exsolve": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz", + "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==", + "license": "MIT" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fflate": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.1.0.tgz", + "integrity": "sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/h3": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.1.tgz", + "integrity": "sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==", + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.2", + "crossws": "^0.3.3", + "defu": "^6.1.4", + "destr": "^2.0.3", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.0", + "radix3": "^1.1.2", + "ufo": "^1.5.4", + "uncrypto": "^0.1.3" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.1.tgz", + "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT", + "optional": true + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/known-css-properties": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", + "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "license": "MIT" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz", + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.2", + "lightningcss-darwin-x64": "1.29.2", + "lightningcss-freebsd-x64": "1.29.2", + "lightningcss-linux-arm-gnueabihf": "1.29.2", + "lightningcss-linux-arm64-gnu": "1.29.2", + "lightningcss-linux-arm64-musl": "1.29.2", + "lightningcss-linux-x64-gnu": "1.29.2", + "lightningcss-linux-x64-musl": "1.29.2", + "lightningcss-win32-arm64-msvc": "1.29.2", + "lightningcss-win32-x64-msvc": "1.29.2" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz", + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz", + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz", + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz", + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz", + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz", + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz", + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz", + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz", + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz", + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/long": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.1.tgz", + "integrity": "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==", + "license": "Apache-2.0" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/lru.min": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.2.tgz", + "integrity": "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "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.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/meshoptimizer": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", + "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==", + "license": "MIT" + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "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.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.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.0.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.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mlly/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mysql2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.0.tgz", + "integrity": "sha512-8eMhmG6gt/hRkU1G+8KlGOdQi2w+CgtNoD1ksXZq9gQfkfDsX4LHaBwTe1SY0Imx//t2iZA03DFnyYKPinxSRw==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.1", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru.min": "^1.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "license": "MIT", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanostores": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-1.0.1.tgz", + "integrity": "sha512-kNZ9xnoJYKg/AfxjrVL4SS0fKX++4awQReGqWnwTRHxeHGZ1FJFVgTqr/eMrNQdp0Tz7M7tG/TDaX8QfHDwVCw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": "^20.0.0 || >=22.0.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", + "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", + "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", + "license": "MIT" + }, + "node_modules/node-mock-http": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.0.tgz", + "integrity": "sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==", + "license": "MIT" + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ofetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", + "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==", + "license": "MIT", + "dependencies": { + "destr": "^2.0.3", + "node-fetch-native": "^1.6.4", + "ufo": "^1.5.4" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.5.4.tgz", + "integrity": "sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==", + "license": "MIT" + }, + "node_modules/oniguruma-to-es": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.1.0.tgz", + "integrity": "sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==", + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "oniguruma-parser": "^0.5.4", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.0.tgz", + "integrity": "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.1.0.tgz", + "integrity": "sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==", + "license": "MIT" + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "license": "MIT" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", + "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-astro": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.14.1.tgz", + "integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.9.1", + "prettier": "^3.0.0", + "sass-formatter": "^0.7.6" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.3.tgz", + "integrity": "sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/property-information": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quansync": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", + "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "license": "MIT" + }, + "node_modules/rehype": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "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.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "license": "MIT", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", + "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.39.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz", + "integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.39.0", + "@rollup/rollup-android-arm64": "4.39.0", + "@rollup/rollup-darwin-arm64": "4.39.0", + "@rollup/rollup-darwin-x64": "4.39.0", + "@rollup/rollup-freebsd-arm64": "4.39.0", + "@rollup/rollup-freebsd-x64": "4.39.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.39.0", + "@rollup/rollup-linux-arm-musleabihf": "4.39.0", + "@rollup/rollup-linux-arm64-gnu": "4.39.0", + "@rollup/rollup-linux-arm64-musl": "4.39.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.39.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-gnu": "4.39.0", + "@rollup/rollup-linux-riscv64-musl": "4.39.0", + "@rollup/rollup-linux-s390x-gnu": "4.39.0", + "@rollup/rollup-linux-x64-gnu": "4.39.0", + "@rollup/rollup-linux-x64-musl": "4.39.0", + "@rollup/rollup-win32-arm64-msvc": "4.39.0", + "@rollup/rollup-win32-ia32-msvc": "4.39.0", + "@rollup/rollup-win32-x64-msvc": "4.39.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/s.color": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", + "integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass-embedded": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.87.0.tgz", + "integrity": "sha512-1IA3iTJNh4BkkA/nidKiVwbmkxr9o6LsPegycHMX/JYs255zpocN5GdLF1+onohQCJxbs5ldr8osKV7qNaNBjg==", + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.0.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.0.2", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-android-arm": "1.87.0", + "sass-embedded-android-arm64": "1.87.0", + "sass-embedded-android-ia32": "1.87.0", + "sass-embedded-android-riscv64": "1.87.0", + "sass-embedded-android-x64": "1.87.0", + "sass-embedded-darwin-arm64": "1.87.0", + "sass-embedded-darwin-x64": "1.87.0", + "sass-embedded-linux-arm": "1.87.0", + "sass-embedded-linux-arm64": "1.87.0", + "sass-embedded-linux-ia32": "1.87.0", + "sass-embedded-linux-musl-arm": "1.87.0", + "sass-embedded-linux-musl-arm64": "1.87.0", + "sass-embedded-linux-musl-ia32": "1.87.0", + "sass-embedded-linux-musl-riscv64": "1.87.0", + "sass-embedded-linux-musl-x64": "1.87.0", + "sass-embedded-linux-riscv64": "1.87.0", + "sass-embedded-linux-x64": "1.87.0", + "sass-embedded-win32-arm64": "1.87.0", + "sass-embedded-win32-ia32": "1.87.0", + "sass-embedded-win32-x64": "1.87.0" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.87.0.tgz", + "integrity": "sha512-Z20u/Y1kFDpMbgiloR5YPLxNuMVeKQRC8e/n68oAAxf3u7rDSmNn2msi7USqgT1f2zdBBNawn/ifbFEla6JiHw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-arm64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.87.0.tgz", + "integrity": "sha512-uqeZoBuXm3W2KhxolScAAfWOLHL21e50g7AxlLmG0he7WZsWw6e9kSnmq301iLIFp4kvmXYXbXbNKAeu9ItRYA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-ia32": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.87.0.tgz", + "integrity": "sha512-hSWTqo2Igdig528cUb1W1+emw9d1J4+nqOoR4tERS04zcwRRFNDiuBT0o5meV7nkEwE982F+h57YdcRXj8gTtg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.87.0.tgz", + "integrity": "sha512-kBAPSjiTBLy5ua/0LRNAJwOAARhzFU7gP35fYORJcdBuz1lkIVPVnid1lh9qQ6Ce9MOJcr7VKFtGnTuqVeig5A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-x64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.87.0.tgz", + "integrity": "sha512-ZHMrNdtdMSpJUYco2MesnlPwDTZftD3pqkkOMI2pbqarPoFUKJtP5k80nwCM0sJGtqfNE+O16w9yPght0CMiJg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.87.0.tgz", + "integrity": "sha512-7TK1JWJdCIRSdZv5CJv/HpDz/wIfwUy2FoPz9sVOEj1pDTH0N+VfJd5VutCddIdoQN9jr0ap8vwkc65FbAxV2A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-x64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.87.0.tgz", + "integrity": "sha512-2JiQzt7FmgUC4MYT2QvbeH/Bi3e76WEhaYoc5P3WyTW8unsHksyTdMuTuYe0Qf9usIyt6bmm5no/4BBw7c8Cig==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.87.0.tgz", + "integrity": "sha512-z5P6INMsGXiUcq1sRRbksyQUhalFFYjTEexuxfSYdK3U2YQMADHubQh8pGzkWvFRPOpnh83RiGuwvpaARYHnsw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.87.0.tgz", + "integrity": "sha512-5z+mwJCbGZcg+q+MwdEVSh0ogFK7OSAe175Gsozzr/Izw34Q+RGUw9O82jsV2c4YNuTAQvzEHgIO5cvNvt3Quw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-ia32": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.87.0.tgz", + "integrity": "sha512-Xzcp+YPp0iakGL148Jl57CO+MxLuj2jsry3M+rc1cSnDlvkjNVs6TMxaL70GFeV5HdU2V60voYcgE7adDUtJjw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.87.0.tgz", + "integrity": "sha512-4PyqOWhRzyu06RRmpCCBOJdF4BOv7s446wrV6yODtEyyfSIDx3MJabo3KT0oJ1lTWSI/aU3R89bKx0JFXcIHHw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.87.0.tgz", + "integrity": "sha512-HWE5eTRCoKzFZWsxOjDMTF5m4DDTQ0n7NJxSYiUXPBDydr9viPXbGOMYG7WVJLjiF7upr7DYo/mfp/SNTMlZyg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-ia32": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.87.0.tgz", + "integrity": "sha512-aQaPvlRn3kh93PLQvl6BcFKu8Ji92+42blFEkg6nMVvmugD5ZwH2TGFrX25ibx4CYxRpMS4ssF7a0i7vy5HB1Q==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.87.0.tgz", + "integrity": "sha512-o5DxcqiFzET3KRWo+futHr/lhAMBP3tJGGx8YIgpHQYfvDMbsvE0hiFC+nZ/GF9dbcGd+ceIQwfvE5mcc7Gsjw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.87.0.tgz", + "integrity": "sha512-dKxWsu9Wu/CyfzQmHdeiGqrRSzJ85VUjbSx+aP1/7ttmps3SSg+YW95PuqnCOa7GSuSreC3dKKpXHTywUxMLQA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.87.0.tgz", + "integrity": "sha512-Sy3ESZ4FwBiijvmTA9n+0p0w3MNCue1AgINVPzpAY27EFi0h49eqQm9SWfOkFqmkFS2zFRYowdQOr5Bbr2gOXA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-x64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.87.0.tgz", + "integrity": "sha512-+UfjakOcHHKTnEqB3EZ+KqzezQOe1emvy4Rs+eQhLyfekpYuNze/qlRvYxfKTmrtvDiUrIto8MXsyZfMLzkuMA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-arm64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.87.0.tgz", + "integrity": "sha512-m1DS6FYUE0/fv+vt38uQB/kxR4UjnyD+2zcSc298pFmA0aYh/XZIPWw7RxG1HL3KLE1ZrGyu3254MPoxRhs3ig==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-ia32": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.87.0.tgz", + "integrity": "sha512-JztXLo59GMe2E6g+kCsyiERYhtZgkcyDYx6CrXoSTE5WaE+RbxRiCCCv8/1+hf406f08pUxJ8G0Ody7M5urtBA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-x64": { + "version": "1.87.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.87.0.tgz", + "integrity": "sha512-4nQErpauvhgSo+7ClumGdjdf9sGx+U9yBgvhI0+zUw+D5YvraVgvA0Lk8Wuwntx2PqnvKUk8YDr/vxHJostv4Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-formatter": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.9.tgz", + "integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "suf-log": "^2.5.3" + } + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/send/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "license": "ISC" + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "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" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.2.1.tgz", + "integrity": "sha512-VML/2o1/KGYkEf/stJJ+s9Ypn7jUKQPomGLGYso4JJFMFxVDyPNsjsI3MB3KLjlMOeH44gyaPdXC6rik2WXvUQ==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "3.2.1", + "@shikijs/engine-javascript": "3.2.1", + "@shikijs/engine-oniguruma": "3.2.1", + "@shikijs/langs": "3.2.1", + "@shikijs/themes": "3.2.1", + "@shikijs/types": "3.2.1", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + }, + "node_modules/skinview-utils": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/skinview-utils/-/skinview-utils-0.7.1.tgz", + "integrity": "sha512-4eLrMqR526ehlZbsd8SuZ/CHpS9GiH0xUMoV+PYlJVi95ZFz5HJu7Spt5XYa72DRS7wgt5qquvHZf0XZJgmu9Q==", + "license": "MIT" + }, + "node_modules/skinview3d": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/skinview3d/-/skinview3d-3.3.0.tgz", + "integrity": "sha512-Zz7SeRNKMpOBa0AC8vbU0NF1N3F3t2sA2tJEoEd5M7KbVslYS/1l36n3aiI0+1fj5qK+S6YI+zzhd0Tm+rMrrg==", + "license": "MIT", + "dependencies": { + "@types/three": "^0.156.0", + "skinview-utils": "^0.7.1", + "three": "^0.156.1" + } + }, + "node_modules/smol-toml": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", + "integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/suf-log": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", + "integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==", + "dev": true, + "license": "MIT", + "dependencies": { + "s.color": "0.0.15" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/svelte": { + "version": "5.30.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.30.1.tgz", + "integrity": "sha512-QIYtKnJGkubWXtNkrUBKVCvyo9gjcccdbnvXfwsGNhvbeNNdQjRDTa/BiQcJ2kWXbXPQbWKyT7CUu53KIj1rfw==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "esm-env": "^1.2.1", + "esrap": "^1.4.6", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/svelte-eslint-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.2.0.tgz", + "integrity": "sha512-mbPtajIeuiyU80BEyGvwAktBeTX7KCr5/0l+uRGLq1dafwRNrjfM5kHGJScEBlPG3ipu6dJqfW/k0/fujvIEVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.0", + "postcss": "^8.4.49", + "postcss-scss": "^4.0.9", + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "svelte": { + "optional": true + } + } + }, + "node_modules/svelte2tsx": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.37.tgz", + "integrity": "sha512-uQCWibXwUNPGQBGTZP1axIpFGFHTXXN30/ppodLVXCnX23U1nzEhqiVtFSEQjtUK3pFVxPhdnfyxD6ikxMCzPQ==", + "license": "MIT", + "dependencies": { + "dedent-js": "^1.0.1", + "pascal-case": "^3.1.1" + }, + "peerDependencies": { + "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", + "typescript": "^4.9.4 || ^5.0.0" + } + }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "license": "MIT", + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/synckit": { + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.5.tgz", + "integrity": "sha512-frqvfWyDA5VPVdrWfH24uM6SI/O8NLpVbIIJxb8t/a3YGsp4AW9CYgSKC0OaSEfexnp7Y1pVh2Y6IHO8ggGDmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.4", + "tslib": "^2.8.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.3.tgz", + "integrity": "sha512-2Q+rw9vy1WFXu5cIxlvsabCwhU2qUwodGq03ODhLJ0jW4ek5BUtoCsnLB0qG+m8AHgEsSJcJGDSDe06FXlP74g==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/three": { + "version": "0.156.1", + "resolved": "https://registry.npmjs.org/three/-/three-0.156.1.tgz", + "integrity": "sha512-kP7H0FK9d/k6t/XvQ9FO6i+QrePoDcNhwl0I02+wmUJRNSLCUIDMcfObnzQvxb37/0Uc9TDT0T1HgsRRrO6SYQ==", + "license": "MIT" + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfck": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.5.tgz", + "integrity": "sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==", + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "4.39.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.39.1.tgz", + "integrity": "sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.32.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.32.1.tgz", + "integrity": "sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.32.1", + "@typescript-eslint/parser": "8.32.1", + "@typescript-eslint/utils": "8.32.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/ufo": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "6.21.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz", + "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unifont": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.4.1.tgz", + "integrity": "sha512-zKSY9qO8svWYns+FGKjyVdLvpGPwqmsCjeJLN1xndMiqxHWBAhoWDMYMG960MxeV48clBmG+fDP59dHY1VoZvg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0", + "ohash": "^2.0.0" + } + }, + "node_modules/unifont/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/unifont/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unstorage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.15.0.tgz", + "integrity": "sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==", + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^4.0.3", + "destr": "^2.0.3", + "h3": "^1.15.0", + "lru-cache": "^10.4.3", + "node-fetch-native": "^1.6.6", + "ofetch": "^1.4.1", + "ufo": "^1.5.4" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6.0.3", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/kv": "^1.0.1", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", + "integrity": "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wide-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "license": "MIT", + "dependencies": { + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz", + "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==", + "license": "MIT" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yocto-spinner": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.1.tgz", + "integrity": "sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==", + "license": "MIT", + "dependencies": { + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zimmerframe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", + "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", + "license": "MIT" + }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } + }, + "node_modules/zod-to-ts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", + "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", + "peerDependencies": { + "typescript": "^4.9.4 || ^5.0.2", + "zod": "^3" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..9553225 --- /dev/null +++ b/package.json @@ -0,0 +1,47 @@ +{ + "name": "website", + "type": "module", + "version": "0.0.1", + "scripts": { + "dev": "astro dev --host", + "build": "astro build", + "preview": "astro preview --host", + "astro": "astro", + "lint": "prettier --check . && eslint .", + "format": "prettier --write ." + }, + "dependencies": { + "@astrojs/node": "^9.2.1", + "@astrojs/svelte": "^7.0.13", + "@iconify-json/fa-brands": "^1.2.1", + "@iconify-json/heroicons": "^1.2.2", + "@iconify/svelte": "^4.2.0", + "@inox-tools/runtime-logger": "^0.4.2", + "@tailwindcss/vite": "^4.1.3", + "astro": "^5.7.10", + "astro-icon": "^1.1.5", + "bcrypt": "^5.1.1", + "daisyui": "^5.0.25", + "drizzle-orm": "^0.41.0", + "mysql2": "^3.14.0", + "nanostores": "^1.0.1", + "sass-embedded": "^1.87.0", + "skinview3d": "^3.3.0", + "tailwindcss": "^4.1.3", + "typescript": "^5.8.3", + "zod": "^3.24.2" + }, + "devDependencies": { + "@types/bcrypt": "^5.0.2", + "@typescript-eslint/parser": "^8.32.1", + "eslint": "^9.26.0", + "eslint-plugin-astro": "^1.3.1", + "eslint-plugin-svelte": "^3.7.0", + "globals": "^16.1.0", + "prettier": "3.5.3", + "prettier-plugin-astro": "0.14.1", + "prettier-plugin-svelte": "^3.3.3", + "svelte": "^5.30.1", + "typescript-eslint": "^8.32.1" + } +} diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..f157bd1 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,9 @@ + + + + diff --git a/src/actions/admin.ts b/src/actions/admin.ts new file mode 100644 index 0000000..511a010 --- /dev/null +++ b/src/actions/admin.ts @@ -0,0 +1,45 @@ +import { defineAction } from 'astro:actions'; +import { db } from '@db/database.ts'; +import { z } from 'astro:schema'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; + +export const admin = { + addAdmin: defineAction({ + input: z.object({ + username: z.string(), + password: z.string(), + permissions: z.number() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Admin); + const { id } = await db.addAdmin(input); + + return { + id: id + }; + } + }), + editAdmin: defineAction({ + input: z.object({ + id: z.number(), + username: z.string(), + password: z.string(), + permissions: z.number() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Admin); + + await db.editAdmin(input); + } + }), + admins: defineAction({ + handler: async (_, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Admin); + + return { + admins: await db.getAdmins({}) + }; + } + }) +}; diff --git a/src/actions/feedback.ts b/src/actions/feedback.ts new file mode 100644 index 0000000..f8df930 --- /dev/null +++ b/src/actions/feedback.ts @@ -0,0 +1,40 @@ +import { defineAction } from 'astro:actions'; +import { db } from '@db/database.ts'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { z } from 'astro:schema'; + +export const feedback = { + addWebsiteFeedback: defineAction({ + input: z.object({ + content: z.string() + }), + handler: async (input) => { + await db.addFeedback({ + event: 'website-feedback', + content: input.content + }); + } + }), + addWebsiteContact: defineAction({ + input: z.object({ + content: z.string(), + email: z.string().email() + }), + handler: async (input) => { + await db.addFeedback({ + event: 'website-contact', + content: `${input.content}\n\nEmail: ${input.email}` + }); + } + }), + feedbacks: defineAction({ + handler: async (_, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Feedback); + + return { + feedbacks: await db.getFeedbacks({}) + }; + } + }) +}; diff --git a/src/actions/index.ts b/src/actions/index.ts new file mode 100644 index 0000000..44c2968 --- /dev/null +++ b/src/actions/index.ts @@ -0,0 +1,19 @@ +import { session } from './session.ts'; +import { signup } from './signup.ts'; +import { user } from './user.ts'; +import { admin } from './admin.ts'; +import { team } from './team.ts'; +import { settings } from './settings.ts'; +import { feedback } from './feedback.ts'; +import { report } from './report.ts'; + +export const server = { + admin, + session, + signup, + team, + user, + report, + feedback, + settings +}; diff --git a/src/actions/report.ts b/src/actions/report.ts new file mode 100644 index 0000000..52c5288 --- /dev/null +++ b/src/actions/report.ts @@ -0,0 +1,80 @@ +import { defineAction } from 'astro:actions'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { db } from '@db/database.ts'; +import { z } from 'astro:schema'; + +export const report = { + addReport: defineAction({ + input: z.object({ + reason: z.string(), + body: z.string().nullable(), + createdAt: z.string().datetime().nullable(), + reporter: z.number(), + reported: z.number().nullable() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Reports); + + const { id } = await db.addReport({ + reason: input.reason, + body: input.body, + createdAt: input.createdAt, + reporterTeamId: input.reporter, + reportedTeamId: input.reported + }); + + return { + id: id + }; + } + }), + reportStatus: defineAction({ + input: z.object({ + reportId: z.number() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Reports); + + return { + reportStatus: await db.getReportStatus(input) + }; + } + }), + editReportStatus: defineAction({ + input: z.object({ + reportId: z.number(), + status: z.enum(['open', 'closed']).nullable(), + notice: z.string().nullable(), + statement: z.string().nullable(), + strikeId: z.number().nullable() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Reports); + + await db.editReportStatus(input); + } + }), + reports: defineAction({ + input: z.object({ + reporter: z.string().nullish(), + reported: z.string().nullish() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Reports); + + return { + reports: await db.getReports(input) + }; + } + }), + strikeReasons: defineAction({ + handler: async (_, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Reports); + + return { + strikeReasons: await db.getStrikeReasons({}) + }; + } + }) +}; diff --git a/src/actions/session.ts b/src/actions/session.ts new file mode 100644 index 0000000..2676c21 --- /dev/null +++ b/src/actions/session.ts @@ -0,0 +1,49 @@ +import { ActionError, defineAction } from 'astro:actions'; +import { z } from 'astro:schema'; +import { db } from '@db/database.ts'; +import { ADMIN_USER, ADMIN_PASSWORD } from 'astro:env/server'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; + +export const session = { + login: defineAction({ + input: z.object({ + username: z.string(), + password: z.string() + }), + handler: async (input, context) => { + let admin; + if (input.username === ADMIN_USER && input.password === ADMIN_PASSWORD) { + admin = { + id: -1, + username: ADMIN_USER, + permissions: new Permissions(Permissions.allPermissions()) + }; + } else { + admin = await db.existsAdmin(input); + } + + if (!admin) { + throw new ActionError({ + code: 'UNAUTHORIZED', + message: 'Nutzername und Passwort stimmen nicht überein' + }); + } + + Session.newSession(admin.id, admin.permissions, context.cookies); + + return { + id: admin.id, + username: admin.username, + permissions: admin.permissions.value + }; + } + }), + logout: defineAction({ + handler: async (_, context) => { + const session = Session.actionSessionFromCookies(context.cookies); + + session.invalidate(context.cookies); + } + }) +}; diff --git a/src/actions/settings.ts b/src/actions/settings.ts new file mode 100644 index 0000000..4789237 --- /dev/null +++ b/src/actions/settings.ts @@ -0,0 +1,23 @@ +import { defineAction } from 'astro:actions'; +import { z } from 'astro:schema'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { db } from '@db/database.ts'; + +export const settings = { + setSettings: defineAction({ + input: z.object({ + settings: z.array( + z.object({ + name: z.string(), + value: z.string().nullable() + }) + ) + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Settings); + + await db.setSettings(input); + } + }) +}; diff --git a/src/actions/signup.ts b/src/actions/signup.ts new file mode 100644 index 0000000..3db2a45 --- /dev/null +++ b/src/actions/signup.ts @@ -0,0 +1,119 @@ +import { ActionError, defineAction } from 'astro:actions'; +import { z } from 'astro:schema'; +import { db } from '@db/database.ts'; +import { getJavaUuid } from '@util/minecraft.ts'; +import { getSetting, SettingKey } from '@util/settings.ts'; + +export const signup = { + signup: defineAction({ + input: z.object({ + firstname: z.string().min(2), + lastname: z.string().min(2), + // this will be inaccurate as it is evaluated only once + birthday: z + .string() + .date() + .max(Date.now() - 1000 * 60 * 60 * 24 * 365 * 6), + phone: z.string().nullable(), + username: z.string(), + + teamMember: z.string(), + teamName: z.string().nullable() + }), + handler: async (input) => { + // check if signup is allowed + if (!(await getSetting(db, SettingKey.SignupEnabled))) { + throw new ActionError({ + code: 'FORBIDDEN', + message: 'Die Anmeldung ist derzeit deaktiviert' + }); + } + + // check if username and team member is equal + if (input.username.toLowerCase() === input.teamMember.toLowerCase()) { + throw new ActionError({ + code: 'BAD_REQUEST', + message: 'Du kannst nicht mit dir selber in einem Team sein' + }); + } + + // check if the user were already signed up + if (await db.getUserByUsername({ username: input.username })) { + throw new ActionError({ + code: 'CONFLICT', + message: 'Du hast dich bereits registriert' + }); + } + + const teamMember = await db.getUserByUsername({ username: input.teamMember }); + const teamDraft = await db.getTeamDraftByMemberOne({ memberOneName: input.teamMember }); + + // check if the team member already signed up but is in another team already + if (teamMember && (!teamDraft || teamDraft.memberTwoName.toLowerCase() != input.username.toLowerCase())) { + throw new ActionError({ + code: 'FORBIDDEN', + message: 'Dein Teampartner ist bereits in einem anderen Team' + }); + } + + let uuid; + try { + uuid = await getJavaUuid(input.username); + } catch (_) { + throw new ActionError({ + code: 'NOT_FOUND', + message: `Es wurde kein Minecraft Java Account mit dem Username ${input.username} gefunden` + }); + } + + if (!teamDraft) { + // check if a team with the same name already exists + if (input.teamName) { + if (await db.getTeamByName({ name: input.teamName })) { + throw new ActionError({ + code: 'CONFLICT', + message: 'Es gibt bereits ein Team mit diesem Namen' + }); + } + // no team draft is present and `input.teamName` is not present + } else { + throw new ActionError({ + code: 'BAD_REQUEST', + message: 'Es ist noch kein Team auf dich und deinen Teampartner registriert' + }); + } + } + + const team = await db.transaction(async (tx) => { + const user = await tx.addUser({ + firstname: input.firstname, + lastname: input.lastname, + birthday: input.birthday, + telephone: input.phone, + username: input.username, + uuid: uuid + }); + + let team; + if (teamDraft) { + team = await tx.getTeamById({ id: teamDraft.teamId }); + } else { + team = await tx.addTeam({ name: input.teamName! }); + + await tx.addTeamDraft({ memberOneName: input.username, memberTwoName: input.teamMember, teamId: team.id }); + } + + await tx.addTeamMember({ teamId: team.id, userId: user.id }); + + return team; + }); + + return { + team: { + name: team.name, + color: team.color + } + }; + } + }) +}; diff --git a/src/actions/team.ts b/src/actions/team.ts new file mode 100644 index 0000000..757ad73 --- /dev/null +++ b/src/actions/team.ts @@ -0,0 +1,122 @@ +import { defineAction } from 'astro:actions'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { db } from '@db/database.ts'; +import { z } from 'astro:schema'; + +export const team = { + addTeam: defineAction({ + input: z.object({ + name: z.string(), + color: z.string(), + lastJoined: z.string().datetime().nullable(), + memberOne: z.object({ + id: z.number().nullish(), + username: z.string() + }), + memberTwo: z.object({ + id: z.number().nullish(), + username: z.string() + }) + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Users); + + const teamId = await db.transaction(async (tx) => { + const team = await tx.addTeam({ + name: input.name, + color: input.color + }); + + await tx.addTeamDraft({ + memberOneName: input.memberOne.username, + memberTwoName: input.memberTwo.username, + teamId: team.id + }); + + if (input.memberOne.id) { + await tx.addTeamMember({ + teamId: team.id, + userId: input.memberOne.id + }); + } + + if (input.memberTwo.id) { + await tx.addTeamMember({ + teamId: team.id, + userId: input.memberTwo.id + }); + } + + return team.id; + }); + + return Object.assign(input, { id: teamId }); + } + }), + editTeam: defineAction({ + input: z.object({ + id: z.number(), + name: z.string(), + color: z.string(), + lastJoined: z.string().datetime().nullable(), + memberOne: z.object({ + id: z.number().nullable(), + username: z.string() + }), + memberTwo: z.object({ + id: z.number().nullable(), + username: z.string() + }) + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Users); + + await db.transaction(async (tx) => { + await tx.editTeam({ + id: input.id, + name: input.name, + color: input.color, + lastJoined: input.lastJoined + }); + + await tx.deleteTeamDraft({ teamId: input.id }); + await tx.deleteTeamMemberByTeamId({ teamId: input.id }); + + await tx.addTeamDraft({ + memberOneName: input.memberOne.username, + memberTwoName: input.memberTwo.username, + teamId: input.id + }); + + if (input.memberOne.id) { + await tx.addTeamMember({ + teamId: input.id, + userId: input.memberOne.id + }); + } + + if (input.memberTwo.id) { + await tx.addTeamMember({ + teamId: input.id, + userId: input.memberTwo.id + }); + } + }); + } + }), + teams: defineAction({ + input: z.object({ + name: z.string().nullish(), + username: z.string().nullish(), + limit: z.number().optional() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Users); + + return { + teams: await db.getTeams(input) + }; + } + }) +}; diff --git a/src/actions/user.ts b/src/actions/user.ts new file mode 100644 index 0000000..ca256a7 --- /dev/null +++ b/src/actions/user.ts @@ -0,0 +1,88 @@ +import { ActionError, defineAction } from 'astro:actions'; +import { z } from 'astro:schema'; +import { db } from '@db/database.ts'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; + +export const user = { + addUser: defineAction({ + input: z.object({ + firstname: z.string(), + lastname: z.string(), + birthday: z.string().date(), + telephone: z.string().nullable(), + username: z.string(), + uuid: z.string().nullable() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Users); + + if (await db.existsUser({ username: input.username })) { + throw new ActionError({ + code: 'CONFLICT', + message: 'Der Benutzername ist bereits registriert' + }); + } + + const { id } = await db.addUser({ + firstname: input.firstname, + lastname: input.lastname, + birthday: input.birthday, + telephone: input.telephone, + username: input.username, + uuid: input.uuid + }); + + return { + id: id + }; + } + }), + editUser: defineAction({ + input: z.object({ + id: z.number(), + firstname: z.string(), + lastname: z.string(), + birthday: z.string().date(), + telephone: z.string().nullable(), + username: z.string(), + uuid: z.string().nullable() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Users); + + const user = await db.existsUser({ username: input.username }); + if (user && user.id !== input.id) { + throw new ActionError({ + code: 'CONFLICT', + message: 'Ein Spieler mit dem Benutzernamen existiert bereits' + }); + } + + await db.editUser({ + id: input.id, + firstname: input.firstname, + lastname: input.lastname, + birthday: input.birthday, + telephone: input.telephone, + username: input.username, + uuid: input.uuid + }); + } + }), + users: defineAction({ + input: z.object({ + username: z.string().nullish(), + limit: z.number().optional() + }), + handler: async (input, context) => { + Session.actionSessionFromCookies(context.cookies, Permissions.Users); + + const users = await db.getUsers(input); + + return { + users: users + }; + } + }) +}; diff --git a/src/app/admin/admins/Admins.svelte b/src/app/admin/admins/Admins.svelte new file mode 100644 index 0000000..bfc6fc0 --- /dev/null +++ b/src/app/admin/admins/Admins.svelte @@ -0,0 +1,63 @@ + + +
+ + + + + + + + + + + {#each $admins as admin, i (admin.id)} + + + + + + + {/each} + +
#BenutzernameBerechtigungen
{i + 1}{admin.username} + + + +
+
+ +{#key editAdminPopupAdmin} + +{/key} diff --git a/src/app/admin/admins/Badges.svelte b/src/app/admin/admins/Badges.svelte new file mode 100644 index 0000000..26e1b6d --- /dev/null +++ b/src/app/admin/admins/Badges.svelte @@ -0,0 +1,49 @@ + + +
+ {#if onUpdate} + + {/if} +
+ {#each reactiveSet as badge (badge)} +
+ {#if onUpdate} + + {/if} + {available[badge]} +
+ {/each} +
+
diff --git a/src/app/admin/admins/CreateOrEditPopup.svelte b/src/app/admin/admins/CreateOrEditPopup.svelte new file mode 100644 index 0000000..768a508 --- /dev/null +++ b/src/app/admin/admins/CreateOrEditPopup.svelte @@ -0,0 +1,115 @@ + + + setTimeout(() => onClose?.(), 300)}> + + + diff --git a/src/app/admin/admins/SidebarActions.svelte b/src/app/admin/admins/SidebarActions.svelte new file mode 100644 index 0000000..2701736 --- /dev/null +++ b/src/app/admin/admins/SidebarActions.svelte @@ -0,0 +1,34 @@ + + +
+ +
+ +{#key newTeamPopupOpen} + (newTeamPopupOpen = false)} + /> +{/key} diff --git a/src/app/admin/admins/actions.ts b/src/app/admin/admins/actions.ts new file mode 100644 index 0000000..58b945e --- /dev/null +++ b/src/app/admin/admins/actions.ts @@ -0,0 +1,41 @@ +import type { Admin } from './types.ts'; +import { actions } from 'astro:actions'; +import { admins } from './state.ts'; +import { actionErrorPopup } from '@util/action.ts'; + +export async function fetchAdmins() { + const { data, error } = await actions.admin.admins(); + if (error) { + actionErrorPopup(error); + return; + } + + admins.set(data.admins); +} + +export async function addAdmin(admin: Admin & { password: string }) { + const { data, error } = await actions.admin.addAdmin(admin); + if (error) { + actionErrorPopup(error); + return; + } + + admins.update((old) => { + old.push(Object.assign(admin, { id: data.id })); + return old; + }); +} + +export async function editAdmin(admin: Admin & { password: string }) { + const { error } = await actions.admin.editAdmin(admin); + if (error) { + actionErrorPopup(error); + return; + } + + admins.update((old) => { + const index = old.findIndex((a) => a.id == admin.id); + old[index] = admin; + return old; + }); +} diff --git a/src/app/admin/admins/state.ts b/src/app/admin/admins/state.ts new file mode 100644 index 0000000..2a28ea8 --- /dev/null +++ b/src/app/admin/admins/state.ts @@ -0,0 +1,4 @@ +import type { Admin } from './types.ts'; +import { writable } from 'svelte/store'; + +export const admins = writable([]); diff --git a/src/app/admin/admins/types.ts b/src/app/admin/admins/types.ts new file mode 100644 index 0000000..b27e4e3 --- /dev/null +++ b/src/app/admin/admins/types.ts @@ -0,0 +1,4 @@ +import type { ActionReturnType, actions } from 'astro:actions'; + +export type Admins = Exclude['data'], undefined>['admins']; +export type Admin = Admins[0]; diff --git a/src/app/admin/feedback/BottomBar.svelte b/src/app/admin/feedback/BottomBar.svelte new file mode 100644 index 0000000..f7f2586 --- /dev/null +++ b/src/app/admin/feedback/BottomBar.svelte @@ -0,0 +1,29 @@ + + + + {/each} + +
+ +
+ diff --git a/src/app/admin/settings/actions.ts b/src/app/admin/settings/actions.ts new file mode 100644 index 0000000..882f873 --- /dev/null +++ b/src/app/admin/settings/actions.ts @@ -0,0 +1,19 @@ +import { actions } from 'astro:actions'; +import { actionErrorPopup } from '@util/action.ts'; + +export async function updateSettings(changes: { [k: string]: string | null }) { + const { error } = await actions.settings.setSettings({ + settings: Object.entries(changes).reduce( + (prev, curr) => { + prev.push({ name: curr[0], value: curr[1] }); + return prev; + }, + [] as { name: string; value: string | null }[] + ) + }); + if (error) { + actionErrorPopup(error); + return false; + } + return true; +} diff --git a/src/app/admin/settings/dynamicSettings.ts b/src/app/admin/settings/dynamicSettings.ts new file mode 100644 index 0000000..76c1855 --- /dev/null +++ b/src/app/admin/settings/dynamicSettings.ts @@ -0,0 +1,44 @@ +import { SettingKey } from '@util/settings.ts'; + +export class DynamicSettings { + private settings: { [k: string]: string | null }; + private changedSettings: { [k: string]: string | null } = {}; + + constructor(settings: typeof this.settings) { + this.settings = settings; + } + + private get(key: string, defaultValue: V): V { + const setting = this.changedSettings[key] ?? this.settings[key]; + return setting != null ? JSON.parse(setting) : defaultValue; + } + + private set(key: string, value: V | null) { + if (this.settings[key] == value) { + delete this.changedSettings[key]; + } else { + this.changedSettings[key] = value != null ? JSON.stringify(value) : null; + } + } + + getChanges() { + return this.changedSettings; + } + + setChanges() { + this.settings = Object.assign(this.settings, this.changedSettings); + this.changedSettings = {}; + } + + /* signup enabled */ + signupEnabled = () => this.get(SettingKey.SignupEnabled, false); + signupSetEnabled = (active: boolean) => this.set(SettingKey.SignupEnabled, active); + + /* signup disabled text */ + signupDisabledText = () => this.get(SettingKey.SignupDisabledMessage, ''); + signupSetDisabledText = (text: string) => this.set(SettingKey.SignupDisabledMessage, text); + + /* signup disabled subtext */ + signupDisabledSubtext = () => this.get(SettingKey.SignupDisabledSubMessage, ''); + signupSetDisabledSubtext = (text: string) => this.set(SettingKey.SignupDisabledSubMessage, text); +} diff --git a/src/app/admin/teams/CreateOrEditPopup.svelte b/src/app/admin/teams/CreateOrEditPopup.svelte new file mode 100644 index 0000000..d14b44d --- /dev/null +++ b/src/app/admin/teams/CreateOrEditPopup.svelte @@ -0,0 +1,102 @@ + + + setTimeout(() => onClose?.(), 300)}> + + + diff --git a/src/app/admin/teams/SidebarActions.svelte b/src/app/admin/teams/SidebarActions.svelte new file mode 100644 index 0000000..bb1ef55 --- /dev/null +++ b/src/app/admin/teams/SidebarActions.svelte @@ -0,0 +1,43 @@ + + +
+
+ Filter + + +
+
+ +
+ +{#key newTeamPopupOpen} + (newTeamPopupOpen = false)} + /> +{/key} diff --git a/src/app/admin/teams/Teams.svelte b/src/app/admin/teams/Teams.svelte new file mode 100644 index 0000000..1c2f5fd --- /dev/null +++ b/src/app/admin/teams/Teams.svelte @@ -0,0 +1,65 @@ + + +
+ + + + # + Farbe + Name + Spieler 1 + Spieler 2 + + + + + {#each $teams as team, i (team.id)} + + + + + {#if team.memberOne.id != null} + + {:else} + + {/if} + {#if team.memberTwo.id != null} + + {:else} + + {/if} + + + {/each} + +
{i + 1} +
+
{team.name}{team.memberOne.username}{team.memberOne.username}{team.memberTwo.username}{team.memberTwo.username} + +
+
+ +{#key editTeamPopupTeam} + +{/key} diff --git a/src/app/admin/teams/actions.ts b/src/app/admin/teams/actions.ts new file mode 100644 index 0000000..dfcbe00 --- /dev/null +++ b/src/app/admin/teams/actions.ts @@ -0,0 +1,41 @@ +import { actions } from 'astro:actions'; +import { teams } from './state.ts'; +import type { Team } from './types.ts'; +import { actionErrorPopup } from '@util/action.ts'; + +export async function fetchTeams(name: string | null, username: string | null) { + const { data, error } = await actions.team.teams({ name: name, username: username }); + if (error) { + actionErrorPopup(error); + return; + } + + teams.set(data.teams); +} + +export async function addTeam(team: Team) { + const { data, error } = await actions.team.addTeam(team); + if (error) { + actionErrorPopup(error); + return; + } + + teams.update((old) => { + old.push(Object.assign(team, { id: data.id })); + return old; + }); +} + +export async function editTeam(team: Team) { + const { error } = await actions.team.editTeam(team); + if (error) { + actionErrorPopup(error); + return; + } + + teams.update((old) => { + const index = old.findIndex((a) => a.id == team.id); + old[index] = team; + return old; + }); +} diff --git a/src/app/admin/teams/state.ts b/src/app/admin/teams/state.ts new file mode 100644 index 0000000..c192e43 --- /dev/null +++ b/src/app/admin/teams/state.ts @@ -0,0 +1,4 @@ +import type { Teams } from './types.ts'; +import { writable } from 'svelte/store'; + +export const teams = writable([]); diff --git a/src/app/admin/teams/types.ts b/src/app/admin/teams/types.ts new file mode 100644 index 0000000..4294135 --- /dev/null +++ b/src/app/admin/teams/types.ts @@ -0,0 +1,6 @@ +import { type ActionReturnType, actions } from 'astro:actions'; + +export type Teams = Exclude['data'], undefined>['teams']; +export type Team = Teams[0]; + +export type Users = Exclude['data'], undefined>['users']; diff --git a/src/app/admin/users/CreateOrEditPopup.svelte b/src/app/admin/users/CreateOrEditPopup.svelte new file mode 100644 index 0000000..8f26bbe --- /dev/null +++ b/src/app/admin/users/CreateOrEditPopup.svelte @@ -0,0 +1,95 @@ + + + + + + diff --git a/src/app/admin/users/SidebarActions.svelte b/src/app/admin/users/SidebarActions.svelte new file mode 100644 index 0000000..503a1fc --- /dev/null +++ b/src/app/admin/users/SidebarActions.svelte @@ -0,0 +1,34 @@ + + +
+
+ Filter + +
+
+ +
diff --git a/src/app/admin/users/Users.svelte b/src/app/admin/users/Users.svelte new file mode 100644 index 0000000..2a9f022 --- /dev/null +++ b/src/app/admin/users/Users.svelte @@ -0,0 +1,56 @@ + + +
+ + + + # + Vorname + Nachname + Geburtstag + Telefon + Username + UUID + + + + + {#each $users as user, i (user.id)} + + + + + + + + + + + {/each} + +
{i + 1}{user.firstname}{user.lastname}{user.birthday}{user.telephone}{user.username}{user.uuid} + +
+
+ + diff --git a/src/app/admin/users/actions.ts b/src/app/admin/users/actions.ts new file mode 100644 index 0000000..8862a53 --- /dev/null +++ b/src/app/admin/users/actions.ts @@ -0,0 +1,56 @@ +import { actions } from 'astro:actions'; +import { users } from './state.ts'; +import type { User } from './types.ts'; +import { actionErrorPopup } from '@util/action.ts'; + +export async function fetchUsers(options?: { username?: string | null }) { + const { data, error } = await actions.user.users({ username: options?.username }); + if (error) { + actionErrorPopup(error); + return; + } + + users.set(data.users); +} + +export async function addUser(user: User) { + const { data, error } = await actions.user.addUser({ + username: user.username, + firstname: user.firstname, + lastname: user.lastname, + birthday: user.birthday, + telephone: user.telephone, + uuid: user.uuid + }); + if (error) { + actionErrorPopup(error); + return; + } + + users.update((old) => { + old.push(Object.assign(user, { id: data.id })); + return old; + }); +} + +export async function editUser(user: User) { + const { error } = await actions.user.editUser({ + id: user.id, + username: user.username, + firstname: user.firstname, + lastname: user.lastname, + birthday: user.birthday, + telephone: user.telephone, + uuid: user.uuid + }); + if (error) { + actionErrorPopup(error); + return; + } + + users.update((old) => { + const index = old.findIndex((a) => a.id == user.id); + old[index] = user; + return old; + }); +} diff --git a/src/app/admin/users/state.ts b/src/app/admin/users/state.ts new file mode 100644 index 0000000..a87772a --- /dev/null +++ b/src/app/admin/users/state.ts @@ -0,0 +1,6 @@ +import type { UserCreateOrEditPopupState, Users } from './types.ts'; +import { writable } from 'svelte/store'; + +export const users = writable([]); + +export const userCreateOrEditPopupState = writable(null); diff --git a/src/app/admin/users/types.ts b/src/app/admin/users/types.ts new file mode 100644 index 0000000..46b26da --- /dev/null +++ b/src/app/admin/users/types.ts @@ -0,0 +1,9 @@ +import { type ActionReturnType, actions } from 'astro:actions'; + +export type Users = Exclude['data'], undefined>['users']; +export type User = Users[0]; + +export type UserCreateOrEditPopupState = + | { create: { onUpdate: (user: User) => void } } + | { edit: { user: User; onUpdate: (user: User) => void } } + | null; diff --git a/src/app/webite/index/Teams.svelte b/src/app/webite/index/Teams.svelte new file mode 100644 index 0000000..01a6ca5 --- /dev/null +++ b/src/app/webite/index/Teams.svelte @@ -0,0 +1,62 @@ + + +
+ + + + + + + + + + + {#each teams as team (team.id)} + + + + + + + {/each} + +
TeamSpieler 1Spieler 2Kills
+ + + {#if team.memberOne.id} +
+ head + d.deadUserId === team.memberOne.id)} + >{team.memberOne.username} +
+ {/if} +
+ {#if team.memberTwo.id} +
+ head + d.deadUserId === team.memberTwo.id)} + >{team.memberTwo.username} +
+ {/if} +
+ 0 +
+
diff --git a/src/assets/admin_layout.css b/src/assets/admin_layout.css new file mode 100644 index 0000000..206aad5 --- /dev/null +++ b/src/assets/admin_layout.css @@ -0,0 +1,32 @@ +@import 'tailwindcss'; +@plugin 'daisyui' { + themes: + dark --default, + lofi; + logs: false; +} + +@font-face { + font-family: Geist; + src: url('fonts/Geist.ttf') format('truetype'); +} + +@font-face { + font-family: GeistMono; + src: url('fonts/GeistMono.ttf') format('truetype'); +} + +@font-face { + font-family: Minecraft; + src: url('./fonts/MinecraftRegular.otf') format('opentype'); +} + +@theme { + --font-geist: 'Geist', sans-serif; + --font-geist-mono: 'GeistMono', monospace; + --font-minecraft: 'Minecraft', sans-serif; +} + +html { + @apply font-geist-mono; +} diff --git a/src/assets/fonts/Geist.ttf b/src/assets/fonts/Geist.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6ae64b3b9ab6812f27da72305614ec2decc8b935 GIT binary patch literal 148768 zcmce<2Ygh;`ae7~XL~|ANeB><5FoU$*_J{}rG{eYh)93{!4NQnA}VrG5wToEMO5@6 zDk?TaMMPBOBBCN97ZDH;0t#ZJ#toYv7;3Zr5%Z$ZlGG@JT0Pv1y;yN?N_aoJAgNAf*^e{|c%$SG(K5od+tf4iR_pJk7 z1$^U#X@xU}2E6n&W08XyGoP6>yRht$Z{{H_QI7EWlM83gfE$AJhQhT>F1c;e?56GS zU~JC|j6Iz&8T8kldw2!o({?cS-N-3Lg%dj;xbzO_SApI$1s;L@0#^b@9F{m`TKU|d zg)0X#)((Dwhf1bTC^TH^+#E^gGG>}Ft#IxPnr6&##?r^!cDSZ{*&4*BKrH%DC6dg5feHmCZ#7#xf&e zem?_IA^g|c1E{-k-n47E)&%909|b_frdWK^%aJ1wes*(kx8Ine(j0I9+)1K6-s9Cp z-ZXCr;-bx%i3#$>PtDB&yv5A&vgzbCcgkd{SD7yhloXLFmdP?v=`xI&Y|J3?_)>7p z#1b(QzWr5~k7W+t1Gw+^924Hb{KqT0$MAxje71$fT@h-zlqznDW9$hE7hz&MoH+C} z;w=REaTdX>%rS7!HU0B6w3kXkQ-5qwwqm8_k>H32Gk0(R#cJ zwgqpAJislF<*fj11{BBRkzyR61m0Rrn>>dPCC%6qoQU ziFfqjsSWQp9sVipNdZzSE$;#VpD=JK0=h%Kv8oHf(14Z z5Lcp<7{G!FNyR`Fsg6m-gW6$AECMfpA{#bZ_6~~Ay`$Ls-q~!b_fhtccN1F%yWaaX zTMPS<_cUA1hsabx`AEUK9-kC!9rEv?+loIO^J(E{CqEmrW9%1$zihj6?yiVkgLlpS zdiZYlH=VvI_@?kbcka#Eo4fbUZ*Tvu{de{QeGe2IJaI7N`yq!C4rLyWI}-AP_`&!? z($UbPNk@lNR9Dng*eW6_+Ek1>KH~Vu6OI$EADjKy>BnwA*?vkr8Gf?a$xbKTrw0BU z^>eeITm78!v*UEg=~kx`PIo+A@Jq-q;lDKdrPVK;D$i9~D{Ymbl@XQAD`S8C_Y5?Ru|$fbi9yy zA?-r?MbpKAi%l*zy%=>d`eL(-u@~E1>~PU_(Oo5~OjXvZpsMCoEvs5p#Z@I%wW;b< z)#EqIZ?V6%`YqwNcE2T8@2{??uB@)EzFN(zE!DQ_!0M3d(CUcl$m-bYgzDsK$E8b` z#HA*e;xDzk)ZtR6OOBeV8bgh###R$plT&zdRKQo^)S6P@P z&=PG)w74vpmVC=d%S6ju%VU;Rme(vBE!!+VSgNed8fcBSCR***Ue*HZSnE{lZPt6O zk67Qgero;3df0lwT8kEov?bV*Z5g&+wgTH?+hev>w%2SMZQE?S(blJIRRJs@Fd#Z0 zF~A{5-?g>~Lus`5Lz}bMyfyTg)z~+H%108`q0{aHO8CcOIv`Nb* zNllzhdNk?Ra(l?4kS9Z42-y_!X~=H$rm9dD+B7si zv~y@$Xin&Y&^4j!Lq81tJalhZKv-&6PT0V(QDGCq%ERsoTN3to*mGg~!<&TXhTj}M zHGEe1g79tOyTiW^|0(=@__c_%h+z?PBc6$PIpXbzZzGPOhhAzbnl@?LvT0INSJTX< z{hQv@^tPt=HhrY&GfiJELE3zPReB`vq+alkM{3LQ` z;MvaY{8Z|3wLDU0L%cGu)dM#>W)V8RvqrQ(i8FewLHrg5; z5gixZF*-FmCwgG?sOX8&WzqLWFO7aWdQJ5D=ntbmkKP;oL-a4vSDKldg*O}3?5<|_ zHG93;yUn&W+uiKPW>;epVmiclVzOh3W7fy)h`G=_xOwO1>CJ~XAKQFV^U~%EnlEm? zwE2qW?=}B-^D8Zs76~o#T1;s1P>VG!K5uccW%HK9THe$0!Iq!4tc^9rhQ-Fj=Eg3J zeKq!QD^si7R;ycm-0Ii3&^UKo_qb7Ux5vE@wM33`i?c7GCP%adcSjU=j_f)Iv+_6 zNuHj(EqQnHq2yD^Rb5z@z%J2U61&*DJlo~lE@$n{?QVN_d!BuOeVF|wdy##beU^Q` z{XY9r`;+$7_E+ui*gv#yPvI%nl+cuBDe)=oQ&LjWQ?gR}rreXVEM;}d`jo9Hdr~S= zE;xiE%#q-5IJ!D=9RnQ09XC6sIBs>!bKLFt$nlHA>$E$kIq!A8<2>s!yYgN4NweDZ zp=-bExa*?J>ke=?cc;3CxbJgsc7N(V=HZ?QPnxH%N=9Hty9{SWZpN^TTQcTlJfCqm<5JhquARCL?YgyF zO1FY;pLTEFJ+=F)9;P0ndc54@yPitVkeINM>CIQ zwa%KB^?247S=HGo*+a7@XP0L`nEihC&g_%fmve%0+T~>BjLs>_c{t~poOLJ+=1}y-&7x=TM*XeM9^9?-$e0(=Vsr;C?styQSY< z{T}W2a=#Dz?do^1-^qSe{aODe{af`<>EFNqt^HT_f2IHX{Xg&jP5+wwmiZm>Q}c84 zhvbjTpO$||{&V^7<$s+2S^n4g-{l|A|0Vxo{*?jBfPewv1DX$LJ)q+N=YY%seFlse z@CfFcP9l=lcm^xrHHM=a%$d!wPlE*uGVIV`h1m@&G}ypm4D&VE2za6fn*jIIU<+HS zY|>yW8>fuc-~eV&*|8w=y_Xm9|t@wFNp z2zZqSHvzm{gM$D+sKLR27iw?_cJ8Gb9Lgg3NDU4HoUOs(%)&D?I0E!-HMl9@Fb$5x zdjEn3M`1^FN`s@Ze%8u@9ha{@c}!hhVgD7#^m4Vp%J~f~ZcD5lp4H%3)`ICgx5CoQMs0JsnSnO$J`|{S{r;`RJf*-Bju}4E~Y5r{iF;>8)vuUi5m9oC9 z9Bv6KW)oO%Rs?q@d^%%oUjqLL>=r-BKRge+ymD3snrx(1g4N9RKK}GNmG1h74MD!s zkh31v5cj7Y0NRP5orM_wus=;c!Y5<*SB`a-4*7@IaatGNn4f=~p-8V7^`*O6D04ab zLaF3rJh&=D%~8G1g5N~RWgOh;pwejzK~n~wIiS@2di$WhKB&M4mH41SHV`r6kXj-5 zC;?Q+Mj#ixd{o+UtSD!)42G!#v@;M|ias+P&vL||7ABvWcqYTQ40WWIW+qbWrP0N) zA%G?!#vJ5O2HH5pB#QbeOoWeK(lWs1s2`#of*zF*caWC9f67$bbv$$e)o{e2dMlQ> z$FUS}MmElmv-^}{sGG`&)M3nkxS*zKAs10c>mIES+0l>% z>*B;=#Q4XdwpVGoB7OnOL0{_XN8h;tef`*V>E@ueX2=rg<0FnakhcS=t9^_5OC5b2 z8w`%8v#H=_0_vVxX%^fm@T2}2$C9q=Ka){sL@^8fFB!2&qIN;Ar2129zYA)kPNM1~ zF&VxTvpwXnfTdHg2$IgyHJA^=J;xT{glPuSOK0=hYdoBHI#j1uqTq-TdXtQZuF5~zeJNlKdXwDOAbfwILAV`y#2Fyt6+HcT+wVwh!k)bNDi zX~Xk|w+-)M|F^~Pwc&u_IQD>NgL=ls$KD(JZ0v`z7h`{qi-?Pfi;YW&Ya3^ebH-)F z<;Km3yDjeixV3Sw#k~{ve%y!g=J=@ig!p0cW8djn^f$vmBB@qT=;Eb&+TgoyT)c)QrIFvWxusxYOk;`Wu88Jc6a z+trYZz3x=(c9&wW`;=j|;SIwE!zNkc{e}v|DZ?3*I4*VpO1wGtLTpW3cwBT`i?}#h zVnQ(zj?M!w%BwO9jz?k=^+A+0*YJ1dX zFm~-G*hO{0{?OGE*Kk&+{;I~4du*GERTOJ(w~99^7F0|)R(!>|w@^{scGwSkAE?$GRUg9Sb~q;OI9;KZpO8qwgJk_2~UaZ(;06C1Z!*I^6cK zSxuFmhr1k_cJPrslL_8~lUD01rg7-w=TPE6{uqBv%oeM}di32d#BQQNzwMy72%?|j zP&`Ve(nrY$j9Uo(r}P0n5B3G+pmIn#qMT4p5=kKS~fDV>^N|jQLvn(xd=~H9C3X5{2AI9ed@vOK7 z=dg#xTJbNjK>R}#i|yiOal05RO2jx(D851+>=Z@f71U1?76fS!&06F1sgoT4-B?eS zi`7+sHViZVNHzx2Ws012Zo`bQK-?pyiF?IfF<)tm6X*AElJpVV%D!T|*gkfEoxlq9 z7u5QBc8PPYa09pSVB8e6;&C{iYs)){h2kA?x7Z^_i-~BBZQ?_m6Td57Qxe7Ne4=IKTCvYrOZFLL%oi+%ZDZ}&H>?f&8j|=wknejS#rI?7`yFmF zDzK(L%2L@e%ohhCk&a^)I>~yl(=3x!Vh%oo`Qca0PG>P+UckLa73PwQtRJh!isKsQ zlB;Ye#Q7+0WH)j%8_iAZCXU?^4`es<05%r8nn^s274c9uk%zD{9?PaU@K&AMY1QOKLH$vj+XkMZMH zIx20HPKsUWjPVqxG{M<@gwhl;G60e?TnWNSVU*HLiQ&`v4E_Y43d#B~e+2W%qx?bs z5XR*kK8yc@FUB3kWZX~`<0P__-^$DQOkU1s^M$ynxQE}%7xDY}1AGa;pD*Q)-h%$9^b@2z+J_M{A2zl?kT>)O!YP2&G+*E@ICwhKf-^&ndbZaD1V#p=ilLM z^Lu`Xf6Mpr!+Z<>h=0Mq!9B<^{v@x!O~`TnG(W*_;qTy{xvb z#aHp4`E$7WSj~Uo&+|(DB0qzBle7FKevZG)&$A9}FPqB~*(@H<=J3|IrTLQ0=N;Hx zyrWnlo)nLX<>CqPxY!`x6H{<&@}}q}x{FNlqxbMeB<>RriidFj_kdU`9ubSh{Wzulr&uN)W%qD9gaOU) z%tW#}f*|>eR#M?jEB5-P1GsO3@v_R#Y{b|mb6+FoAX|i6Cx3H4)+J=JFe*=4ISu)i+15x|z*h!WdS~m#9zOjKkQ_&9m6eUT)&h%Of&hsON*t(-GJQc8Aye-kbG;g zE>z7|klwm^9Xo*0koffcv{93SouO{h*(g8r9b_4q5#ZuQNY}>9TI74Zq5hI2YxV%@ zifU$^US1J^Qf>ez1Ci5rNOP?S5uu_fPIYdEl%y4KK4jys>{g7v?P^aIfsnK-r7>fs zxRX7Heo1XM8sEe<0CxcoPt+4j)%oecaA{_ot2^-|R8#BdMn5*8BwebLZQ3NAwD|-mD z*#IZDd0$7>4e_h7%q%4#PU z>_@pKiNc&(iuJ{1%>P@kV)z)d|1qotD&SWD^E=iHwQMyzBoeSrcmZpGPid`)+4m>p za}w@JxIeKefD&=DcL!DwN3jAS^91`4OVL)W5)_rX%Pp)WH<4j>Zp6yWh!vXV>gD-w zTw%rPgCqg1zGAVyc@S&Glk6GnOkLOu=V0B^8?}S!26_Or>wE^b11#-6aoZ1wdv9bp z-m&Z*@9n77)}STL6UP3zgdJSU&Mak*Ji)$thCQ>2z4{#c=W4d?MYi~5wqQMbVgq}5 z1AAg4Tks*f=R>yXBlgtCY|$s|fgNno=WOklY~4=wG$mMLu}Jw zw&@3U|Bq~O4F)G$Vc@~YOfqtJyG30e?6-Wtv)xv^R*!rBhUbU8IBiY8*Gu1M`^Ky{ z=dK&~R{C3ay*=*Taqr%`q1lF38^^z&|KZ$^Y#+sZe8b0gY#F@e&QG#FnXxrz>mA#E z|Frk^F5A0qFZ-9dSBwcw);BlbL{K7Z|J^}kgaXL z>%0Hz{;2&)`#bC}*gtarm;;dqx*nK&&~>oj;E3;oz907e=tC_IWgp5vG~iItVZ-5s z!?}kG4v#s~>4zad-10-oQRS%NXyDPrqn(bX9nC#D2HUWjW6h7XI@b2spkqUi4L>&X zSb0ToMRY~0iY^shEAlJm91lDmbG+^GcE>v(cOUO|y!-K<$EO}IJyCrk@8b2idGoLFzj}ThaVF#JrL#@WI?m>u z%RM*feBSxt7h*1Sy=c1_b205=w~PHR=2t~l^{MJtb@Ok=-(r4q|JF~cAw*VpyL9f- zl$z!>Eo!>ey> zxLEFK&bA!2T*bwHWI$%%DO}?x1ZIa+M~tP8xdo$?ewi?&&6FfovWUO5&#-U-tLy~r z%WRDJn00Q{ZbF!9Bj84e8-f2F`#I7Z2-?kX|Hz&~*yo`6oQ0B$-Om_hkm~XvZ!K^G z?2WKNupBl4{y&RhEXQXTAii#M0oS(?$~5?$`~!O&`TvDAWP)Z1;+Mc42D}Qczg@sm zk^lAf9ndAQ!0YT=Y=HQ?_GuQOyv5o!v|=m^7Mb45joLWY0xJlg#d@W)tP`q(HT5lD z%R2v+73&edF-v`n`i$Ne(8g$+YiOg9vQAM(;#=|ve)N1OEkiFBVYm_X&<=NUf72>Y zfOZHQj5()Mqjm`VmrI&XqC4D_zi;^iteYqR{U6yG2+Kp>dCVsAyyvk#83;RAwS;>w zX?`4V72pWChxi#bkQ;EkXe@uD`I#N1&m4Qf()G zJJMEdSGaDhKsz;R`-5&VONDjwe@d6&RM8V@{auT@KgD^y6@6J3(TqhlYTK}M;b*aC zqdFNN>mZr66MxrI`~OXgea0ARGo_maI9&Ea>RWohL0>>S_D4IOQ(fGBo?-o|EoB>^ zPN=N1OvFF&N%_BuzBC2GB%j{L%FYA%-vZ+jR_Tc_$O%Ot>_L{KEJwNr z024jUj5FlKla4K?y?m0N5$WdkySXq)TJ9KgPp& zz#|bxX<&>{)UzLEpIZ;$>AE4l*z7CT8;(FOeg zR)(j6<_*|V*dyL*eiY^Z40ZD;b}RegmxlPTXxmPNll8?Xobs9Ly^38;0^~|3F$nGT z0Nl=SZ$SJoIevrry>Rbk!JNj|jc~^yjOPD|4y-%SpSd=B`!zF05p>W%weu1#U;@zsBfvzdJxrXShk4C0vIk z4aRjRtU)_r|1K@oAa#9kI^Yo4M`0(zLSAC-@5Jf8ek1HIoS0ljdhf9=)PLj-+{T|p zeT&>)`9t}blEU&*>Up&jDF|;@E2g2Ia@G*#q-) z<5*_FpaFpKS`k8r7WBuHG2B1mNt-F002r7Nr$GTYU!yyyU>1UrNhd=QtSL_3qCnXU z=VW+?q>)&3=kwpkvi_f9S^iJ4%zqh6Uh$!9cyp#+jr>)~S`-$Rl=C|#6wWN-vnNcL zHiJ){SW-NhPn=jfeHtG-sjP4U9}15`J`itFmGD0DnJu5)0t-)Ol7;eOlO;C&Kf_H zZJ0T0#!R-Z9I4^_k;+B)!5pnh&rq~CrxPGZPlBM4fEy`-(3jCe32Fx@SVC<91xct4 zpe7PZ1QaNt)_~~tkK+`V;rtH|^d5TRT_g0b7@YADMx%zKchOU&3XpK1d|Kr*9#2K< zb3{jPHF2Eu(s7%BHQ~08eDLlPaDqBo3QXHfb4}w+fyNr+7TBkZ4;rT$bBz|mWkV%y z|5qCBfthWXVi;}cWtf7u56&s;m8D9lG90(eZAFckA{-)+SK&75DLw=Gfu%TEq_Z!2 z|A`|{smsr=@@qa{f%97rdkW{vD{+?gEKaCb;beO?dmg8QFS0c_-+h@6G5jVzmfy@@gP#8z$oV&3EvAbZ;#N^6W{PrX`Og+}#BE}p zlAyF!QWOVr_JEUc)MZPwmJ{cC194tDhuw)2<%e;Cy#g}lL!7#QhI!-w&OMLd1oJq~ zQZM74v^8(fyYMuggVHVIYjFpMyEoiH(+%`^+)_`(4fG^2S(J*oxGM}$5*2#4tFHV_ zQP&(dW2dB_>Mzj7CcMG$I9rZ0&J{SbrlN;|1UU2C%$yv za-m1sgZJc_&?3o3xpR3Q@5OsVi{_#q75L&#?&5ClfsRcYbWSpOSKbZpVq8F~^cL5< zNbpU(j}?HvM}2|p9e~G!lQhUm1B-)n48hJ}H50hke;#{*+hJam?oROn6cGr&UH0lA zW)U}mZYS2LM7I-r0X2Ll(lzi2c#ka@lo3eT!pDPyU$7#0!h z?mu*C!7#(neAFK_3Lw10rpXaKgd@J5K4(3=)mmDl*-A0OV3Q?>3^NvS-4-iJk|-SG zrY)9v7ceeL{QT^Gy_uw(%P%YfHwb>QanFH#`BmIiP)(_|g||!L zn}HhwD!W>5Huxk;js=z4@v7q}21#V<$p_>#1|dOS50f)JJi4h%!t@ z9+3#)I9jFFp(kF`#q$@5(-W^K%O`OqkgE|lv5WA|qC<&>zma9*?&}PzQlk8*sNX{` zkvHMt@HOD}ZxRo{Oyc8+cR);4J`*=o)@Ze?c*BYM^;h74o(HrRY@xMaBB&pfb%ZyC z(QZ`Ud9Z5Qbc3Pz`mSEL!+m~g&r0*_4VhY6#0}LiWfnL8JO709N^zcP$OxtmH^d zrK6h4Wv%!EJ`WlfCE#-$=8B;_ACfB*lF0?FxFnu{cX%Ut2p8BRpTgn!ZtROTLW5=% zWbuR01faQ5ogZF>@9VfheG@aoTk_8B9mq4{{S0P-H)%fOwcHCq$8me9;7-*@a{%Pi zTyY!Z6J`T32e)|x#YmAZx?ubp#Q-rvq~SfZM8NrCICSzli`Ibqi($ee=$z6h`iY^! zEjr>B&?x$fA;Kj(h&aG~M1gRM_PAX&ir&yDa)=}m%S@t|7%WmmJKXs-2bL!W2|LDZ z3*77qy!&<$&$aw@JX5fX7PxU6iRTeM1U}t)A3VG9-gtK9z3|N7d3dJtT&BqRZXmE! zNHhTnpM|HJXX5GNJrO<;vcCt?`X}m6U}pLko+~hy>%CZ@es9GpU7zLkx$a4AF4N{Q zjB6S(MVSBZ!~OC7Yzd8x25SL*C7`bZ`a-v{KQuZWkdLEi95q-Kyux4A*9DEXQ(M$m z66&%8>KQv>v`Clh)(;tCo~RPP;T_CNSmXSzy@`2Et|+3_QKYRbZbg~(wS_)|chF{K zZAONSB1zC6tB#Ru6dR3s7^A+y3PfLj=&O%kaO3$aX67nL^vfh68mvVg;V<}BBQ4PW zv7(iT6Y+S{v9(APZO{)=&`X@?L2mS}RP?;`>sBo#=%qhEQ|B0Tb&f+@=SS%6Kzm27 zW1`eCEY~wM=g6OTCDs~^{IF-Fcicbcf-6`>jc2dZy)5)E-oT2b4Qq@0b}w|cOx%n! z01LN5|0)T3TsGWTe}VPympl;d7=-zo);={Dp`j>mxO_9eBSvf#c6rfkCuH6(?C`#Z z4ja9d-&wwqpDf?T@51AFJWs%_Gc=`nYo5s4K(4k0x4WT3F`4}b`ff>BJJEP{qF%9D z!n&>l@5ns76GrtF-Wd|23r=9|B)_>6E0n$5h4YvxY+v0P2Q8VQuX9*eT)X{(QSbq+ zl~{L-k)Il@m(-q`kG}eM*0bYCzViuk-q-ZVAk&JWZFY;)_?rs3HVy0RX&7^P&^)Nc zV4Ds-v+1~>p20cvi26YP?N+R=XX0$^R;hb7i_gZa+K>GX4Yj#=J9Zwwo!^0T={xy+ zmJdCYa_ExG;depTYXS7vpr^(LsG4fHi?|ObVS}KnwgfjG$8mpggVc3<7`kEqWCgex zza6W&dC+8g1f%y(NXa3X>xM$_fVAQsgLdNM&=9x^Ew?8yu17#S?Mdtqp2i56j}wRm z&{(+(T4~QhBW)Fbjz$Ia(Vj=2ei5T%3~v0_uuafNdl?#luRucpt6goquj|ac4ehpf zrRE&z#p&8}A3=X^3;%>~#T)vpub zQH&8cK~mf-8t!nWKm&IwbaG3?G|X?WKe8`gut*crxRg>1ksGy(I^zcC**fxd?ctB;=0JN^vs3VaTI<1exA z_zL=rUqi3=8{BAw$hASX_>VjR8q09T%QB%={H@q0z7zYQ|9DV*58dCx;)p6~vEuj? z`c&^i@9914GuA?%>0_*!Y-~+^87zK=9*Grm;v&qLOT=lcPwp1Kh)T>Hr|_oRR=mM} zMw}JrpuhJaGmG=$g1AUC7Ut9CSf!qY?(#+!hxs`kYnsQgzIhb;>O$uW!D;ooC7egOJuN7zxNo6=qBq4b1)dzL9{d|A=#BJ-@$VtYzX zt~qO3;e@j3rRJ>Zlc$#!-4c*9p}1_qtZ9= z(>Wndc2(Tv)^SroGS2*50ctg9uq>2>17&o#MwD5e<Z88)RkI#dFEqHWDP?eY z{d$#t5e+I=^=wdl>1oNjxom|r)l?$8v#CUKsQKoY zN>$%dKVO$eDS{lCUT;)SSNSmEsGg)znIFA7)ihK32Fz@by(1;vP)_or+>hMjR9R2S zHqBDy$Esjfb<9|)LGOb`h-JD zpw=N}K%mwuC1NY2a%&NMaw0`##No#XU>_q6e?}Y)8FAES1QC6VIQ$s_qSig-?xInFRVQeA{g|`rqrT3iW^-G;(BQg$B!k22w{s(Y zQgo+TCfz(KnXbDmnHt`v2|xa^vnuF<9I;Vvz{TXpSP zxLr@jqlKqxuDZBzrKrNeWmn~wD(rXUspC4GR+UbzX*?wIY5BP|{DGx;!24rFI*q>`>}_=28)LPI0;YdzZRWPE+H!W$#MEMrGRgiG{L%IkVES-q2A; ziaPQfu3nN2M{269Cb*JKxU!nyN_ODNYKAM>hbx-}uB>LbvKk$(JeAJnk=?@K^2lm{ zE2|Z*EGAspOmJm&!d3HkdDQ$}o;2&cqO$2UK+-MPRZ74ty~-z<$OBIKoat~Z(%lm`J?9t5g+s1W5L=_n6Lr{*C+H4jNB^B{;? z*pZ@22)Jt1rnuc!)RUy25-3Zf!ZQOVAqNc(lu2udOvj$4Hl009Z903J+I03bwdw3> zYWnsxwdw3>YSY=%)TXnisa?mOrgj~BswyGu*=oxy=@E86W@_V_8c&6rYDdUJhea#>Mfc~P01zGMD4C|nEjC#Qlt?RID6jH0sQ=@aR= z0z2S|a;*tHr2y4iN^9GM=_S)kB^WfbXj*X{+N7wYq<99l%`z~cXzm0II0*-<@WknJ z)QC-PomDimyjV*nRL6Yb;SJcJWmxkDezdIyYssX-^G9J6FYZs`N#@kDr^xY)I*^SA zS2h+-LS*B?m7M|pI-MN%z~y*{E9C;{Waoe@8x#IgF2I#?2L7_Mz*WUzp0ig-Nzu%i zT2soli}LgE_m92a-#<9oKe%DzIy}yF>&$7zB}J18ClpbUd!=cjFC`__G_AOl_E0m6 zCQL7#C`Unx%BaJo7TDp;(FB}5+mJV_Y`P?}XKO=2-ETUyF7B{rsZ!9Pt#j~r=9OlZUepORpLEp+JnJ+b)o1+l@+m4bYsN&KS{1}8c`8dO zdFp6N$x=sQipElkx&(5hsPhwCbyTNhyMnM+C@U_UjGkXUt4vEaFEvo(oH|P?%`ezP z%K0TVxULNTfoT#6@|DIvEZr}R%H*Ho!$JSw3dDHT(qvS!>ly-c*BE0GQ9aOdQh z%ZYKVcHLOjNnEQMx4NoxxV56X)u|Y`T4nAWb*gr1t5Bys)hf4P6Q)laZJl`qNxcnJkZ&JO)vYd-9NHPI zLlfYRoV2j<*ks<4Bimr&5PW|8mLj^Br2A(Z%fzjgfpk7u+X=Uom9Q8L##>m7)c!bUbu@Pctymx`Vz7o&g=V z#05r73Y`&@EbhVG^BCOP_JY<1={ZnbXf(7sN?J6no`ueXfWHYT-Rcc#wIkMqP(df? zxCNk`pvlnW3(*z|g6lwQ!j1Sm+#C16eQ6M4l6IkjTcn41nJE@&ya8ygDS`>>1`6Tl z#k0(Ia|S3Q7l1qKD(U;12;=j|Rg$m7zZToURSe=AL8Y+QfI|<9N8e$tgI*cPP_tb1!@h-!LR@+1l!5iKw3ts zFPFaKq%Xd=uK6*GTHPj+s`rfMf zLK6nGq;)_wq}>|Jo-BJ$z=KwN72Q?_{k%Qa1=pF`*4fq)>v()kxX$#kswT~Py-BkA zn`mp0GzNT|*iheCPDr!Y0#g@a`NFcvXVzKPTxV8VmRS~C=37cNGuBdPhFbdhOeVgO ze7*5lI{8cjzNK7ef-KTl4anV~8uR7r%sI2qpr#6B`ICry@R^B}qb)%)&N=f>jhaK| zJ?0&L<|8wicN#Hk&8y5y8<+)VGP4^olgz_4lW(qXvdw9J#y@WrP6kJb<`^?RLdz^O?lx{WZh(2s zxYD@HxD0)0nQ@_UuCdfI);QKU5E{%GmJ`Mf#u#IWWepVcZN{UB8EvSxBp6p(4aRfu z-JtdcpnO zTgjNY5?=v4Q{ssdC)ryf@rOiM=+Mz~k#c81Ye(ZNvOEyEof(bq;qqqi>opo*z2ylq z-eAP*F5|V5cqZ_f5+4Q1{Lyw$+GR*vglv)_RuN{39gVNG@+28TGwVNONPE;`8lzep zC}%p7zmLn1rx8N)kHUxeLb}P2^FF)<;p`qz<`N})08l>}r^H9|0@3htA3lUkRErAI)7d&X)-3CPO;-Lb7E@GD1kZO2KzHXnrQHpOYaLgy7u*giP{< zY>**?eR!h8$LTniGZycKm_207-GF3yc&1Lno|JKxAtXc6-02JXK!)`3;m0JNQDg{B5Ze9GQAlD=2+tfWL+fpRMFWfG4-t9BSk?cYR(Q2ReBL)sw3 zJ~9&_PXY3b^Z-J?3GFr#-{|En0A-I%KwjHrJnH{_WV|GN4^OSL#S-TfKB5NUTL@>{ zBz_9`BpDuql!lMkk2E_18Z%-Spksi>kJtvNHK4K)n*eP9G0q%coB8@gxM5kPVj zjaZ4aK9gz5dKmE_@DQ2TJj8i<#2qrudX1~zk`m($T#X0iDoObn>Yi2=3J*h^cSiI9 z)JlYeelZkZY^Hu4x^9F^`h|sV7|{U`al3g$9H6fNZ5=`VKT?E+_Zflp7oUdJSvIA| zzD3HrWXkz~jz}mPP?dz@09}?)7qLAI0OIZkq)H)-ny^6WHwq91D?9>Ff`mo`QhTGr z*B{O;AetL|_=6HJ1?3$wjt7wBi{}CALw?X$+#WVihGI<_HdI0wQDLJcw9uDU=LMAZ zdkC2*L+X0v^D^X!kMaQF(7Mq_kAZM@A7Yj=N}~u+xr9(pTDv?$G`wzPKPB<*zVOu& zN6#Pfl#Dsm7qU=>3`LqtWXLr@OC>Y_&~gb;O|Aq)+RpTUH>4$bH(dI^n}0yxXbW_3 z=$~#rfY#y7&`898+~7SI{KpM6TT7s`HwHR;w*$Wu+IhF&D{^;3)9+qr=G_Xtyhoww zOka_^i~a!z;ZH$>ZXq=2Ucfiz@IN@v*2DkcARPaL1KqpL(2IK(I&s^eWw#yra4+C1 zb35@K$u4|lZY}iTj^b?^(skPmUALd`MLGO44*!_`6Nm4F&eUe~HvA_J-$nn4!@s8g z#NoT?b5Z;ote4d{m#9CThCK-T1?(o+wXjrgR73M%r^1eg?FXBI=r_`M7+Qe(nYDo0 z3Zo4;bdFhu#K%e80erB;*GoJB_+g2EA@MNa4@i8m#0Bs>CBBjHAvFKJCGmG9UIDy= zAHD~8lEfdA;ah>nN&E(huLnL};x9^kHSj!%kCgZ_-~%Q8ro2V3ViplF*6q$r`MY)=*`!gDw$th>WdL`3Ti}_A0wg)aN1!D-h-%kU-HG9!FpN}=Xd&W zM&bN(1|7_U!3N1EQvbIEt}JkW<+4JvvwFC8*#12mtvLL0j`H1m$L0(xBo zTDlQD7GLOe;;n*WXgd#tcJE+*16zRi_eQXV(9j>v?xVN%7=0si5?jJc@qYLN^sX9v zm}C}P3R(0fdjwy?e4nk5`nXT?Gx&zaGtjZER^KcLDn(XYp|93yBS@U!PvKpiG>jn9 zTUJduHngaO=K=^8%DS;nE3l`&4LTy2T7E+)g zKL+1Bzz|DGr!t{?n$2?X9z;Gu2jYu&&?#pH&>Nq? z=*$0;pr?N?bjjb7IM8e?N-B~D-H{ADHTPpyjry}ZVSDC08lVM0FpkQ&+mpSLVi`=4>V zvA~!ujl<|LCZH!R$N9_|W0+AGE*L5d73eu<40{Y)4eKpy@g4eQhK2Yl{dhxxH3)GX z*5#JAhHQ(+;IJ+-W?O^Qwny5F0BtoSsNCSo5% zR`w`c&C3j7#%gmm%2B4Q2OYRYEVP~SvNcUvp)6MBTG}dfg0Y6N-eWKpaZ-b)Dhaz{ zl+u4+0`IdK(qNjzTj8rF1}PbLNqicP%wGTvW&omu73@P9Lhnwgc)7&S`EZ-WAM)Y% zNxYd4A1muEa@7tNi>Zaf^=g zIEhcyadx-F=lk$mC7$QQ!zGTE(b8Kl@m@asTZ!-X;qek*=EFahc!_ta7T-iTTjUMF zm-Lef0$K%X1uFqPkB4L&nt{|ZtRWo#`U$zOTt=TbBf}$n;X7scYrZ_9WOy52IISmf zR^r3+B~H6{HT^V+*Y&x*gtODgF9KiI0pz3nN>aA-;rC12Dk;Yy534Wa1ck792-&Li zs#m(%GEPSy<--y`rsLcy@zyd;IOjkPSZkM#9;PL@6o=@`VhLllDDfm; z_=^&6<-`9a@w(c$SK?p!!o3m?@ZrZLKHVFF)yf&<{H-q}P=@4FnfYFnIo}tuK!%hd z#Kt#)r#mDb?F(Nd@i-q|B=Igj{HVnD`|#T&KG26hCh<72B>ke^N}Sfi+uP9iBI?8H%q(}DaBxf3NGVwDzVxppO)c0efScI=P)*C7yJ}I$}uuz zsE<C`Z}dmoN}IJh0(WVsWkPm|=iRI&VbgQ+-|dKf2H^xp_&_+NzO*bmX^)EunD zpTa(UCH{HfHu;|CUDy-7gi|Z*`VfBu&Zw5)-OW!Bo6e{nk!MuPCIx_UovWtNBXrk}Su%MMFDS^gSJTMyIS`gvtOM*jYO65p0p zrqlbo#G6j*pO<&nfN~jcR~@x?(|~gC^2|HxeCi-o5gz5f&$MsfN6TJHe50>*PMToe5e)&7;{1uH}KRTVa zy5|NTjJeKRk(mkm82NcCAm1VPy_K061pDY9^S!4sWqtfnd;9zAb*{(%E7x1mW9gsK z$a?>y`Mo-G_n*c6qcHEufsx({zy5hXE6iKjvy+dW!UQbH<~1#LJN9M2Q;@T3xk;5!`)P|ms%8fDpxvQ$=CDw|)a zOtMr4>?I=Q&W-*xrWdqUJvdW`E-UIp!S{$V@UMCJmIvx=ns-pEQRi)Q!nVGa^PdP;;=sLwy!ZPqZ zMf|*#o=H;XUGR(pC!@X9o}m)g*1!mtav5I{kw4&ly!&%kdiQ&>Wqeu#lf2yJ>4vx- zZ>`7fJ>uyAI8laIdSbnl_TT*Z%N-eCrvj%P;c;4-J2^9)5E7qO~pBVxsr7JCkVi{Yc~KK$Z~gHg^VN zT6^twyY%|^R_889Ig^oA66zp9rtQbGcbjKYLq7fp*ZF8HT+fffNWL|s@z%iqvb%*0 zzv_+zuOZ;uw~Ipi)@wICKKhD*MdU8`;Z#4>9*KI7x@wuhRpXzxPS=<#$1wUfg`r(m zHAbWRH8$4tu!b&p-{-A#UC{l#HLl7(jUVj#iD=Ot_4<+j9@AUlI*M|FSG7$gJ^Jq7 z`8C#0u8XJfaGiex51hqp@t$!Vlw(%wH|R664v7@y-s?T@+T}gx?j`Z%t{vVruC3^g zb+TrYYcrKiriC()Y>~7mAKGw(p0@W_*E;g2pMRTrH>vc}e;4>^OvYDuOfnp_UhqJ$ z|4;Iy(|})Jn9Y6J2OCh%tFE;^ya6C(L?ykWT@>KA%D`TP6B^<^7m7urq#Axw@@nNG#^V_c{EJMLfc@psbr zZ)h5hiH7)plh*$qv@|dOWj;3ay;H6g{&as;F7(&fzm>LsqJIH5W;s}!<8u2C@uOaU+BAv?zq zt+&cGT#qC13ireQ@?ZMxhn(E+8jLieB~IfN@`U83#3^mRxtsj{=tuSAAExtB&ksEK z;{-S4N%~Pc>~Zyz>!wOqF6zAp(yyBXq-^&LB;KSY`m3(AhH_euBioePqgveq$hm>q z_)p5F%UsEiRv!d6_9NOx+YLPF^cV*N36}e=T^^I;t=tp(4L!&&&GJffD`133K z@nKgdndUb1&7WLt(f&szPW7?BuD+z7Us>zPTt9hBbPa#?Xg9gy^l*P(bU!9sG3bX8 zgp=#NioGS(%}G~~^s9DR&<0a=dO1JS+7oL=87|us?L=$iYL`&`Jl)i|daVDutMlQX zg5KBb`PDn?Rr&Q|{*mLI`pquqRk`on<*cT8p5l5peP7C_U1-0>L<_skZ;iItd0M8u4e_@*PcWPFh|Z_1f21#eCg*;g z55m32oqLE@_OS~0RP=?qv8l%)I*nhfhrowSN%|4J_hj~XeJ&;$u7=h<<(a}Rlo@?b z_m%utsOx(#h3$9l)YBju?=HXovod>$9`CPQ|1=uXqJHnu{q*waxbAwZdd>IA&8yDs z`nr(9z12?40Z!kJ9c}xLx6=8Bf1Z-Q()qG4J(SUV*}2+>V-7*Tj@0o#a~qDEM&$;0 zXqX1^r2F~vOMd=oHXQeQ97#uW8ug<_emWoC!`b8YGjWW|>-JR*qw4*pq5uB^$2g(= zwv_wcD{6|m{DAur+EmKay1bl!$!{GkwSAq8^shsInm>YdJ{pG8+E|V|Z9Fli@+AE< zekm_0Kj_S38{lm;50f8U3WFd0bU7grDLW*jJ|JbOE#>-(*RR|C zV*e?q^YN!d6bPOg(#Uatz_}drT%BB4hdR;b9~!T6Eww9q2F3M`!x>jO{MJFnRXdle zepDWu9qf0-$?}o>)6O+e<|UMNLz(1{dl##Hy!M(C=_0L_elkMiL+6`li3c6mUE;|H zYik>MR(jMqU$zm|Ia!*k^s+UOleAu>G;~=a=_wAi^<{0I#5|4hJXfYkYs?1x={z*% zHl%Hc%e-|S8t~RIJ)D)y_MUT=Nq-~w!}$o>qlDR9Q)D`qJs$r!`q%;88P?1>Ne}bw z7h|2{yhofkpGJsq4%Nf|&#uOYe|#Sgn7{n}8^Sn`I^}DF|3}`Nz_(RgeZzO|wWY*% zY{|APJMk{t@*=OYEbsfi%C_t{wiAae&PsNYumwU{+OkugKq-`zokE{d+J{o0Wrq|B z1=_Ne(n5h!_EL7@>+gTgNV4phK%ckm`}X(6(b3hpGiPSb%$zxM=FH4{C>!znHD^F} zpl!tk#|eb>(d9BA0PAjuOJTX6lda;t)_wlC^YP#RF8JF|FBmuX*`J5G__@FTPi(J5 zi*#hxCBMY>Iyc?m-(OZ9lGVZCzw)!{Y!BusrGs&|@yp_)-LlT;4>$b*#`D8+EW>k| zzuoxXAN4y{%BiD<@xS~>!usR<1K+{C_y?l>OM@OQPr>bi!hKO#nzxYNOXC7%)*mid zmzn$SUs|Z65QmH`n*Oabm-9(_^UE^u^mERPqeO$u$2=fN_u?_&EmtYi;dy|Q>Uy^G1|>HB1rUw$0%{-20AYCeL~36h_|=zrET+8-qDf7riL=YLp+Wpp`{v*Od%kfr*tUE`j)H7~N4)$0 z5n}r5B{OTX|K@VDUBf@mr1r@ETBIwLvL%4^rg?N5)+fof!Fn}xvB&X|&$3;UU4nG3 z2V{Z#dg_-IFW8PkVg32|vUtJosb2;E{;JQ?HdOLKaQNw$OOCKH1;77iKT{s&(nKC+ zRjBP%ux9<`?w8<@diT9(0%^*0}s>{in$itS2P;^ZsSubN#cwEc`#?J#41DM)Z|w z;lw}eCHWe{pMe`#zlOVi7b(BMc~XVAYr9x%5DuKTxC=Lo@5bL&>|B>8FPOfiPvb4l6aGL@QAmtgJ+v~n|36L z_h}cB_&fINoG3n^Jv!nO?9n+OK2RF!)fzRmCeL6HL} z6ca-k_Y=l9GbV(dm1hWwWX5o=gv?<)<5L*c5LEt~!^H6OTl^fy(9AHJ@t+bDh5UR8 z<28Q1kMS9dk@ah5jKY`&^sM}zpE+ISdB!}-7z0CUV>s!8@PhInltg+~-sESZg9Dlv zO3q~ASyk>QC@4jt$Qt}1<3D6Prz<3#DPR;|Z94IcdmjK*LEOV`H9+iF1XKm(M-?Rm zmEQszp%|4#_(R*rZQ8U?&4TARoEV|;8I1xrQqzgYHv9>k(~*Z~2Ttn{IE}GNNx%-c z2CPIi;!h||_{+uqwN5;D;WlyRp){ur+8 zRQ4hl$K%heoS>Y7Q!q}2T(m$weiI?-Y{&@ZV%!?7;e5!;kmv8R*a`x?-^7Jn8#KQaO*i_j^ZH{#ET(_z1lbm>INP@MYrQ^dU;=Sr%| zWB7|x9>@7NINcm)ObVR2_!scwb(~fta3bKl;L&@^N7x7Wu^?XJpAv!%p{gPTF0KY9 z1ZVMu;2gz8c#ag2z(l8hpK&M)U;%vYHUpLQ{ZIZ?TQ&^r|eMj#7?mb zVRnl>fX9my08bPr;tZIRa8jti7_<-1r-)OONO7vzuO#C1-_wA>DZ!wCvoI0nOo6(? zNxa&SVhcikM|?+F zgtJyI2j&W#%_V5e0|sLrFjwQ`PJt6wu0_b}#r1$Uiyr{IHM>ATXsicX3F&8NlFz&s{9J8S3%s@d!yfe=~UJZxQcpF5#WO zCiQ@NK(VWrsFx_&q+#Is+v>OROnaVFdCzki?+Z@lJTyP8q@yg92ECg=*!{Qc^eUsfRQW#&FI}Ys}vH$iXFOiO06+S0yWDfcpWNDih3CXT)>CE&@BfN3lN%`5?l_8sNuw_0|j0=T~dkq+p zZlNsQOf210NVm5To}`;#>87%D3uWmR0_lcR8|c(4WwLau zVCh!Q(#^?d8I-VeD`V+a#HSb}vW!dQGaD={<5F10S@@iW9F}f{EZy8J-O^dQ*;%?- zSh}UKbhGdY4LK~=vRSU#S*~TXTr1@h4O}eOEG*aZSfb^zEVHpJ%V1e%V_BBLvMiTn zSt`r20+wZoEXy)kmW8t{OGmH$KA(EvF|5EjtSjdG3)y1ugn0db6e6TGq*fgdX;mBL zAD&9*|C4V*YC+pa!#4)o7&py!^i8xdbOs6I{!1lHodn(6R_#%Ex@lI(@X%rF2@-rv`3%r9~&f`ayww3a{Kh-&|7}S@D7G| zGQ=7=@IPnx3x;_cFYX;r$FBVE7=zhZsK0@DRgaGJJ&LqYQt=@NtH}X7~id zCmBA)@HY&9%kXy$KW6v|!%rE0#_)57hZ#;W)EQ0_6!7x})EF*cxR7BO!*GTX3>Pu1 zWmw0so?!#SMutrcn;Et+Y-QNSu$^HaLl47#h64kk2xFj^UpfzQgeE3_l=hL1A*6~o6F{+i(v44-896vN*z{4K-ZG5na}Ck#Jj_!+~`86IXh#ZYHBO%N@D zpvG_k!-WjP7=|;9V7Q23EyFs7^$Z&rHZp8t*vznnVJpKnhV2ad7uTV9MgzJSzU1S`U-fIKH@ zyr$ z2N2=`q`DgIcnv;l@tMSD9X_w1y}ydjYxw*HGqzJO`@R^TOYnICxG0PS&te>S7Nfwk z%5Hr2;IkK>tMR!8pU0*@5-agJ2A@^OpW!g=Bt9JcYg^gmd~YurbUD z&7q(jqXZ$a2IE*4-0g$AA~7q8!X6@XnmIGgoEBpjR!z7?wz^1<6_4t!1s3sy#iAGC zOMPgnGDF=rwKYjSD{1O@29Vpap!IdoGNNBAPT>?bdzvxEsl^Iqmrz!;=})(WaF+e8_)|&ak zM_^7egFiM9-h#OeIPkA3Y^*hyvysr-Y#rud? zES)-=PGucOs&pfh2`xLF>daXZXNff!YSP0t2E1IbNL^}KiIb~yVEJgHtgH= z&_f-4eH{;dx7XX>|6TQ=@zn*bcEd5f$E@;JmzURht6b%7+HPy4DmG7C;PG5AvH!fdv8Ywcn%7lUu4`UCxoB)r_sOPZ z*X`VS{pe}i4BaCw`$tDlZ9Znu(6g%n9Af%h^Cag{^CE#cC-GGC5^u&VkvN(^ok95t z;1iVlxd!HjHwD5Y{~Fc2q!TWpQ3ERT?p*M00qlJN&dqRa{Do_N^xxk*=ggD$?K>G4 zyZ!8@@89k{>#T2_g&Yvq&($brs72)1tehv?2I0AF5Z<7rTxvvUYT0wJ;40BbN9y5} zcA)kxwx7L8JQ0bfsBlNrM8^Qa~CoD@YDu5;UNHf8DtqT^CFqe~x8z zL4I$|z+_?3+TNzIA{ESN-2Y##t=F!;Vcq&0*6iP4aJ1zRFHY+!pQs#gtiQO=S6|1X zzIaS>qOy!;NJz7ls%+RHe(o3^cIZtG^&$QG^mMUos!}XZPuH&o2hp$9pK*J1aDPmk zn)0>AW0|jnHEJf@RYa{3?LxT~>1ZqsK$`|A3P1gxrUIXZyP^;tHn-3Gts2Mb(TK%( zj96vFziAzf%*6C1-ZcFb^ECwcFqT6SABORp_&o-yKMumvom7M;X?1H5oe20-5+38D zSfo+?NII73-!VRYx`1vy^x+NK;*U_v(|<+i42}Ap3>`cDb1rQYY7_Tr5|5}J?QRz1 zF0huWEwgd5g03BFXzmy;Uu&w{)?pYJSurdg*Gu~M)KlxB_{+HT6~q-t?Q=O7gkQ(G zmUxrM@pD(jJ%>`>In7WCgiSMA#)n1SvHBY#XTxXXsKG16G5W7`G@7+rc&%$}GlX;dk=8p$@ z5+6k;^83;Oy#U^-9AZ34^clQCOMUBInYw01>MU2BF)`FgHJfH0-}~p6_YOb06E~ku zU8=61s#LS4o~Ms5$7dtXLe8|MF%Bq9QiSBIk=j?^` zsVT$#5cN|Rs#}r4)l*j-@T4a$8)@i8W>`|(21yYG%Sy1$z^aLzq`Xhalky<8uf4Fh z_rkT41SdN;l$USl>>%h<8Ah+)x%0YZ-sV$BNB6f#)qzSu(&#qkMwgEpsa$G_r?FY$ zO*qM(xFPW*?Ib?Tr=QIY9|6nrOnBB{ReP~+WE?$_tXm|Jqv6_fp{!!32)HS zY%{qfp3Bg&xJ%9_Q$vj4)MCtkgE?h|cn$oy42C0^wr$-7-CY;1^X#>YgZgcvR=*E| zcErBd)3@GLx}mRky|Z+kX~p%&Zn=J{bE4PA!VrO_eo+Q;u}=cJPabmQ>Mx5OjWxAR zzCO2#TkD9gwJO|Ni2tj&?@Bzap!oYPa)kCG@m8#Lkc4xi)pvkXMSiL6)0)tq?9h>< zY7WJOM`P+;)?}5(Vb8z`ZH7@}QGZ2AYi7#Qp@C!aDmHfXZfjgHYRKz!HTI@>x|VIo zuis{>J+|H8>dabPl9A@jvsg;nUDadGs>udJUQ`sSym%Y(Dq*mV7W#K zOLKz>E_noIEua?&ov?vJVqEZ6k*^rem==REg^0b+LD3>NPL*3J%M8Jk^)Shl#ciPiacL89i?XPkEI1aOECOGaq`~*N|qYqQuyt z!5Awdh9ks^_xA3657bDDoYCT_?;Q$geY5o@vPj9Xay_V#tp!|`1Dp|+lb$|ne87O& z+xh*8tF=(=#v6MF2YY$c?3|3%e}_7oJtnN@Ql8~2<>y=)NKAD-OAv`SE0;(-@{9CQ zN{P2BzehaGq5NKWx=Uy7$QWr-)gO1w$& z=~6_QXC@LKhSpE~mf?xt5+Cl9)^q7ZV4Ru>Pkmm7x4;I=_~`<1kV_=-i?Qxc^)KmA z8cJHI7rX70K1sPj(KQ6`;~2S{K!`@WcY6&++v3dWmAd*<-| zS+)#s#SN`o7N$eIlK608@r5V)#1o0PD0ebG7PbF%?F8Vd)fu&PpUs8xa|z?670V`~ zI6SqMbjHW~!b^EH7jIMK>`|7B=x1DFUJwWOSznm5sku2`AGO(GQ3FVbU#D>TbYiO7wNc>mcmOJK;cj2@HTjd zaJt+k2`}45I&`-A@HWUF#xwsZyyUZutbd>nK8GZr*ZBCXoQ<0csJ@W@kOGXnzWf9K zBcum!y$?HrxlyeP^N5*?P29~)*Y^JKcZvTrWSaYb}DH}{%sO^w9`#;)Z%*Zw{_ zs#6GSakiT7PU*~Pb7ZB4<)mfiP(EdTNRzsW`9tIE4F2~%yg`dzF(1}^%zRi=5SB(_ zqHNH@*3B0-V*3pCXMwPmH4>QQhpW3tMK| zv2^XW#S7|IXXmwK-&}305Qn;st*YA8(Xz2hKP9xkrL<|$sO7kKMW&&rs-`cZqpiF# z-H_1PQkG-v9^bn4V)tM{r<&PZoET>;OtR;-HJ|MDp48HC(z1l1;o@v#+n8wSY41Yo z!K#{SM{A3QWF?KxZnT-57H&8GNimt}eHJv)e6p*lx3{6VH8Zm% zqBze3GfA4O`J|ztlbSsn$Hq4lj?`8!!-PO^n^3^9q*?OOZ>Oa8=`+-)bRJt>eQamV zMD@avg`H&`0|Ompop`LCh>%6d8>lk4DmILdZ>X*|R4py?*OJ1z`|Z9K_jsW86qQ;W z;SHL3qYRw^uNP_q5}UAVhQ>@-lP~NC2um$aQV!=kCuN`0g18n~d!S(s)5M@zF$yOl zTGp18t!;6Q#Cf~5xKVpyLwb5cVe8;vgydF!jy_fC$t(60Evv2_DcmqV7D)a3ED3(W z<%&`bfpSS}w!|;NUF>19U8-s7Q?L_8Voe0|_85DnRihc0J6W@6fvGFcypTm%vB==N z@uDRDn3{bnV<%4U&v?IMOLg^@4)?P9^wYO=^!In57Szc4&Gq`Zr(Ww_&>7Zq()T9x z4{LYzd3M$ob`9H4ImfenMbGH?(9pO~9)+T=$wx5Qaxh=37b!<=*7LVopNt8`O*L7t zmB`uM+5H@VvOjtkGsG-K^r5tg>Oz58mXjqQb!F>l-8;AoI z=nJLH1D45FDG0c!qlpBn14{`<$^)@EuP7mIpkXk^WLgv%9~K{8yzXecdMe+Z>Pi?7 zTN|GdWilC!<>65e&Cfo6YY$bQ4dgp^NS|AC!e?t>i-$`JDUxh4Qgn%EUv4&3i~S)3 zEv1c-B#`vq8+t2i`_$x?lf2%On@Qjd4;AG=;OKXDcR+foWEmA}(5iiFxtJq6Ej%06 zpn9L)-0tm7Nx594sf|?~o$1L_4~RpZopPL80WaKS$SG)H!IoiIp@PgZunLl)Sc5<* zW64S#Fri|+Hhd(arl!3o##`F7p{jCSWBIaZPx<<;<^drxTMAlx`mV}qEih!}RaOq? zmNf3_>fYH{>hS8(waW@c$-TwH+MMpfO?Wchl4*$YTEGe0f8x(4YJ& ztof+5RbT&=*h7A7iue%q8^?1IvwyV=HfJ73EM|{4EUc(Cx1uk{>n^YF#i;R&>L_30 z9IMiA5;Z-Yy`B04=*wY}4$4fH6{EIf`aBT^eeiFDXWd`oP16r52NAv(p{`@zJh{d|d!vVTk8s!+PBd=487ZAg$lI9^}#NNVb zPH)7#gmgf{${2R6iN1kfXe|P|DdK*PyLE44x~~Fn(86hTk+DAkC&Cewt)XPPG1x-$ z7N>e^+YfXmq^TKG&$d?jD2Pzzj-;@t!jFyNvPrDzcRmiQDcql#!@`M~r`>4rcyVFZ zlh05705e0qP$a#i|N4_H-$d?Ee`<=h4kde?b8SZbokKN(StRHL@K*T7_~((e~FZJvzgLLHso z-=Ana4NBRUBq?T`P*_+=TTV@%-D@q$uIW>w&stbmlUz1dPCcr)$=1^eT9QNPo1~kg z7SLiADe%Gx;7Otp9^>W~#^S!~4_Q-^p{>fTL7}N_%FwaPNIrYeHW3WnN0=y-+Hv!1vt=|nX-CSUW4tx{6&!(m>H=>!B=*+mI2`(tlNkb zsm^qeV%gzSXGocZmJ00)gOrD~N%~NkY4&1f4pFZs4ng7u@Wdg)8?+hy(9AteV#Bu0 z7dGOA87%Rh!jk>*Y?%UfLCw4;86jy|j+NN=k)PB6HaSiWIK`?WzfR(N{Vh}h*deQS%0*Y@SK6)%i9(Bkp5 z6f|XKG#^lJ*kP!u>D|}Sv9C9=Bt269m#=q>G&GDjWIOQ9C?L*|TF_(yiPF3MGN?c%MY@V&R<}GJ^bo+)ii#{V&`V^QsC2%5h@RzJ?Pngc;zAv;Gh{(nQ+cT~+qDGUT5GQJBvm-{ zdwe~skJ=NhaiZNU+DSE4g^t}vlGKMaM-kSA{)Q9+SSw7DJa-a*LMi8HJ%NQ4@DKI4FB{@AGw`BNQ7xF6p1i`LxiJbwvzjs^LUu`nzUQx_(<;~GK=aa2vsU6QTd~)tmn8nv!Iw%&y)ITTF{6iNWY41Z}Fz4b?Z-x!p2tBFm*U1u~TZOn&JwIiS?1WaYN_C z*MBV>vuGS@Zib#h>3>`O5KmFG$|BrOqc%4e_GEAA;7m@`?8hFPdUh5qsss0Q29*SL z0NXukCZSGZO|!7p*?qRo2TCSnz5mcC`%gDLO_LE$fI(+VA|9|2oHUkZ80+R4A#Wf9EpVn>FCnjo#@SRp4#Wh=b@XRFRWYt2vZS#{C3gh{A}4(W&W_n&^6O2U#h8Y>J6dtJEQ zHd$y)z1GzvE-}U=-8cT-OU9pxs&*adG{=;v3%Eo#9;XHbeC66`cyvr{5{Qr~gPS^@?4c zUj3X-q9DUk-WUV5YZSK?{(=GBN(J`8fF9?tR+dm)H%quyP#!OgK5SI8RDTIyA zMPrN$p*3LejObonT(r8oY7nNokcjZ&_GEWmVq%@!)ts8r9MQe6t8-sZL3ZcV zJA1>R*?TI+ic6Q3yO+62#>$a9(k3+?Gi!Yu{T1g<;)zRy2S?XZS>|HR+{Wi(O+i@V zsH70a8vER^5qoFo5=UiN%O;5}P_vk$GH;7TTTtGJqY@vZ{8td3I4Y^c4pPe>NB(a? z%h%-mdfZE%Gbju2*z%9nb^+PNZOO%}8-zy~#gC7Ik0a%#0X^h)nu~FG%*8B(jX~T` zgRn_&ntXhU<$2pp%)RuL{!%K8m9|=&@<1Tpq3Q$BmG6_GH_TY>{8*!g&^|jKSzu^R z2)!Tqwkh{8l`j0ciScqiZc9O$bZ4o++A%^)Z2AL~lX=7XX8ZoISsEyy=6SZSbYbpv zEpf#+ucvo2^LiWn&M7sT*Td5usmb}btzCn z_86t8JVq%aMZ%}CC4=yG<$0W+KsgE*R|MYE{(&s`3{t!|an=IGgLb5T3)-2~X^hxG zosai8GYBUE?ZgUf290hp^T|w10D@M*!_UNX2iK2Gc{%*%I%#ige&jt_BFv^AZ)D7;#zk?AQ~N`6&drZw6SZ;pma zA@gz~@)AySc9|Ecx(3fnpXwbS@9h~M@5ymEa&jFGv3J7bnONE9nP{jibyiiEIIF0< zMDXk2ssVk?zpsM);=<53K%Hz_lJ?C00J5Ww58t@w^wanFoa2VYb1=fZwQJql9p1)< zre+cA^@29~BJI%t?M0w1y;Ms<8>1L|{=@P7S$!Wo&Zo}vg)ZeDy@6^3qxi>I`)2P0 z@wRphVqv->@z#D3^KAv6e%X>PPG@e@#l{}q28SooriNGlVwDv0TC!#M&JnutbO<2Oo-OMcS}P!&mYy_)}!lu6q3n{R)za{%7#H1S`Lz zXdlJ1?bsN0j7FDLPFXPk&1^I<7>sV8yIfoEi5=Rq(8>PcHO{`=&d&6vf~B3!!^Tl# z^RZ2x+v~GB-J)j5(Rz}}Ia+COH+Iw%RV4~BB;v{n3d>6J3?)5|!a;X_lOxO=Ue@od zohU<&mVzJHN<#ILW-|*c0m2VjJ#$#U{?uVHaRT}Iq73l)MZIuX?RzpCg(OQ|FnwnnOI*TS+Vh~MuRt8bJb96;xQ2bL* zMa@u+ZRIvayTiz{it9zA3i?d{(Q%@0>g{2pXgLnbAL?SJCVaKMm0R>~UyGh*Zw@Gt z>i0ksvnKehU?BnR&c+SS)>OG9Nh=U{4(o4aht@WFv(wZZxEb%z)0#YzB6(V)M>Pl9 z8FmQZHzX+DlaB-ZkMWzv2-)LSBPApE97@DIt{R7Rj0HqB(C^TV5NC*KAr0<8`m_rW?_giFkmHm<7o={et{MK|`y>R$hNnI~@WvYlyrhUg@W721 zJjn*NBE-h{mu7auLI^vN3(M&pm15`|mgP zWi{sg4P-*7t!b6MJor|xq*oJVf&Rvaht(JL$)#_jzNRWU3kZ+62Fky7VNhI_-u_Zh zd=hJZI$G86jW-^CG(as-pkSJiyx*atwi zBXWke#rWN-F>v&4t3G|t^f3EX)38yxs%7mCtQ37jLkHIdxcND!8%1)Ga*dRaq@`Xv zJax=mdT7`4(WJ5Ahch&31hLOYv;F?zITYdc>YbZO4X4Z~A>`LU_TdbFPnhY)^X7L> z=N4DbPH9$WKe7EK zhc$Wx+970S1?0f(kOQf6<}z_s+pH~5ZfB&b!L3p3TYFJ&??r2e_Ipj^k+sVzIyRP< zZ|oS}5jSq~?q94wDqN<~>vrtAZnSQ6NSW1^YWI8?;*juJp)4%E&E5XgCeiL!n?a} z^txR;t{X*yJa1fylHLZ68kE8il1{WHXwpuER#*tPFryYW{UVRszCAph zu8GA`)3BS3J_9232cJI+9H%41J5NWJA5+EszH+o=n4GA+`i1_^-`q=`AB3p)W4F~0 zP4^f6WL%7PmGT?cy?;G z7?#0Kr-t7ob)9PG@QrZpyn5pM9ero)Mi(Y0Pj>Chi=FITyFA3{{br^}9F)$26_E=%U z!n~dICL`Aj3{*CFPE+=yw#U|G+?iPyvt#ATh{V{7V-pum+_`k=)00mhhmZanRTF8Y zMMb6hA3sTpk5BtVoS~lx1)@&BSAI|&jDT|NM!$B@>?H<^DDE26u`kep54`Zg0l)6cjoqgc zbC24nVtTx79nT2^u*4d)a*SSdv3dljoU>bd}8x>qC4Cu7jD~;dMA}8ku@E;aC5z?qxu-eWVq_6*I zXhrC^JpcQWjxwf}>3{m7{_rJ26FFr~m^_(%x~v6xr&%6!S@KIqj?b1QpxU0l+ODT_uv z6>1o4=_J9^c%+cq=UnpZ$YUHlFN|;QZSEOczwFv;3(Lz3ul;&Sb#=+t)#$!vXLU$( zWlMi&ZhDrZGuM`GhhzeMaX;uAh&D7}x7j0h>bK{p(Vgjf9F6%h1X-oweE=>lVqZ-7 z8zAPl)gR2*9c*UO8a<-p!z+goT`w1hUWK7ddYrw1G&Is5s2>|;O4Xv|V@~Y#&d%3; z3F5pF^t^9yiRCCG_YTTApbbU`8@y*Q_W%`qXBVd0j74IV_rBb)uC_v`{Pj++)md09 z)?+#6kp6so(+{3|?m%bffj|8TWucmfXCP`Gw#dNm=U{J;w#i_xLcb3p{G7MxC?$HE zmd~Y-=b%8=IWfM`SO*v*@SKM4!Z)|S`KtHTH@Cj2U-#11m-J^}+WwMQsDDg;PxLJo zN~nJf?w4St;Z>|OV1*U!F0j|SlnoJa)Xvxr5m(=F7C7-n1`a z$rh)3|D0y5ukvQv#BQ$pM>{$xCiS3wh>0--HHFPwnC8>&YtOE0uHNZAZ^QX=1rSko z>))i0ECEgwrxwdr4X$IXSZyhIgc|CBYvCE$d^>FZGVUgF?Wv zU_-~c+WR>-gF|{ba}O;Yej%zsz_#e4L7veD?qPDBkk&Yv2F*`x=6CKEzqy;%yCntR zx*#aPZVU=@SLv`)gffty#t=pxnv21(J&)}m;E5cAQi}TiliJ!&>K`CDFuZo{@X*?| zj-iCwEp6?`)?ycE+m>4Ia7V{5ee@}9{O~oDHu?vxY9cS0-~d_yQf>F~&^HeIEC$5R zH1UD=$Gi0w@8@29IXWl0DCz+sgI8{;&K4r>QS1f(6OrFtIDV|R-c{6^ zyX~BF+VSrkHTwRg{hp;=1qFqL#DBz=rH^DwAtf{q4RyD7>dZNGhzql5LEl!Fan6|* z$$4!aTGiJN%%UV4YA`Ld6VTEg1}!^ICjKE>iUH>w)BFzk)h0O&BX&c;tBjfn&)(-r z$>SXmR}RifjC)ondItJfQ08U7V*eHcd&tOD$c4PVi{3zT*S9^|YV$iRlhF}YR6Di| z`~BC(PKp_g>U7H;5mBQtCpEtHmd}lC!+3cO?}#WHTlXGh&XFnjCh9(UZew{a?RMa# zh#NgI7PQMc`};fHol&E)Cywzpj8$(%tQ#w5^UKH%#OZ9*;@?~&G&a-KThkBr%iH^+Zkxx^ zk1FMr&d&Gd_xF=+9QQIrV{U`K?!*Qj)P<9*aW(!g^~#US0w6S`BFv&)T)kZyPw$^O;vM$lORaH-WF6-iQciOP1T? z@RnE9^<0`0vpCAz)TDo3$MocxsO*yX;?Y|8aJsv@;KKRK1D(-naUXx&;JKF+Myr-sLJTDf^UW>#SeEt{gpUZjGre&#irD z4fyBQcG%@@@JpicsBm3$L&gmm4bkgX_J^lf_s6A#_g_Ce@z~^JtMSnvQMG5XGBdND z`BA*t9RDNQ75vWg^bZA~k%7D|lX*^E4&5v;r*_IYHM#T2IrY&hzcVB@H-2&BlB|Lx zYos+NMvJk>MyI-plj`FW^6#CeRXjBm6)n`TMdp|VLd3=lE{YC`j*AQvBH{h{8;bPz zae+ISL6f${Mh7{Ae&*iM%eTjRE39GZg^_3TVBT0++nJfEp9VQz2s!TbNfjCc0&+Za z9^Fm-qxbOPdGt4u=QEnhEFF&e%SILIGWVBxXVKz!-cx65J+tW%W$t$yaXRfBI&j_P zKdNc*j#rQLX&*$vKU$Fnf}TWUzx0Sg&t@JuHBymZ{?+K^myiAmgHyCVD1I>Y&VdIX zq_*o1Pg*&+YDEfmIlZP>$BMc~{1G!dJ2QhL<8BnBRl#}njqEhT_WLo3SG`jo1^F^@ zX@mWlcqCMpa{MouU2EQ}W{vYq>xi))(hQ>qOEUvWGyEQhB!piCw2=-xNr_B*f_PWd zzh-ZZFBfmqJ_B(VQZ;DsAqJ;&(90rOqQ;Q^#WSFz$kOHFYY)uRX}(a5B3-HXQM%H9 zz!K!&L;5A=wFo7>Q|LD=gTCKKdS-MX=U>Uw0=hNL@Uc3MekMkuK(RR zP*k?AvtwOZ(Ljke(YvvB;Ea{d(W|!9Zp1II=scx&>B)_aCok%rnDMET8rA<-|n@gr|53)-D;Vq zkyby`vpU85dZhGM#i|(W4%y&K>5LZQwgw;8GUEs3bX)9ML8qwEQF1vwyXtcXYeZRl zX4S@K$4FN~dCKa7{03WoQyRvN?%dpNXL?t2eA(iGRi?6uT4#S*xH&AZIo~~4n2?v) zl3BF4FtxxPk8|rqdTnk_tt~z;u`Rg}45QWm_i%>-ozygE&nSjYpMO8iP08#nx`t_O zaagV}j<3lds;wEyUqg!-JFXuayKW~I6ukfSjq&|WP5Z~c0cR#&4-~YTNscTx6i>nh; z>k7M;hL1*keP_pdcg9fX%GH|qM%VFM$`?CIGBVw%z3qneCzUR*DeG&tJJ;u+tw?_W zCsKjIg{(jFz%!nFbJl!X+f0f^7f-_tB7gU(q00=*nhJW0R`lRt%)z#{);8m4*a;ik z*Ow3WFP&`KZQ43wXedvpC~9l;mejZ_$_fph)rG@Vjr~#4VX)+{#NHrPNd|B+KNg|2 zy3$;{9v>OeZxrIPUh$%y?Y-z*YlW49q#2 zUkO63iSn*v>q18tEN$uNipP5o}EOlGk+P2mrpOhkTDn%*qw^{DWzB50AJtm~DjlYe=iE_{Os-%WZeG}^~ zqY+hABWtzjaCg76m5pSr%d(pDi@F{5c2mcBYez0Su4#GKg4~h=mxg52WMbP$@Aew+ zvcBSWJIop|kD=@&c_L7Dn$=Uw0Mjgys^!+|?S1;B_+;76vMs-Ve9YTB`S5S{Qjev+ zR*IY_VF!`RpLeVq%u;EM(!Mfl|4K}dmMaRn_cV=nt2JE}lPxXl$~$Y-p0TFgJ$=gu zmyLLr_cgY+HaE4kn~GMn^sJ4JHTN`@k2swp<&8b&*yy!AEh~z=4NbLOUA0XOVtGY{ zv%1<@fd#V}z9#$l>T83vtP!-M0$Mkg5@)tl@Jhc(9oZT?7ExciY(iKP*0;25tf}AH zzHED0V*Q5t;?6vKdr5I?mc7}uw9%N6eg2gpO&zt{I>FF^Z>?E&$<|uYmeuYo?s1UG zu_GIL2u2Al5}XQ$u9QgUN#Tes*#*$o-Ra00M1VArI!mk?oxsWRoE&5zl@7KI4Yjom z4Yw|iJvqGK1cRZ#u{gH4`^?FTipev(d(NQmGcMh{V#TISD^_f-HvcNEptZfxloi+3 z8mY%1Oi#BA)7^tO;Eg{&3rP}XLR`>#xy2nbH{lB#i}M}vDuEOZEhwiV{=S#R(DZJZA*ogVM|;blMoZ06kl5V^by&bDRB-?H}G*E!pA3u0+|96 zeD(myEMxMK`MavRKcghoR$o`yXsB1yQc{!C6B82hvh11JHnm<|Qe8MFmzUPL(@G=4 zveFBysvRM*Ny*lP#TB-s#I)piEu|#!nj^A`e&w&7FwEd!pU%Vp@1n_@#c6kA%ln+h z@q@;)vfA5!vSo{DPSOWQE8qRdS$Y2X`aMUcGQ*K%1>!Q$9*u6KWyDk^hz}Uu=O+4{ zhMwx$czZaQq4Hec_H76IBw$_z*M@Fuxd@0)ENX^W$#%sl{Ba1y# z>IAHWR|e;Z^J10fP*C@Dr)Oc%lKC^v&DeEygT0k01>steJvqft8(vvm-jd>J$iz}X zY=$*EJNJlg)85e16dzqyZLu1PifY!@jEq-0GUL;uvokUsFCM|T8NNl(2%5=)5^@p_ z2}dw#V|_}wT|fM@Oy?5k9IhN}*|V|4QCYNU$6t>~B1m3Xv3^oWejl=a0xcF?fEbg! zpvgTiT-ez|R6ZZkO1{_DnP*#)T3=h!kh&xzx2rWXH#ajYCnqZ@B_#=;v^g2Pw8~|3 zM}^rl3d_n0GwflJSwX%1x)}EW4 z9dEOU+=#iA(8-ZEQRGb^(w{Hh9v?w3EGoh}V0Bq^d{aw9J33@Wc654trUTN^uSL_E zE2N_vYwPnHQv7<-#UgW1e_{2!3iYTOGxheyFVw2pr$os0e6o_Dqr*|fuUlg`%!^XJ zh9SVOU}FR%y{HJ>|MGpjj{aSBb-VfpcGcGI8W_Sq@9^+k9sipL4t$d|d{sFPina7n zJ2EfFi8EjSZY!z!L3u$7sY1j8Qbu zr}yRfO|u1qsUejoDw?C_y7{PZWdr{`>y`j(>q95J9}Dz}N# zfq{L2F`y|*ISiIoWEjLMV9bCIgISFz6JJBDL4PcSsbUN!9Fh(&og8b(PY1E$Ijvz} zeu31J5vHEQU`=2DIoB4)!pTRN=YPe1aL1Q4b8+@j8!_^cjl8c^A6E^;7vhR&;`0p* z#1($uBue=`c*5_iL;?Q>NANpLG>I~@#SlL@e3hu;-{6MtcPEDjFF1aqfGro{!3q3M zM*8*q9(*7!;5WkmQ@Nl%epD{t{07)Z#SXM4O;K#<$A`ol9zBk%9F${Z>l4~dK^(zd zfRzGvEy(D8@qoXLz?c5W_XEE7+0&nB;2`3IgB+jiS4MR}HOTm&e`ucggW{sV`_DK& zIL`6AIsRZ!`qT5o_s+c6LgsnDH0XWVJoJ}}kNmA!YXWbwRMaS^zl_sgs%nAqf5Puk zqx>FH0p(jNZuiB%7(LJK>v_wFqqz0yHj(P*0%ay z;e5LU4cXs^?cjOm~CS8=|XX__XxNP)YYMHQG#?U-lnqX#oCBOh< zfh)$MTt{h4To`6S8KL!tw))EEQb$hml6yo`Zf$9NQaGkOixX`bT1883Ns-$cXUd5s z8&53C2x&nldywOvZ%n7z&XLv^%sioy0e-KvdWl-E+Ojk4S$PQwiRsCyDQRlGp|P^A z-j-UD(J!hJOH#D>Jo!#iyKR< zu)5ftu3!A*_S&+tTegU%QRheRR*qhLKJ$X*7FlbM)1ZuEu88Fri_Petiu|CW4J^Pc zBPR{>jfk4Wrw@il*yC%fdqkD1Sc|u2Wu`hT(Jxi5iHz(nuWO~;%$91bW|Fe(H?897Nb3qwoiP3I_z7vW4%n)Pav11_XpVze%RWTo3SLd zp{BMzb%`ynvyIexQty4Ly{LjNUmiK5%SYkvjCpkVBlz{zbiywi3%_g>AWvY&!gLk) z|H__|W?86Wr%UaE@90+xxBkdhQKtV=RQLAk?}>7H)_+NLi&%z75R3O{k@x086?_iO z2t@hpCc~)1A48aWp$2oTkR3}H1K+S816~b@&nseXm;sO^rcc;l<+KcHM#FHZQ5)I*m~GW$ z_G_&!mwy+Qn%Mx5AEVd?tQFCj?&~@9lU&V1aw))U^#6ziR zr!RCw(zDSd*;LGODrm6*f{HTmMt-S1C$gocvk!-y*Kh7u z{$Hg{d-pb#Ha3+u@7>#6+9dX+Pu5SSZ`#CP8>vnlA^}q3CA27bBE?|c*@=&%ZuwYc z-T0_TID~&n2<{bA#GhF|^4}AN71m65nlTjL8ou8+z5R6kfe7)l2>m!b_R@%V_r7P*TIL#7hs}635Ko(rLIa7aW^@ zRdNgyhntmMXidI-{L|??O51PZu-<6ZZR;uUeCpb*HC{(TzH!SuIiZ%$bbihhd&-g%p9O6WQo)Kl|*iQ|jxsJo$$gpLq7^P0wsb z$f)UylvjNr;kD!{g(H(CcC@Rm{*w`_i9)6>sB@!}sy#^g_*D|REKjn`J>WnI|C zLf3ZDUWY6LPC+&pEl}P_Be00tzOnd%w6ucwvA*)YrpAK8hNixqE4v5tYElPNYw`xW zSN3YTuJNwHa1l1#HC~#l5+|dO%7{$GYIDUgb+-$mkPLKCVwrlJ(?ScANUyEj)7Vg0 z(AelH_l(NqMtAnAxuxS>!(k$Puxs3vtM$%GmC7;>{&XW1NIRTr1ue5eQ+W z`bjf8&N@p(*FF2nYfm5kI@7@3{ZXxwa^i;Hwax4h1uwp-_VrHDX^D>MZ{wEo*XgY= zr=c8TRDbG4@%q${dR0L^1m*ZW%8{j>iI!>vyxu3>BtDd6YbfVlNSMKe(60(Ei|&x+ zmSx%^#Z3``G5SY+J8{*%N9TKupIq1ZexB! zhL+{E!boPpt%v%P99+CH^}~bWN7;Ix41ce1G5;~<`f5Nf8M?7e+eMy0XVsVD-(|8w zZdv>28vH-}ETU5aS`Hbe%ec z`kcV+xf%}0L)cpkS~TrJFDtWJrN%FzX1KKiFu~SZEqHqQ0^fbCj~J`XkzdpX)S(aMO$;+dtKoeg4!iEz+-&@o3DOnG^9G!MCSvp1INIFZ;5K zTpkR4cV@!FSg&W!PX~USkn27P zyWD7J^hMfo^yX%qmY{_4auBL|X5zrquc4=50fuL9Jbi=pf_k5SQAXWc zvZZ$C)l2L5T(xTZ4dX>#cR`gF6;aw~tLo2nP1L)(!orLlCJ`DR@2qS+Yt_KlSGihF zUs1Nf@$-_p6st2gzb3V~*?EnWV#W=qTk#XUK;iZq-ES=x#oLu)l7XyIu}9__Qn?33pJw8l=Y znxqJP7U;AuVg0{xYWLH^A&(h51!iq81uS+HuRByAb%TG-6#7DoF z*;-gqEq27`I1)0lasjI<7S%KKUu}-hd&Y9vc9r%L-Q-1W>Hc+R*M_M z;3{~+6ch}c{y2RP_BB6^^0jjb{bn|*4?CAs8k@MlKHC_puY5j>G(OSc<3ZIIClZ_1 zRD>>F&{|(mYHjFi9?U8#C@3f$uc;m@Hx4gouSh9MbanKO!VZ<2UA8>6&|T7%wIn|= zsja@S--+WnqtoM33QSSi>;{ zyR=i2oIlQ^aQ^VCyYeckR##Q6s;pd9g@-1QTa=gLSa8yD$6cL(<~=8u1$1K7SIs3{ zYQ9<)mmrG`m3dz|e+3R-<{-<*#X1dVAwmC@-lMP%2W{ z>{Pv}`ew1Duu?3j6zjxQ9EFyfu zVU}OpBYEw4f&aGRlJxYF5^-5>TYi3fPELD%ep_y5VP;lQQC4OlXEsuIsJQb8<7z-j2)1IYe-rVC2mKeYK04?0FzoXRx|8*~ zBaaeOp^vm-hsthP+7r+sX<7-NUWT)Ni0)tAo}B!{A13Qh{_6IWlpp>urA>4eCttF- zc=6S*2A;s5{OP+i8_L1Al!xLnJ8Cm&M!IPl6H=r2u71AQJ|=SY6Z^!O=YD#7GtR@@ z{({h^ev`3NT%aG`aXZyUDRPy8T=A(sGzX=2Xr&n~W{Tfl>l#g3=30CI#NQ@_Lv-p- zh$8*AS4Bc`vHll|4ZQ^Sv(T9wu)10ia~|m>hgcF_zpZPn3;p5?X4IFblE>w}6-V4M zgLy%|(yunDlW5s=?t~p)|YRsNnQ5j4)&`vN7pQUe5Evdb$sxm*yzk;lX=mq z?1Jr?iw_n{lS|`^GNV$W0s@z;&qP5djEGdO`6E^-8oM2SH(z`W`j>gN93o-JDk0T` zBo@i&KbAheE_p%au9eaipD&tTv*sl+J0%Z0Wk1FcM5?aAdJ>4@yG9gr7jG#S z_^5FtXSFlp>&l~F)T)-36|4%{WBK~tRWq%pH(X})56&7$o~jWMb*Lzd91QIFLq6$tuEVrZ@c~Knl(uKy8n&0Vl6aMGcgEpvr*tH$S|8#BypZZ1x*U! zN0^h4&~wyv?L_YCxVY81Cr+$*b~)arTR~^Ib~0M0jnSe=V8qhY)PnH!iym1nzFPNG zMa5si!^ApLczGZ=7=rbQq(DdF8$e^h1Bm7zF`{$#!f``x6{lGfNU>^%URe?OS)jqb-CtYCpuItl>KSafk7b`1&gbTLY4^;g~ zqVnM}2^6rv6C`G94_D$9;w|}znvXdx_*Ro>ioQ!%;whm5MiTuNO^LT{Nz`V#0XJR3 zEk_=0q1ilImP9|5=lXtL9)5gB_$dBPBu^5RP1~6e!6%PZm@7BfIWmO9V$)iWo19!a zkZ;!veJ*>}F-|`=`|0PiBl#I^r{5MwLOcxwM-qL`l}(?cAFr%zz+61~L|DycM z=5x65A^90m(87hM;^Xlcm&4J6!WukFe>dvfW9P`T*oU~~6R-&x%_QQCJS^fQOD5o5 zv*zi|-&THm^RI=wBD=ECy9b*!tB4327lAp~jHV^{e|sH+?Y`JDSku$y7W(LrU;b&Chpx{CbTB6k%fmxmh{|X&u!eN-UkRWF;O0a ztm7Wmh-wGKYXR9YM}mr>-h?$ui2*AbbOOJI=ny$5l7bNWeKli!2L3NP9G|?SY|;Ak zkly4h9t_S^KoZ$^b$9m;!+xJD2FBxXJOY90wXi%?1(P2YIC z>YW31Rn~9P7QFdl=GSzmD})X3 zwj^p{PO1voQY+)CE7FQ0w^gl2FqK$6fV?4qB{lyn28)@vvv3SV4+cI6?+K{dykqX0 z0)9+?{jZ;X+t2F)h)-#f8ON z0lt!wlj-*#_=Brhh?JwB+_|NC$BybPJBtc)a|_A0t76`t5GF_}M#{+OB!}mWZV9!D z)a?A1NBI9`e_<*`pD{UT?pRJzMNNnXK_rNR!Rj$Tb)9yd5!|D{*hoit zV?12XFh6oWf%Q+Ljxoi|S+P~TAv%vUaF9~;h^u@(eatyPUoLQ^e@wq!NxN1@(^m>e zrXp#T!HmM!J}2@7hlF1D0R9Yb?8)AZLMx6bVS>a~DE4bXX&YKb7tF=JnLf7ORn8b) z=>_yQ58>3J=a|)8wPz?nK;OBCeg#%S}2liP&*T*3E0!KyvgF`WI?;7Au_Pg(B#}W{!~>=)^q6;(CN0a~(Z#oc_^9R|p;U zGV#@r1L}P?3&n@c(VWrp&5d~S5yZV5r#m-32XY8ceom;|Enqd02XRhh-=u%#Qqf;M zaUA6&p4bR+bq{Dgc%NiG5yt>dficJuIr=xQ=jl_4FVm%~n1z*2>#7sian1AKEK@;2|8=rH%FJOioXXVT#th$EyT5u9#4M@q$N|a@FUZ%fBf90ZU=I@7( zpQxd?(O+>r?|QA0-gf-BIHmylN#^h95jT8vd>(Q7&`-KPczMA_=(@+9yO`b1Ukc;7 zh@9xNp69Tyzz-OG+mwr=-zY%+f=lfd*D~Rwi1h+8^Q?Yj5J=BND4;LPyXWN=QeI^#QL>kn8H&W zFp^IMqm0-K*cww7`ga&*L3q#Dx?@WgS~OK-mX@^jDOo9Iz# z?moo2Tp>?l7MMgH&Kv!d=ZV*6n+Q+Z*+^(N(D8h}0Z%&TZ>nCXS-iOBg(}Zab>4xa zRU4i^kVlOEs-p+;$mrqW7TYJz$MB$kn|=^uRmqc^($hCRSyKEI`T5km9#*AReZIKl z$*R=UDm?W0D#T9cK?e?fb_hGs46Q5<_t9Cn^(&>;P#dW2)Ly)0{AudTn0q4en@c(2 zBEbS~NaA)axWpHJ#wVb}U!a9Xs0!hVbmHuf*`Fe>%$@y}{KP}KB*cWqjRcZm=?74X zU09euXQ=|@OHD3)MA#ygMe}{7QC=q1$=@-?8A7z-I@d??)vSb0)`jb|0dcMqtE9Rz zse*nxR2!;F(nY)WFExc`DUB8QY{1{>=~7O?tdhF6<7uNVoPLCrtdhING!Z&AFn&*} zmoHHnWzVChgov6c|<(stmGHnb!5yP;IzYlR$q5Pp@WOt!S(RjsW0V z1)Oc#U{#7P%1}xsYzz_hGevhY_2586Gbe6ER9u6BYV7>o@3#K-w>7{0?bhG@4l#wL zuJ>K<&;GZI+G$R}=MAe$;|E6CO6hh)pcEf9anm{ZDdKYt&W;(51KZ(|Pa#~0{@C#ZVi33xLQ z>nlKnzwe~ZF->TR=!PuIQBt^nXKk$jsRo32Yz04lYU%DBOm%H7Z01y^8gIY5hWtYC zcA?H=9e%=NK%c@JRlT17OuYJxK85E=@6~h>dLj009x4*SzD?b+d&kPP`n62;ks}8W zKJbiKv?w-}Jg{=dZl>wr!6T%HRAwilQksM)7TCG7m)cV4Tlc@ZVCS4S7Nj!8)IDZW zuwFjXD)?4nPEI2E4hRYgz&BGY{+gJRDg2JV&Guiz+#-H?SUR%`li*bLC`_mYMsvm( zgTbT=u)sr>gA74~K2U8mvDrx6*{{=R)xmKEOY~ZeDl~pEvJ1$po}u#@;>8g>O{uh+ zd1m!$Pk+>}@XldK4x<>cle)AZFOJ!{@zH%dNK3qn=U48t1n!B|PR)xuxO8~mj*Xso zWD0NwZ|M8ISGe8f+Zx)On{EfH+anD9{BT-L!d0~MnOA!$q5*D^FETK4NQAT)X zb6T`1&}23mgCh#lnMH|V$s#rIR@^(di8l+_VE5%AMr*Dw_Jx$pcvHmUSfhIO&DfXY zV#1e(B?T-DiBPMx!ppD8JiksC(y!6AvlRF`t`G|GiakI~jFEYdIWP+`F|RSkDx^*k zpGgv}#a)v?wLEiDC!JLKT&VzY57RwD6&*^93;xP#*YkQN-FaE;D+h5!b+Z`1PJfQh zA$ljlXaT=qMMymSXxX%-;ujSJ0>Ahd#j_w{bZmCX^h~D{4kB{;_9N?z_!dCdxprsP z9Gh~NIW*La@Bi!h$?Olc1crqLT0&=kq90(Q{zJfYAD-E^zBa-s6wf@Wj*78go)eC@ z2z!1PPqq~AOcA2Qk+Ve3Gu~`D`#U+scsKE!Q|vk2}XY>;9QyRG@Mzcs$tXZ$wt@*s>>zZ$C z{#(7HxtyN4s3RNxNVBjJ8($qW0(7H?;3*&uVXJd$f}}nJ!S5pv%$yTK5;- zhq?w`v#wV+sh8?a`e=QI{v(6Nu*tB`@RZ@-4c{^Rx1rTAY;XlU67ZXVHv>KnxDwD7 zFk+;PI^z-JkBqlX3e(f3Z2YnE9F6dTJcW^=Qw}YEQq#?$T=#Y$%{}b}7kUxif5OO}GDYPK;aOg{+ z4WZ4Uyk1nSXTuHQk>RD`Plf+`_;A#$cp>7yB3_C3YsB%03lX;?`XU^WvPe_p=OVupSs(d> z$X`VMA@aS*Gm$qUJ0tB;k|<+TOw_`tqNs|f9Z`=)Jr{K}>PJz(jQUg52T>QJTB7=+ zrlRH1fzff%nbF13>!bHXKNO_7O5Do0Epgw7`*z%q<9-?U_qY>r7vh@Z74bpwd*UCDeGBP}ECD``JS`$gJYX;;$C>Cx#6)0d_HTl(d6 zTe>?#laZcLm~lAcI~l*u_*2Hm85c8}Ge$C;3snoZE)q`u_)B|j?}gYv8?4K9r@T~xZXw7hgn z>AuppOFu2WQQB2HUdEM~%3{kh%Sy_s%J!5!UiRg(y0RC`ep>cw*#z1 zxcb=Y?$tBpDdh#_Ys$Bmf1~`x@?Vtysl0zp(wgVjbgr?lW!4(jMy*}6wsh^LwFlR} zvG&~BzKUfPKdgAI;=_u|756G8*QwVwe{wXV66snk|RR<5ml zr1Hy^M=M{ie7Ev)WzTx$`q=e**1x&_()xiaMb*Np6B{ZwRBmK9etY8|H?7-re)H-P$=$2n>8Lv*R-ckLP>eE{@w!Xa8z3s_uzuV^6p1b{r+uz@Q zb$jOyc1Q7!>K$L(@n1Xsw&TW*nVrEq<9F8V{MybR?4oyN?b^8Osa-$Z_4h|Y9@+TF zN4uZd{o?LF?Y^*kc#m$+!aeKvJiX@^doJz`-Me(}p1m*ay|#C3U%OVRe&0{_ z{dHf%zMlP({Zadu?62Pc%>Ezje{=uw{oM!7ALuwRa=>{|anO7)_2BY@I}bi{@W{a* z9{kP0w-0`D@W#Q>L)t?*hYlZl<M{)cQYe_wbAp8dTOQ|KQe|${auATZ=a*sOA*K^U)R9|08o!aGk^ig-j>Y6?B zY^sK@m;C1n@x`}U2-D~&hs zv!|z_2WgV#sh)<09v41PJq^?~zE0_cg*=Y0=_w~~ICJJq^B7|?nOa&}M!4|Y+}ygj zwzi;{#fujguU=cR20vr9RdoA>3m5LuRaN?aeCX9zQ3*hV*DT1Dl9^E_?cxokrKJlj zTyJl0U|`@(&(-(ef8VoXh>xlS*@xR(?*<1shug25KY#v8`>-oG_-<=^ zFV(@nV4R+D2O@bQK}U_;I(P0|7mb$;)khh1lIiJbx5|>Vw5Z|Ah$Xq|vBw_Um}<72 zJH0qBEt1OSd5POaIh|Icy}9Y!v17+R>7aramzS4kgoml=`UiF{i>}0-JCZ$r=LUQR zRNNzO07{pmN$IYLm(hD`k z(Q&@rE{@e7REM!5c2_3#Y*VQO8?2$Ht(MKb7j%Y~wq;h~zsOpa>`>3%^l=L*)#e$^ z-N^Z)F+UU<_)uuH7y7Xu%t|k`*$-6Zg--f`I=s-S`=H`Z2qw^4#z{ra-wBMjrPJGz z)Mwm`wO$Z=_GF`t)kh`a3kgzVw;LK{oJ7JphKGiRY!fba+Tq4QiJ|N~QVL}4I3;%+ zvQbG4IT&W0g00hnJxExVrfIp(sPF2kTX5@{XK|MtIeiyjQ=y6Z8xKA{IVA~7N?W#m z{ra-(q@*wvg(K8Pt>MkLZ%?IQ+vHnZwmTnV=X`W~WMs@~Xa7TrN`FLU=#ku^au+xQUe3g(MPmxZ7C_Lsw$Q6FBJsXv14v3KEA2Rb4E4* z3rue+X?Tjo)Tl}Oz2>`Zp~i9hP&1}?dth*a)dbk>ZEaGyL=hmPx^SYW9F$yYHA~sC zi3m&`nae$w!4s~I1qZjc^K5o$wz)n@qo6S_Mi(5PQ?jD*#$;&WZt#YkizB&~^Ou5x zR;)1Ug2TeiR58!f&Y2@{ly`Mp#iTFUDMKcxuwb&a)nMS+{_%;K2l<2x!w^r9s(AjM zHF=??2G&E36yp`qp`?)$+ z855(dH?*}?RW0av|NYd|_uubW0I!f14`}1#wRNnmx!LByCj~zE#{}6)H_=Fs@7B@_ zALMLWU>Dc4MLWBu3be$X2!%t4-Y@gdbEHQqlYidVT3ol&)Ei{o3aKaOuiF$_dZbF` zEM_17Q$7@G_Cl}vY3uSr2mCfLESA>R){cHiH(ow7L%Z%_|FqT7(=+wPP*u4D+AArCy*>M&VSb>Y7#D7YDGgb{_&bel3Da1~F5U`V zi*oaH@=U#kjG%YtbJd-hSlbN%t>&o-o__1ny#9S>cYMR#l@w_v70<2=I6O2npm+Gp zC^_jJ43cn1X5h@3dO7J+6%#}0@CUlQd|ppeUO6$Mo8Qw70KH(T)6h;Uxe!>>p+G??!4FQ2VK!uO%iYY6P?|QKDCnB#r^2pFo z3UR$I72`z^8D;T} zcV=ds2_R!{?w>#lD|M=lTEWY)ZCiRj{j_KNh{ZRJ-rif6KK=Alqya6kh*P?QDTUOk z`k^u-#ygK0>+i1#S+5Vr!-gu^^|>(C>%|L)EG1jmy1X$`qo=Kl$m??f`VX=1(YXX zJ+AgsfvH%J)Ih5L>bbhqh%gl-pgJr zN96#sV}epCtaNw|4^@aLLgnRrz`1)=dHLdCs`pcf#ZP;Qh2o)18fK7&83YnLpsTB^ zcMz&pgN=)fjO1Vn+~w=^5~U#omH`Fmv{JCs0^8b*F>p4ehvT?bN!qYa+a<&*sM8PM zYiYzZDcEApd*{)cr=N86la78Y)6+dpAb0lQLoeyDN05DYd4u-GjT@b=K$se%qoYtp zwc6(`DpmL>u#bkTR59tK#~49C#_E7xs}G&m>RdAgy?moIlJB6F&-AX{^& zLWmh0Hi8$+9m=wlJ1|gPUcRz4C+E?vp;V8s9zD2Pn_Z7Gj2>4^RJ26W-P?T+U$@Sl zYiet~Z43-__hV_gsj#pxNvCK~OH^tFM>}0EyN%aQDT9N9sdi{j${1p}MYpvjrR5hD z6|E@CEm&Swvh*A@s4*;E_OT0+Bvth>3{_*GrWO z945xiTc!p(BjTd8R0p=yrR%r424Lm)^ixATZ=&6kW21M#I&ThBoX!$t)~U79I@7dM zt}+sS79w|#4h#+qjZIFu>N6vC?y2d6`(Y)jhG3}ltC2?Na5y9(DTNgqs(J=yEGcCN z4jkB79GkU#&6+hUGQpRvCQhY|TD)@Q%Eibo7;e6Nsqt>VZQ5#@9_j9EJ_S?w`k+H< zjEIR24b*Y-WQ`8P6sg6nm`|+;KTzT?Bh<1ISS>=@R?O1Mr-MZLY3Ji#3bAFVujMM> zTm_u55{YD>zqhyLgHNF}wRV7zy))P^BY(Er149O`VrNmea0d>J>dn*g7stUpew7>Uff4gYLd_>ef>C+%|9NjkCrI_q!%>osZ$E;Mv4h)!0m8h`?pq8d1zo0}3; ztCDCbEvSHhB@fC;hv;&oJ>82psDbASeZZapUw;ktgM|Ln`6!DfG;ovzPi(~mz!JxbKQ+M@!mBHB1&O)0Hja>}N@HWYgM zl4j&8)ruCs=c(V z{@MgQ6dLY@PWWjn^FmX+P@*f7(QCK}<=LsU;pWjy*J(} z(3Mgzf|CEq8diLbDyF{0*HM-A)L+E$6RUt|%1WhD^6^kGm^yVE51f2nIWggSB4c>> z;ltD}VD09q3ZClroJQaJ-1f{_wrl>J^*|+3#2+-&3+?mMmh(a*{Xl2D&^RxYtUY1? zWOyqjIb67%PGWjK>gki5%%uv>@T}`?wyK!=4!vcQr0^K^aXJ5h#A2yF&uH0A^XC%q zP^iocb$i(ZGPI`^+KooKwG`gKtIq6UTDyLP>}}53AC08r`FBVfULR5*>8AThI(7B z1#~S|J^p{?OCzqzf9ghy|4bK}yXAt{g$5_(XL-*SIEbIp=RNby;Nf0MpOtsNmr|sR z;A^Z!3eo>Be#p6Fn!Ouz-gnO?(wz3no^kI@h_9{A>l3-;^_}~m5-+sF50v#D!d$b(#vsu zP}{2jKm`XYCOXbHNV(~W0T@K>Lk_6BW77(=#bVSbBoi}g zuuI1RJT)vv zi?m<|ZV_hk!M+37_t0vY%ZW8d&~tEz#MOgEr>Dn9@7)`lnsRha>B%~eVx8MnN<&ak zkY1q*P+?K;-kwxNWaqgk`Q1Y4vSgM07A3zs^hG8klfcP2&@C+;0=Sc83$55ehB1x@F7^w#ATL(%VNT7H-*Tw=3ey9@(aq zvXbObC)o=7u@%Zfw2uD%euq9{;R+Pl+_im4glwQ^ePzb3Zs~wBB6l-Y%JZ<-oHG)o zaSVH9XmSEuMJbu=>>Q=i)55v&;o%XfDr_Mi#z;7+957~bd|<$kpPwIY(7Gs~Y!-WeRcj3at+ufb*Fap~<2WZfT?(4XLyY(BLU|~ERms>}l?y$nY zSEs@CJw<2{t)xb8H`K*!*|dH8_U`WL>g`*$Y+S!?-MaM~gQjtP?+i>{SzTSdGKDH3 zhLNi-NJ=)hoLKSHk|m+sAn@NF<4kEw#4#9N@y1ELoBsA0I6DY5U?HYmlN&goi5WuV4imI z{@R%z(oP}59KLo-XV;2lQ8`S?v1~wCP!OUbf`SybX$^j8rfsd5MJv|o1^V{sI(M4Gopp?_o~&s2*MuN4aAsCuLFT zl-)MX)KTsujMAXBsu~*L7ZsKtGfcJh$0WJkx?p`~{)(!tTjSM}nD3-IK0bT()~#FD z#49jog}520wY>KFogjSy*VK5KqFpnLh7X<@9qMhv#_b%HXk756n>$Xv`s%BvhXV6_ zXQm9Jk8(`9Fm(6@+k3+ksG5KvL;S6#(stGdoI-UP^kH#&?pbI z)h}j+2kP((ReGRiztBk!)Z&Fcg&92!8s~;BNJ~pY7Q~=jj-tnMyJj zCsi8slkU(E>C_OGyr)N{37F*=pTVPZQ$yr(xs)|*Ub|uA#*G`+ty#T%&C1+=zD$hW z?%?&)lPW|eYxPF#>EJ;7nEhW~J=#Nw5HBSNhZc6*jB^~jY{E4&HjQ1En5>`ay>d|@ zcPE}b-8>VJD(p7+_u-;8DHS--QXGgdwM+ti$BhFtRTq_%U5;H=o*5V5#EIzak;fHo z-aa~J?A%eE7pERTmr|utA>}yMYLW*a$YT-?>wd?KTIqI&!D|{O?*Dj zgLKq*7v|LgPX%veS;j?J|AZyc>~uP(rr~h2()Sv9y-~|iXU}$1N|X(QeCR$~myxU( zpBz89yEIt^sf(}v5s*Tf zxb_{>G)n}lQms@Xkc&!BH?!mIpuzwfls<<$iju>H5#l6qeC^NZTr{zbBP@vN!0*YvN^K5OmT4IBPN`Y+~L zn_h4G*A_wGeB@q<+_DA{#pddTD|b4&$=xSTr*h~vgcu`L@9m#EV1=8 z;AlPJYwgpJRS$s$im)bs?c5@4&WL>axX_!X;hIhxnXmn~aXRH{^##>_jj3bB`k zzFvIe_e9^#fq7#<$Or`h$Am3(;a2Aj62HOIll{D;qZwqV z*ThL69X{$%Yl6z`Xva$=n5h!$igW{%=zMApMt8&&~GlqYNif&5RB_ z6rFow^lkJBik_;V?}&5SgmptP87hV28XKD$uebN!ZMxQU^KS1zJI-S>;v`t7z4gkK zD+-0e;TUcvhq)Dm>l_(zSS7tpEuG_5X4>K8WfLl#>JVze${Fz?OnxM#ySuz%O+`id z%Cf?xihREt#8~HG%Z*lT)3`u*uSdU4mp(yv=bGlMjClGbgtOE#!}rHb zi7?|sU>Xso^|kYzZ~>#n2O+T}BwjLsrf1~fqL^3L=*&YVTB{)EtoP)}o{^b)_P$9c zD3$H4SV~N|EQhSgXHq}`bs{bt1)LO|_2JaW!T9hdVk+D|NmK@U(mvb`g`s=+0Yd@- zF5g0o3+#qokKNGQP!}FAD&v9i*=vZMko|z6zz4%xtM=ssI*+SPiY+a^mgHQD+Cl(< zS?`C4yM`89h4_P!s3Xj8(x*wR0mgNpeLT7RXl!g9XuS9sN7nCy`kX6K~PzxR~sg7A|T=BgdwGT%a$$WDbzwB zN(=Q3Z@7)BsK_yK_ABqc`|g!7&X`l-*+0a?UqNUH6~$=Q(vzG5+gK@`k{S`=(KbA( z!l8qa-v&+hF3v5_E-A_mv=TqRT4`lkPJG0}Ez>?tal{!S*!%I@`}+EOdIm=(i4{CC zJ~YtN)7`s0DR2rV|8!td8C2XdV)C;tIY(PVre-*u9%EI2q{<~rGA!I^6R6lr%zi^PmYhG` zGZ}#BkqGsKgHfqe(utw2j*f`PAnD{FWXRR_u_0my*r%yso)2(2?6!7LxZO6TFbBaW ztb|D=QED`%1W+|n>a_Lu^bL;KC!F;ear$Yyea|Ch@me_TY+R7S0V->=S3Xj6$VqGC zvZ_Gd?JKeiD|hbPxw#M#1bi~huuK5>ez<~h*an9NZBr6LZ@0}h)QO!vG9xpEN5@5( zwF*|Gj*kX%j1M$W`XUj0Fv~+=S`n7!uU*hX+Ieus`r2&;U5Q*yg*M@yu)$~3e(ik2 z^*cD~L+-vlH*uXS#)kX)hGBLF&)C|?#vqu?p8bVoLm&*K_0}*vQ16%a7)tjwc7kTl37K)^>D{g600^ThP2D-ZUC2=ZFG1J2n8=3&lAd-Tw}xoqKCWl@oG-h_mHe7j1C z(PPJ@WA5|hm{Ekq`Cv&HpAavI-9cFFg{}!Xm}+--M5r;;Kn?Imq~qPVIvH@+Fw5k5$Dgl|hTvu3eiJrBw1vVrsyHXF)~Kk#xV@`6H8v zFpWQ0=tJ5ih_IXf+Ue)v^hw{SX#gR8+ZUqcJn8EaTk8B_4H99&{$O$uX7L9ziLeMC zjNG520skA{)DKkU?9IC);(eS*5c*HTkFE=;Kzo{Fv4 zxF*JTWvRdL%#-rG!_*Tz56e9t*C9N0M%+ztz_I{X0!Buf`z9#~Aw|HohO<{1v9$#o z@s1s#F+7dyo&dEvJlJejjJXaj7~Fi|k*YEh%SOz^!osjHLYI2%*-$0+Bu=Vt&JyvI zFnD_22{Jtd7Ae9y{k2nwun-^2Cqaet8tH?~kCI7YMoy26O3tKHxtAgK-(%JnQ!mh! z6_Wh3%FD|h^eW(XhnzDgCiBN1{1BK{ggJff=ElcdxkC6NZOY{7OvK0Zc6S#S7g0%{ z86OiQT8}|KY(5Ilw_u3%h<7Ga3;f^snoYRp7MmE4^6*TxHt=E5 z^Hlik+z2o6R0uINwT#XuA?A9QCNC53Qd8!vcgeR_us#WQ>-I$s_+YGf1IzesVCUYX zX+1YJgWj8(xlq;vWxUY2c!fQ#@Y&8jm_zh`&iMSFKA1#=b^C+OZ|Boa93GGB%p8xa z&#UTaY@+^7ys9%%Tl{-fWg_p*@#pWBTBbX zpA7TCteHC3kPIDJTL3akfZNNNtg^74?d z5*rp7Vl#^xzkIAHDfd-ZSoRoWFczAeXYKpPS-P0Bm>NGI4RqsYw-)YKV z;M}8=xT{wgM4vz=W<>5;=x&?UWb3{IFhJFv%Sf5|?6(RgzBR6?ICgWU|GJsW`Mj6s*~x;uQ$fPczuCN=QDK&0g}2<{BAI z!t7`~oKM0M3y+mdG&pK;6xgL6fL;62+}hf-#puQ2A(F? zqy?0j(P%WFOM7r|W8=HQ!MCn9ehdqvRstHebn!HjMx|%YLIxN#83LG zr9djiL}K(Bu7rDc?A@`k4?b{w;P`W~`-{wp}xap9?mSK z-k|PMZ`2l3uX(D@kQ?V3;K&-E;?&BES31Y#xCjcB!w9u0BBGFH^^dE@%cHhdVgQ#PItpPrbox5AOp<#g*KqoUwKamW=hAdV1{2uoM&=T%MsAv8fm0LtzT?*7VBzYRc|lTnfFCa=ApC#+wO?Y}&UJiYr%A zTM^gFQ_Jh9(??Vp$B(CVb#2+wo(^7f& zy+JP?UZX?32X<;;U|@=66}q}$A6~U!isI-Rcvr*qS)xp>(Djb;|xY<7dDuYv!$keSo>GoJbt z{~|qxT!25ws>vy@nyAL-T4YMU=+nH#eK?3`MJ;2}n`2Epo-r69Dgt!bXjXFjw$XU$ z+?j?Z67N7x$nD8GHaC}=I)ah_t@paRyB9A$cW!mX>i9q^R6G@{R@bq|j-^;Ul=g9q z4ssrr&7KF}-cU$p*$H8H z`?%Tm9vz8dBnaoNN8mv2Jct?vS?aORcFjU!(PuKK!RxPe&u}uMV@-X&Qdo$ z)IeVCCp;~e98t%`#inIv#!k5&E!2OtggOFo`sij{4%SLbOG}HFg@^N~O+<%kd^WSV z3N&zutFZ97Szbu)@|Q$WmOziwOmv;ms5XL%BS=OLBo|RLqa$4{EnOo{O`yhk?ff6Ea%nw2=6)R}9BKjOJ@uRj6KK zrN{bsS<)i#mBp!vVlI?NvWVj(b7$m|2FY#pRpaeejPZ!Pt*Y(W(S4FIC6&4`s;O6G;_F3K--*XPjcGkcxQ=LwNWPMnZmzC3Ol1iK#|Cm$8Dv9XGA>K-}Q z_}^dGA#H6A$IVr%l%{xGl?E&EarzeSS8h&&{}3i{>>)Fr%_>QFkh>vRf_6GcK`xqn zGy%1V#tPlX^6LDJC*eUhcy{sP8L0)LRW*Z;1Lywom%p4HpfvaM#=6g@Pa#&N5UUa) zaP)@GPSo~5W;0HOn_2)1Zz;eVAasM2aAsKP2RhH;{DcU=iFFE_dK#@27wK z;~!7=BATX-?aj{aeF&v|Ty%(V(G{~CaS=whI*JOiAdMUBNbu<62Y!m58B3RAtgY#~ zUMKB3d;Iv>E{9Hk?N;kM*Y5IWH$}^h!3#)bv74w*(l_R&LOa0ZC<%BPniJho!~;GD zCdan6vXMz|zRd=&Utbu^zWZiUVuY^ZEbB=&z(B{-h1!aY|s#i zoXn-}(R3ZHHS#iJ0t};Mlk{kq%T-WNS(#U`I43(fAtB+dx8AyDQ=vw4<=wkbU2&MW zW7Js3$c&X%nR(fb3qW|P@utXEH=^&AQSdy9JN4C9Pn^C0mG8po6Yu`*Pk;K;-`+iO zz6DnvE$2@hd*!D;{pl;ms5i0k2uXP?^TTRym`#LP3j2#l7P1>4v?PYMs_g95c^Mgb zo1XmAm!4cAlRZ|7`n^A=p5X(U;&H=te<==;LirvFK^|$EZ(KO{oj! zg#&S_8Oy*+U>gO8@De@J2qji|I}Ec3`FMMKUFe4P_AJ!f-aBxsYi4Ff9fjXBHaz<1 zqZ{ycCbSbW2YJcBC^8AH@^C1ujlD=D^zc|x#b5>2C&p$Yt8?!3i4WfV!yo=|>|^Y= z&d$!uCr*3_l9I(EB?%d>7ddla=$&`R^j) zv8Bc2m%V@oYqiHSGHf#%Txrrad~84Q+H0>JZ>LzkmR2aN{@9yvJ}c4lM$jXk(`!|_ zt2eJUwuI^x6W!ATO^v5DnrqiM?xT;QqFP!wuBC-)=WAtdJ2Y<;aN%V#GsHuzS;ni{ z+o`nN+%)nn*t61U1T-0T{Cf%Y67|!tr}WELqpU4a{_^?Hn(A>mOLIWB+)ISK%h^*0E!^$oCv;_nR2)H!<3xTX*iXbz!{_-*oTZ zz>HGr?7n^H&Yf0VIf{Vl+^(n2Ev8!7-U7M8*VL;uq!@M3SmB)2t~nSzt!Vk+Ke)!VXzv?lw{k zB^Qh->_RAlh(p7OV0#d(s%EPw^wiIA9G&KC=C;qJ3pJ5~2xbY+U;K35=GIjZ37VddGnw0b- zVSfb!ZydpU`t%QeaGzcDUwG=;weR6cL3QzCBNbEM7chNKz_b9E766lZbo3wpAm`-1 z`e?@mY;|*Mq?t!X_Us{o_r5x5B?8L2`L)tG;3ramNA6)g@3T2V@ONVCYsr1OO2vIL z9CGXGRRn#ATmZ@ITD`uaVrXdmU}AUm?%mWO9+9HVTaaaN6e5XT7=1jj5X;3ttm6B! z=yBNxI`DHd>FJV^66%lCAN^+3{|?V5CDqT#s`tvAix*#d>9h3rpNrl2(c#1T`*-a4 zEIqzZ=#BqOUEXUqG&J03x^t(c0Yy%6yV2Eh^9t@nB&4WqE#aaM$hn}Zs>Ov%@^Vw* zi$l4R8+J_|OyjmT!EX30`Nnxy=rWHL^2%J_-|gh@Yi4D!&%@)ZGpaJo+H~uHZD|xZ z9}*je{ueCceBkcF&GpA*uIuK{)n7*WKX0Wa zes-cg(%1d?z#g6@>@VZi*Q2l|t7pggD5(Bg=t{*Skmi+riB54UD-_bkm}BjrQDvRe7@)h6u0HnFBb=);Bmb#>#kQK!{mCdj0J6 zt1Y%80jOfs(9kqO>EfZ2$D>|uQ$tBcTalg^6PuW` z8ksh0@{`QtkR$eh*nF_)$G0y5UHL_-;83-cgG4o(kZm$!BhhQ)QkhhauwR8-!jdS= zRHI}}sMa|lF{aK&Vvgd z>SZdeoSA{=oF|Ev@xe;ey+Npwd$si|j+9{nj!p9)|7QLIv_iM3~2d_xgId?h8@fy|q*-kLr?KcTx4F zqC!r2mQpv1&+CB;l~QJHZdS^TDBH&yduV$U&!k3B((d$o5xR{5Qt2s#9L{$TQ_kpA?bn89I2OsYEBdyYyun!()g|qcR2b; zY~AkNLqpl+t8=r6lR_rT${HF1pWe#L0ugb&vge{&h(1y1ujq_d297636ifis2FAMj^(8Bj4hhZ$&?( z1{~AU>)_3&&os95qZnD=O?>s?Lx1blQ=jml@c8o@?Lf=pm>gJ9S= zi@~=#Q{qi;sPCpX0obbqzAZXW#D7_ugSi_p=8{TXW5Zo{?sN@v!Q45`jSk}7Wm#U% z;wN<`IJe76DVE108`I9jFF&xHdY<|}!hg>j4y;(3k&&@(EDy3uG=&%+7`Qdn2NdbP2&i77XIX z@ewZ}t9BaK^-LqxXcd8&0Kl>@@sjF}&E31DMNXE1+GPN&D4Tj(s%?JX5GcqQASo1R6-r4o|Gyn zWSq_BoLSHsXNY)$Ni?(Pi_Ba;i-pWy`2Pr%T}=H-l9qNq#_uQv0?frq#uOCgl~59R zg$W(osc~Sk5_The;S>-G7D{NRkA9?{D)A8GD*M6(BHrzkL={wLFQf3K>UKDHbb*I?%4Q; z2u8Z_;e{@ltn0$nT5T#dK0f25$W$>?jJCVm?e6Hy~hpr9l9PUbK< znd@gyW--P_yiC#FT%durw$LC}tS0dPx_j^NxX$}b^gDHWFBtSeF9bk>1)?a5T~rq- ziI!wrRwKu!IiIZHH$C1@yS%st}77zf5 z-rE3}K7(mz%6-2x1Ar7L+1dL~?hXme;LJH+JKy=fUwMD;FV2-!&dmm9LZKNbiHHY! z!65?Ri5<2`Au+$cE`z2Neu28pu%P`9J+icBEU`%F*Onf6aDQb}QzZlvsd^(c2;jg4 zJex%xi6*;UO`=hktGFvs?HRT~yA6w4$xe*BNX1e-LN-~v80RV~xOo3XQC>!1l{)R~ z)ynILQ3AC=wH^ed1%ge0)HPXC@n@bq)TD;VPTh3-lh4GH)}}p5X!o9-JDZx62C41# zCfsX;D4{tE@i^ssE5${JO58WPdS@J0=dd!F8U}6{_;(UL$?cFh&*a#ES#&C zNV!WX0@q>misPwl75Js`J#y=TQwKUb51cwqykLR(3*r@y!I^*T8z;#3lz-nKeJ*7O zg|vgHK0#oMv0U`F6=ybGPbiYaC9oWpVmYD+KW8I$dt?%Bq)F`Uy=*3x`L=p!2;o2o zwHfldeDe{63z=HaoLOG(KH0jw+hPNwx;p0%QMz6DC`^etNY+}dY^uRuI2MhdH8PDK-4roqfb3``rf-9_{1ZhICJIV2cX@>hf+}9T+pxrtW8 zuquXXSuCsJFHK&WbW94D=RN$@tB#KMCAwghZVjFGILUPRkjB~E?9?2Jzj7_^YpxKm z_82%uQem+j9@cZ$`7IQ?D4R)V*zx(r`EexuX2PM#^Y6T)(+v(*vTu*GmE&)-ETSwX zG02f1U2lRBkD!IpTBh~r0s#VHj-x*vkbb;k{>sIf#N%J3o0?R0CfBjMr?a`*-TaAM z?vY1w`6GvI)-#{T=g*vhNYbmCUjZU1xiT-Qg5h<%!a>QHOp>*Mfi?Owpw$kP#^QO5 z#n*5L52Q1}!FSIOPc21K*+ObJ}!xw6wAo2t}f? zL~?D~R?%4RuBmc49TrRTO@kH>Joo66_uaC)v7^$U5!vMOR3N5tRyeCV+D_d2*i)NJ z*UcjutFBnf?Dopq>ZZ=_y|>(U?W$VwnWuJAiej@+ zEYS_R$FH$FU%dDiOhv^}8LsZH!o zMgCAE$Q$=w+af1xG;(ZdX)UIzsZlLoxw5=;lZ}_uK}c(EadD8RIaf>1eIWh1ucw7F zspwjcgZBA2AT8WdW8>2AuzqZ{HnL3<+`1P&sZRo?cbhfnMt${qYtVLV_Et^Xk>q8Q{;_CGX&ZWC}yCC#*I3YE# zxkS`Y(YY7@`5&jIqS34#`iL$QT^WJ&J-iGrG^7Y5)B4rrD3Yu(9u*L;(aXPrWzBqX zXgR%^dLg|$bg{2JlPTsKBU)!|`>oLDZr!=##0iUqS%P}9DAw-(Vk8t zSAF*#2f8|T)#zA{ig)em=sIx6-IDq4`)(^E%V*(qI=f8DZo6+I^9PNaKY^B4M)Yfz>fd|*t6%-YKl-D5C0t1Cml3Q95+PP?F#hb#x8Hu-qt3*m_up{@x|hT( zl&np_CzDP$bhz)g6^!HPckJ>+FGL2q?kRx$cD@+d9&`VL2RK!qT z1}hYu_V%XgrkN&Rqf63R_a+Vi43#3<_e*lcv#5vKzk6gV>S%4{PKV2i4?-pu@y*R5 zMS3hSh0cxm1@47fps}l4p(HjKhysVKuCB5P zxzHGt$$`-sqxeD(wRxwJG71$?OItdV=Tt^lECzSZE(qvtHeEKWE8mHaJIi%q3fOL| zNkw!t9to+hR3x2VPr_7J@VE=9(A&R(G(R-6lGVdtF*i3CWb|dNkp1@TKV;T&r6;5Z z{i8P9+ISj~-}uI%L*!PJQn{{Q%TVgP6jtAca+iO0>7ZZqa#ktf)~Hc(#zsv0PtQvk7s) zpS!Ku5djeasWzLd35KUo+4Inu)iqV+PRbE-_o-74-g)Pp$M;c)O@+C={SXi~$2;vY zFhXLcrDo2f8|TKS!X8~d6;CHqiAWv-dTEB((T|cuLLVFas4KN~i_41_DkEygESYwY z=~G0#l6dFQQ;&XPhBJGy&hxnTH-eed^3(k39VF!}siig;TQd21nUW3`3hSO(|8bEiOui zS6;E2)mR4@PGjT?rJe$532Qwey99&6sH$a>!Ijkpw>s$`=pPxK4X&@pB9TatF{ z;&W5|;DT6#y&wS|fp9XLK?KmDs?735!1yjMXAB*OiZ%r5x1cQWyxHt1cS@?sN&gCP zGEjbaZR0IH2rt-uv{TcEqk&^ifg|dIySLkhs@J3) z0wuHpI?sVO9A5CztS+%;lY!;fB1Dx+Jg1XKQ{1BNV2S8p)ROL}XN=pw;l6 zMqUHYhl&wNp64+>D;W)xZcS$8LMT+wS7QXL^@Wi4mVMPc1`3Q80>+Z5+;{2=&p-eC zGmk#{xvzZXE1$oAA5dGYb>E}d%O2QQg?*rU-~G=$_uK$JMLgoH@%F1$!{jeeRFXlG#1%7s89*B<0%Go7ZEbrLS&|oR@ zqYC*P&GSMCm-R#v;KfOkH(nLxof=z^C2)39NE*>Vvl1YgpKvLJoNO_ zPd|7IIe{9)=C*y9CC1SKAEIXXY$}5q*u?zgLX5!kV9JMwuxkzmv--yFlE!%oJ-Xjb z$Zn3%apVLvP2j>yl*Po5poE7h&RL6y$!#xCw|EI%zCGrtsbG6GiBAo|V~d1f_2%!E zBd!9n2>nO@(-*bT;N@^dIg^Q-y?S*f%FV)owStJuY;5Q+wC-L>njeRyOL&ZF2b6%CN0Z* zfXC9)K{B&!KJHH@b1(1n>GdEXRT)k6`k;SqR;Me3!VuhMm)BzPpbuNlwim@oYTDZ? zLC%~?C(<4>pG`-w&HBLSp*NS;)Z4$SXiU`G{w1`X5wxBI={)k&@hT1M9f43rQ-Lrp z(2Hmdc7V8?LS%6P-Z$+>b%I063|3-co$-`w)M_V){#|CuDGXvWJ{LmW5x^P#^WnG? z2Q&r;xMED}6IZTiG|YMs_|72Kmc-)t`1n$sHyExCPkdy*)FJ_AatbybkA@8g>BWIC z;!R*&$*Rp5JF8Zc&%UhmkNOB5NGAa+5Zy^IYaE(zCT!Iq|2*!nD1e|*SllmZoJQyS z6Eo}#?yb0@A=(wqMDgx!L~AoD&a*R>3r@|fa-2$qygPysbJ8NLFRyB8?CE)o9ay;&0?*GwAGVAPeDPmCH=nJ7(098GZs%joFjw!4Z0 z^v1Gkwa&wF>X{kIB+Kgvg=5q%^t;TY*SuWRRi8t@pTm7Un9l&bvYrghPfrE2$cF|Z zNyJ6K@si7}FD}dnG6fdwB|zS8f6?Zf5afpyVr3))xxmUp4Y2S6$wP==TQz*OZU zGv7TJfSZdG5s%06$?)RBw9c4Z4@^L)84KmGWH5=~G}M6EkLr+#ApmM-Ic*k3zt#1u z?6E+&Dv+8QBb%YybdnfrzPn`yf&8YYRM=FkroSCJxKHGi*xFi4@2Wb*m`sK03O(Za zKz?1wFAR>1PvFj~GfP9rJ~g$PDBjzzW0by*Q98_Ku+OLBDg1_@gQ3uy>C>uV*Kw~B zEOp2jS$f|BY#Bapdy*;RvGORZGkI9LXu~{p%A26cBVXa1KTBY&Vp*`#Nh-+e z-#whLfa=9WjCdL>i809X)BY*QRbz<)!l?=gKb~@bg7Pco5@Fa^10Nniq$(}W2{p*y zS?Foldg?e>?Fl0mI1He}tb)9(GCOJ*+=W$i0RbCKX)HHqNdXzljB3$PUQ=sgGJzGH z(Zr-^Tt|VZT;=7kkjdEjDYNUgmoiIoh{RH*D?$h4TBV(qO1yAI<*5%LmUIq+J@I?>pQXdUHoId z1F`e=>x{+g!Z-U)UHtB**BQ25cYQC^TBbmI!O&tq)C*Pd%D`5Qe}S0|d6=|Zf4@Ks zhcH~sRbzEqcXxMNH4+Mi=OB~Mh4WG~rV03`%qIP6P-e~U+6tpegJ?LO$X}RsxGgAo`5aclx!fQ!F@-Ib>rEEs0;i1-pgGN*CY{4q?w zFnRG%VdrDldGl{Y&m?5vflMt~3o@>g3&e>a8aNmsK(BgfUvyOYrigaLMqKb#*P8P< zFOS55wJKsT`!C+PW`BeYe%pB~?gw4|$H(dHaQ_=i`5 z*Sj>PTUXE+!>y7Y#1+&p25>dD4Bu*uA-VBse~hu1bp=qMnbxBL>}rAVI=Jq%X&9`2 z>(UWbmX6l)9l)!%S6ECbxuv1bY2tWZucuK>8ldWT?P_tE1?=ByH2!yd(3QEg)sKJM zcVerZQ99oL+ua8Z=8XpPrkA(PUV=6E#a@0cVF$YA#p3!wIWK_wM3C;po8(mqd}dvZ zfX|n#ayNYY%hI=>-TrNM5~h4y+gbzs{`PBsPJXCd+eMz*{;fPfeoeoHP44;a-=bAN zFV%aKYw_(bKKfgE0sseE^4^=3oEQdm7`{EY8yVEMwK+NntQ@|rFmH{<)?E3wJ*WTo zUtMS{8}%77$h_l9C)b0)U_8lCg6O0lBCl^YWGIl}hQ-4)H5DgRtJIO;RC+?J_cGNw zk4sP5(u4+5P6-RXoR>7u@7Ly&jhJ@XZ_1IX*FjZB0lB5`QqNy?(LZPBXj(Uj7 z-4wM(m0u272+4X9=y2X$2fj;5g&hssEz1F3L`1`}W4*$Ki|biM&_oRMF zW+Ub*3i-%H=caHtL;VK4Ec%B>5PA-Cn?9FJ`r~<)r5dY!3t zEgGQ!HP2|MZfh$LEduZx8#_Ci+Oev)V@vBb+v{r}4f2_&4|+-@o#j0m7%x(pOdc5F z(!R6d#{#UGmzt+%{KP^l1Z-VRN6x{ouPRn57Fsv({E%uP5K5l%0>e-PNGQj{{s0Ly zYj(jz;Z&EmDQC)Cnam z)INU{o2_KX<~3TX&6(9yN=9?TG-+2b7zQ&9%QLA=0mh0_%Wq=W))CcWXmLyzQVTw^ zD3Hbd@a2))(uaW{@&*pK3FxZ&#|Gm~qw3i2*5N9U(=xpaEw z+R#EQ2mvjPH51kaNgGFZlY|P(Mz5x(W^N55!V{s7Y2c-*{d?PMK}5rA%j>%K67I;6 z-TU@-?&>*s@L&)2a>=C8o668HmzsfjVO^FbZe~W!d03rVU9`~Bef~i@vjOpG;Mw$= zKV&g5>9z5R8Gk&Atv{Jjbl7Zib!HawHQnd4&}2Q;49i>HZg*y61yd+aco-8Rc}lHbxl`HZ3osLSs^#qZDhvl% zEk~^gXcz1TBnh)YD1%I7CHd2h<1|VOw(0WvdPxf?4`SFR>Da2oKmxh)y#lC+QWqpqJJ&O@hX+=+SI-3WyH5!cKcRZ^` zo@-S$j0ZfFRpGNGyNu5f1l~#1Kphs^|aoCdvt4! z9n;fZL)U_q8VA%gS4|Vl{jK!g!4x1u|KBnNu)@cf0*dRz|DU8bDhE)Rv=xAM( z5@W=3Q@n^?jtddG1%uOTuSw(s9+!20pgfoVtJjq*4KUVV1s40SfrpBX-+3E3UeeP_ z>jhDBF&Y!Nj9@QBcys;znOd)!)yLy^-gyg%c(C|#$B*+HxVIAP3ZaZ315z)sdpThG z%JAu((vz?uX>st6j7Y@ZS3H5dbDd#k0O94p|-M8 zQdL&gHZ+mr$4j+tmWx93>EyMc%P1Pf3QDr({rYps+vlx&1@p*Qp3W+{L z6NcFS{-KGh7t#62psdwgzB2B+co7r#DmW!htXrzlY$LJoBk1o_ON+`t0z~v15n3Po9j$=(6d8QA8uctu!|}df|hi z$+e7Fiw@K>Aa8l|&C>lS%}zwSBJ@-T%?~qe>^fb(NzvuuG(l7W8a^+J^1xgF^{xM| zZgMSNe*0~tfY-t9rWoBR1Xf$k$NB1>Q%|1id06}UZz8VdX4l+rUN1g*?YKwnm{T^{ zQ6q{q4p}rOK=%+#n5j|KV$M4d)2mHQr?jz{!;v?)du`U`Yw`HCWou?u4@!h8{cHwH zxn(vsI&8BfHI162#Wp+|n>|-*afy2j@q~r9hG)mV_cI9k-_gXQHjBIF$n7AO`%bYX z)PqS;b|#x`Z4GvA-fs8%>ATm<;fT%4IRXKPm-);sN6Fuk-!RUaqvRjR-?Faglc3mT ztbpMCi2My6msdfYaK57AyqBBVy?dtA3aX`09S0BbWjyUK3eos;&ybVQb?B3|@mvZE z4*LT3iWh~ag8nBU)qh9>Lf(dcdP`U%BGfkTNe#+YGI0Bnm`X|CD41qOaUxt3$<-+U zGp1IPqSsJmzyvW=0h@DT2iY&_07!Fp-*wkr-EMQL)XM8u5V*LARarso_ypc%rKOu^ zz++T8!yhEqpFw-7MNdIcl*K8apE&q62rxg{&|fH~rw8A&>&dLghNfN|82V7dON)t_ zE+*uLPL#*OK1jL`KKS5$cO3grhf1ppq#mp;H*`*E`9{6s`q02dRO>NiOG8zx9RpUz zFi8#|aK_=}lCrEVYk=(0P^Oi=<*{RT+=p6Gw=Y~A!eZ?hNTIm!NG7@nsnwC0%W&~t zo{6Z7`|Bss-$&73WQ_T^RcJL0Z%KM}98dN5%~vDG)@pRanC$rYWvN03f4Q!r4Uc)- z&6X#}*79`2pcU`;r#4!@eQmma!BjDANg4zTmh&1ojf9PBax4fAi(|U&j465sw2!9o|K&4!5nM~l=w*IcDuZfp$Iyq`3&XS1!-HeP zBlBS~K0P#e4Wut;k!IxLrAxnj>jOj=Rs&+jA%&1mSJs#hPSF_9@d>)k4G&#OqW85> z9svO?GdU~V@kCBE*sMZ<)u_dMI@4ThfS_DGF)=nWHbyU;sit#hyPvUrS z)Hbgk6l6Fyg+Xuw;Oai=dd?7)SO2)21Xe%V*zEzL)xai}$ObL(1|3QFz#P_!lg*3et;No@Ny!p}hzx>I6*a=J7R z>5gG_!+%F*U4$b=gkQhMTx<6TJR+(=KZ<+)?47;L>7SHj-%`miT!V?=2Aw^sXc_2-LARPz?l9ar#o-oB{ zee*o{PD|&-Aw$I>cqK6h!M0LlP%7Mg)Y^j1q+eQb{KuOA;u}6v2V}qwR`! z?ca~tsJ7I5R0YN<(kKOGf2ZX%E9GeD$tcH2Z2~9HYKwAPySgeYmI?}}F#&$2 z++UBH2GoVKtY|5%7WDoI7)uF?S09ysOOi3YyNF#TzLEH{Wb+B~?HrgF)={1JSTY1aaF>e`YjF z-1o-EzgL`p6n#gt614JsG_VZnw3&&?IlM=}H*JK~laF3fsU{{anN9dZ6}<%c#;fI3 zEcF8?*5m6EVE^w=#AzBLuNuxe#9YA8sL=%!sw{t!oZLsK(dC0umhS(r*Y&CaUoO_^MYcenPpK4aCs;PX zc5)a-gOmIR-J8~-MvQ5d8&5&eI;1rASJ$rHe!JIHv=LorDN?H_$q!a4#aP6hJlQ;} zLP2>8MRf`nOF&Ea_^MK?d8ARUD*l5U`GZCB_QN3UUZbN}>0JH(j2HD-M zsPD86{KqJx&1eo(`cjjWy76VP8MGl>w^O6aWqmsr^Z#r zXEU1Lact^UDv$xI#DC4W{6CmG|AeQz_pqGEsDNsQTu8F;wU|uhZQY$ay4qUn%tS?# z^QpC9j_l~%!wVD#Q{J%~bhAyGY%)M$hN~%iCMT#01v@ylTq2vI!Mri3@mh-(o&k#I z1jO=iHXe>sw*T6_yWM)c3nGtn*SXxxxyy+}_uifD@C?lOVudo4(paGb1`DF;{L0MC z>}ra2)YS=f)h5P2<30S~(cL?1AcV?{zGlaPhd+nhb0=?YwA&innrkX+s$nOuD6_h1 zt9ANQ_uhl$<^H>m-+ue;2luozHP+YF)ipUfx^LTm=j{y|JV#8m52mVO9V>Ig?QtjbaYQ_#}WqxPwe4&Sf$tgR7zjt_Lv@r%1TvaE1svC<0nD zh-q_i{|FRSek!A~cNN#suVJMBjE?jHn!nLmTW+KXs>IUxAfkNwFXkC7Qm9T0m~yFf zMt0Pt7XY1!uO@jYz=aa*JyMD!@qo^Kb(>(%FVDU zE+pD(#q3=FQds7VHCXB!oECM$Yuasqi-h74X}$G#J$DDBg#V)a`*XxC9oo@(g8U8s z{7b|%eXpvfyQ8tEEV6pb!+@th^2ELS0OvV$-)Ded|MIigW&aZrJwkjUDQY|kc=Ykb zxsmC>6L*>gt=%M5_~PWunPWYd7KEBx&Q$1=v)5>>$@#H`q`tILQyUs&E5M<#Ls2na zwJxOBe{ki!|Ivq>bg=f(RRsU>60b&apXJ;UaNBq9{4(YY%+Vh5R!O@5E=qbC<9axo zK{|l`{`qWF2bgqO&WvOb;LEK>kC}8dyfi&!HS3c8VceIcXe9RJ3hHbm3?yzc?`g|o4FYQY>iFVnRMy&@1|AU$yc$@RTt$U}ODri*SGr&><+neH zvHP~0G}IHjvK-0wr-e5L*WVw6lYjh#-1KfTqQDYFvn_{oa154np=D4_>2$fA zj;Lwi@{y1t>I zPL+c&l~dKh_oAMi1%GiQp3Zr?a^RQ)q4BI@#g9ZWrJ|V7pt0?X|L%+w=w=)-S$pvDOeh813DXAx;7nOchf#=jY^LTTBXak z{w`f!Uw75Ozg*+0tSm23aKn0`{Ko$7_$~d#GJIWU6&*)f$iU zJjdDXsg%JGiI8=e>nkNv`JHlozNRN}>pSC8-$Gajak@cnz|>Uo56 zykBe$#gLew_H0rdsfPJcesogehXv3YiS%@O0e>*N8O2It@F+TC*c{xZgwX{~8qQzkYud`oQS>Z~Xn=|NR>vyzXVdL`cqi%THiE2K6p}1@P|ji{l7cU$F|QKizCL@7?>*LuPXiEYSQA*@4^? zn)&%=qj7LB8XYTXxYRaEZAKCo2wH7WOtoGnk?{T*Z8U!RkcwUn0xp#*o%S*+6~2g| zk&#HBGUx8W)pz3R2Hg z;x=z}CL>ej7ZOftaddb91uPewpgV7+!M>T|JvxHcJ?$p7HT1NiVnjWUo2wpf1%0tK zYq7=2FgBcAc<6%eNq4aI-Dqi`G*9j||}HSD^|U@x~Da%;0|*3P_~$ysa;yTfL&qZ`Q59Tcoq zgB%MsSCNG=5=+ux+x4W*V9@9gSXG<}Uqo+cj5o*+Cnsa+Y(cnqwtqR6F++5m38XId(`HcM8ryl68)rAm<;n%lUijY>giuT*?J@vqIJKZDKLdW6OYwpSTbi{oRHzPQZeIF}BG7W&_P_uZK! zW2$UwYi+1;>eZz+>@oCF@pwTk*?egQ{@{UTlemV>eN8mA-F}eeO?E+WR6*>kAu1%l zV4?A6<(#LQ4lB6YD?U6(|=X1+(CaRU0&4yW@>(Idhl(G6O~HW7H7t&OJQtbVJs<;WT|yDztpX6 zNC=cUd^w7{i-&HMwr><4@Mm=S(j_2jJfPP6V8u(ou9@?4be-z6nCU`94Jfer(A5IF zX~pTU{ri7^l)OUzSv~iE{3+(y-S^ZVA^(|QL&TrGk9S~)+lWBjKs2@kjR(oHvO*A= znxNg3X@yk4x760v#AIm1>`F)wR^p3eh%}2yy~YoQ){>l=8m%D_(U~o(3ak^8uGOjM zVdZu@^^@n$^-&=o-KMWh3R_#=+St@{ ReqkHdZ=qSJcd&iG|;hE1of9e#lW4*@R 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 My5#T1dFUnoFOs^j`Tzg` literal 0 HcmV?d00001 diff --git a/src/assets/fonts/GeistMono.ttf b/src/assets/fonts/GeistMono.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c3d9789bb78bd7135fd9b5f958485b7b45232e5c GIT binary patch literal 137740 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 KH{|6Iss96aCPlme literal 0 HcmV?d00001 diff --git a/src/assets/fonts/MinecraftRegular.otf b/src/assets/fonts/MinecraftRegular.otf new file mode 100644 index 0000000000000000000000000000000000000000..54f08ad42ae2c7e9eb4d46c7b621544e32cfc9a2 GIT binary patch literal 11016 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/background.webp b/src/assets/img/background.webp new file mode 100644 index 0000000000000000000000000000000000000000..c278a1535e64002c863d312663eea2c897738f14 GIT binary patch literal 79432 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

&$7KUp-r48PW*EN80IC2m9}?xhx=E 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 CDRF-Q literal 0 HcmV?d00001 diff --git a/src/assets/img/menu-feedback.webp b/src/assets/img/menu-feedback.webp new file mode 100644 index 0000000000000000000000000000000000000000..940e65ec1a814ec59ceee1f8bc6cd86c58841fec GIT binary patch literal 128 zcmV-`0Du2dNk&F^00012MM6+kP&iC$0000l55NNuC!mmR1nB(vUWbD?4TWqYKF|5@p{6w3hTqciRR literal 0 HcmV?d00001 diff --git a/src/assets/img/menu-home.webp b/src/assets/img/menu-home.webp new file mode 100644 index 0000000000000000000000000000000000000000..52149d4e045258241c703e706b87f08739c3ff67 GIT binary patch literal 180 zcmV;l089T;Nk&Gj00012MM6+kP&iDW0000l55NNuSD>bm6zKd5I|CRXv_Et>Q5pbf z!k?V&mCRhLngBo(GzxjiLkFR3rGX=*011)FB-XZ{-K75{!aid=e0w#Bm|)6CoKRqvSmpKv&;TTL)~8@ iwuyBYv7BNxV#zL^Y02jtw{P+Z05hL(-r#!tdEz=qR!(>T literal 0 HcmV?d00001 diff --git a/src/assets/img/menu-inventory-bar.webp b/src/assets/img/menu-inventory-bar.webp new file mode 100644 index 0000000000000000000000000000000000000000..2cc6c064cb021a0f9a72e83fccdd14f979bb71ed GIT binary patch literal 1812 zcmV+v2kZD!Nk&Et2LJ$9MM6+kP&iEg1^@srv%mxpuYstIq}c)-826$m8BEj^t=009tyhNIg70)zmdc$@&G0FJ_vQCb2J zh-8FH5UnB!&iSpi?R|iCOG5*!TN%G)#_rE`We187;{J;9IAClgrWzwWc zZ_A{!LX)JEG-;OfU3yH*%BNm$3l4oh;Omjk$oR(BG>zdZBGF_b$QiIhBJ~n-~g0R zOor2WqH_*BcOJSfMhg|-kQoyfg{)<_44GUiF^3v($Jx4%yeniK-a(~Qo_Qi(f5-qF zaIZiKg$xG=c0bpQrp3Ozt&TiA^$WE3j&R1)b} zR)rcU;Lctb`dG}%NTCH13|vkjOYB#80!)lONdWl>jD%t~O6usLQUDLdV)SfV#sqoTm^+V*g$$&YP|OWva>q6~gf@>} zNWT}zeV@52)Hv0l&;x%I?z;Td@Z7>UcFt}rA$#JnupJ=7x}kF1?6;wi0hw(bVPsXv zdcX^ez!BmUYG8!K_HpRyyJ9hNVjO^yfaCoXG8l0H<1B?ffZw7dO{hW=Opk$66 z_>ovb51Hfui2?j&^N{JB7AR~(AdZzUK5#q0EpL5SzG7_cOZfDk1jF*r*+E60T2BxOT~fu3=VX+ zjo05vb*Ch_zTN(8z!MG(p2_|F6tcwb0Db8gLN_&qKVA~uu-ApIGKv@4M12J4L-EZ3 zTDD#|?DarmbYLiq7hUxWWH{27ahfk-T|pfZ9VLQHBGdiyC@>U!6+nA31NFj+)qYh$$AMuRYWj z$WTHt8F1*5Ltz_={}@gwludnh-!$wedP;^^Hb)1Bo^4NPXYAQ8q#<5EWg{&Khg>~n zuG2*ZrIPqMbeFL$2gm?5rjWsKI8vbJxrNY8Hb4c)0A8;8kU5Zm{0tmf6*3sp&i;pP zvfl9nrK5Z$Ba;d^(BrC_O+dtBm~tU`XtJ{j@2ekY&h; zLJv5s`gk*k5lFyT+iumy!JQW3faq8z#*~C>lCss4XHB1f%MXG znJ=;yhmjr<1H9`ZBXv}~^mJaw67xD4a7=LMGVt7Q8t5{fOMwp3P1loA2GU4^ntO7* zexBp&zwZ&}zt>QFk89koagAHVN5s0u66d%_+~Xr|5ph{RZtuE$zrDx)8u$CU-a>JS zh&8U)i1@fg#5EL`xJE>*5tsLMjrAVW`#Itk5%F)tB_iT>)AjoAHNL#WJ=O@_&au74 zEpG3Zh*;zG^G%wiWznQJ=_E;i%_mJ-G)t4V-=wo7Ez2xvmZVA2S=(iibdsiJ`6ivU zNSdcf(n*>%OJ|*CE!r;Mq*=4(H_iGsYm%f{nxtv^E=`lRv-C~UBK;+4)^^hV{0ad2 CcvQ&% literal 0 HcmV?d00001 diff --git a/src/assets/img/menu-rules.webp b/src/assets/img/menu-rules.webp new file mode 100644 index 0000000000000000000000000000000000000000..652ae5c5630eabe7703885e06fddd238a4dcc316 GIT binary patch literal 198 zcmV;%06G6sNk&G#00012MM6+kP&iDo0000l55NNuZ=faskcJH>xb2_GGA2)TDk+Yy=4-x&}0|Mv!?PA_G|F1Su zUIz`xU=9ptuufq(gfs!N9gW%EFsNx8 zNgDoW4$)Ot9)o$JsBI&u{OK&9eXSNmj|c>k{AEU5Y?9C(-a!(QHlP~=N5TmM0_=aB zFknD8x-qaNt^Xd~w3C4~PQdo=WdODU4B#N#a{>ebv`t0XI*rYf?M{>D?0-|?Eg_=+ z6A%sVSUi)?CxOQ*ia-fZ06;rIvQ4t~(qaF%!w&h*m7V57d+k<|=2~v_Cw+d&j!}`T z?;oAU$XngCdmdHtk+~y Un$31=X)>0i)kFgwmW~Do0MkK{mjD0& literal 0 HcmV?d00001 diff --git a/src/assets/img/menu-signup.webp b/src/assets/img/menu-signup.webp new file mode 100644 index 0000000000000000000000000000000000000000..d876a56018d5f6a9b1a3ddac853ae9ce2a65a627 GIT binary patch literal 216 zcmV;}04M)aNk&G{00012MM6+kP&iD)0000l55NNuf1tLJq&E4H_YV;rpeB+eX)&SU&qv zerT!%s4S-;o&{Admzbnla(q-OP@WVNRj+dD5Jdhs(wdvKl*_SZB!dUBH!&yyYt{55 S0fGmkNC1E(2|j}arjPG_eq;Us literal 0 HcmV?d00001 diff --git a/src/assets/img/menu-team.webp b/src/assets/img/menu-team.webp new file mode 100644 index 0000000000000000000000000000000000000000..1e7a0e7c718b0039dba93387f81b6eb351f78c19 GIT binary patch literal 156 zcmV;N0Av4BNk&GL00012MM6+kP&iD70000l2fzUUm!K$;q~`9(8J@iHZvbT(Y$$3Z zNm<_GQ$e0j>AhA_BT35gF(|m_`PawuA3y%O0_jR7frvz9yKLhx?M~EHDMC&o;v)sj zlQcV(m6f8u!NIU?Bt_56{TKcNyBpE}=xZcdU0X#KE3W7DjRCSHLCq)p6r`mj?8mfX K&h2D4%me^b*hiuO literal 0 HcmV?d00001 diff --git a/src/assets/img/skeleton.png b/src/assets/img/skeleton.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf23b668ee59755bdda6c6059413b73fea5ba3c GIT binary patch literal 1293 zcmV+o1@iidP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2k8VH04xn zg=qW+E+y?w5Wj=aT5yqd1owj2PhfSWpTH!73rUQWrb!z$;*3c;BALW__na=0xf-xE zc;Uh0y?f99{?GaU&k^>yZr;3U0A_}WaP8VP+0VKE-83~dWvYtzo+C$&r0-^ibB>9L z3Hd63Teogmj1e{*Z$mPqIWnTc3lanSQWLd`8*chLu zMO9gE|3fSaobwz!_$?wryWM7Ra1b-&$B7^0ivUwoQ`UR0*XzU>snu$<+igM!bUGc5 z9zBYP@chLBjYb1Aqh7DmY&LPuVP?Bb0~41n34jCm<)@zwRZv9?zRCMIP^;m9+Q0z) zd5##YHCwb=Exb5Z{`#Ax#XqsApq3sn(4yet#ft_I0HP`z>l+lY;QaaXm>L=t=N$me zw@rKqtgWw8u4H6cMhJn?(NVnj3=a>}YPB#k?%cUUsZ_#jCm{hKc)zO(&-~mx&O45M ze~ef}eDLIbeTIot-=q=|RrpEK<&+#Gf z-JwH>6BZX2>F?{qoUpO6frzlSw#I`85AfboDwPlsy!VL6UIyJ*BwZ_@7|uJovEcW` zKd4kHoH})iq9|}8)D8@B_wKK3Z*P-j8HGlw)qGdN5$8Or@e_cmqPr|MH#ezPtGs{z zo)AKk=(A_faLzG3JB!)Q-Xa#T4Q84Eob&kLq1eqx(yK@^5kP-`KW0W>U*Dep79(O% z4kZo@*6<=!${7|T&Hz=2ir?Mu0JgTal94`s{FnmfdA>*AW`?R#DwS}~k>`0Trgt83 zyO&T)aYE0jolXZ4p;D=!syMepF2f^-`L;=IsD}5R)2C0Ps;sWACIgun z-J;8rCr^@ZR#sM0Di;$Td%OaJgX}6^YgrX`4Z;Wp4fEbJJ3EV+@#xW`eVzRmp1M%OBH?h^00000NkvXXu0mjf D*r!`( literal 0 HcmV?d00001 diff --git a/src/assets/img/steve.png b/src/assets/img/steve.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0a2d0f5744037ce7f2941d7fae4956394aac34 GIT binary patch literal 1252 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 literal 0 HcmV?d00001 diff --git a/src/assets/website_layout.css b/src/assets/website_layout.css new file mode 100644 index 0000000..d63caec --- /dev/null +++ b/src/assets/website_layout.css @@ -0,0 +1,41 @@ +@import 'tailwindcss'; +@plugin 'daisyui' { + themes: + dark --default, + lofi; + logs: false; +} + +@font-face { + font-family: Geist; + src: url('fonts/Geist.ttf') format('truetype'); +} + +@font-face { + font-family: GeistMono; + src: url('fonts/GeistMono.ttf') format('truetype'); +} + +@font-face { + font-family: Minecraft; + src: url('./fonts/MinecraftRegular.otf') format('opentype'); +} + +@theme { + --font-geist: 'Geist', sans-serif; + --font-geist-mono: 'GeistMono', monospace; + --font-minecraft: 'Minecraft', sans-serif; +} + +html { + @apply font-geist; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + @apply font-minecraft; +} diff --git a/src/components/Welcome.astro b/src/components/Welcome.astro new file mode 100644 index 0000000..4785ba0 --- /dev/null +++ b/src/components/Welcome.astro @@ -0,0 +1,205 @@ +--- +import astroLogo from '@assets/astro.svg'; +import background from '@assets/background.svg'; +--- + +

+ + diff --git a/src/components/admin/search/Search.svelte b/src/components/admin/search/Search.svelte new file mode 100644 index 0000000..808f73e --- /dev/null +++ b/src/components/admin/search/Search.svelte @@ -0,0 +1,97 @@ + + + + +
+ + + {label} + {#if required} + * + {/if} + + +
+ onSearchInput()} + onfocusin={() => onSearchInput()} + pattern={mustMatch && matched ? `^(${suggestions.join('|')})$` : undefined} + /> + {#if suggestions.length > 0} + + {/if} +
+

+
diff --git a/src/components/admin/search/TeamSearch.svelte b/src/components/admin/search/TeamSearch.svelte new file mode 100644 index 0000000..828d6fb --- /dev/null +++ b/src/components/admin/search/TeamSearch.svelte @@ -0,0 +1,61 @@ + + + getSuggestions(teamName, 5)} + onSubmit={async (teamName) => onSubmit?.(teamName != null ? await getTeamByTeamName(teamName) : null)} +/> diff --git a/src/components/admin/search/UserSearch.svelte b/src/components/admin/search/UserSearch.svelte new file mode 100644 index 0000000..90b39b9 --- /dev/null +++ b/src/components/admin/search/UserSearch.svelte @@ -0,0 +1,61 @@ + + + getSuggestions(username, 5)} + onSubmit={async (username) => onSubmit?.(username != null ? await getUserByUsername(username) : null)} +/> diff --git a/src/components/admin/table/SortableTh.svelte b/src/components/admin/table/SortableTh.svelte new file mode 100644 index 0000000..6fea4aa --- /dev/null +++ b/src/components/admin/table/SortableTh.svelte @@ -0,0 +1,48 @@ + + + + {#if key} + + {:else} + {@render children?.()} + {/if} + diff --git a/src/components/admin/table/SortableTr.svelte b/src/components/admin/table/SortableTr.svelte new file mode 100644 index 0000000..159ee99 --- /dev/null +++ b/src/components/admin/table/SortableTr.svelte @@ -0,0 +1,57 @@ + + + + {@render children()} + diff --git a/src/components/input/Checkbox.svelte b/src/components/input/Checkbox.svelte new file mode 100644 index 0000000..3fdbf8b --- /dev/null +++ b/src/components/input/Checkbox.svelte @@ -0,0 +1,51 @@ + + +
+
+ + + {#if typeof label === 'string'} + {label} + {:else if label} + {@render label()} + {/if} + {#if required} + * + {/if} + +
+

+ {#if notice} + {@render notice()} + {/if} +

+ {#if validation} +

{validation.hint}

+ {/if} +
diff --git a/src/components/input/Input.svelte b/src/components/input/Input.svelte new file mode 100644 index 0000000..a6c3acf --- /dev/null +++ b/src/components/input/Input.svelte @@ -0,0 +1,75 @@ + + +
+ + + {label} + {#if required} + * + {/if} + + + +

+ {#if notice} + {@render notice()} + {/if} +

+ {#if validation} +

{validation.hint}

+ {/if} +
diff --git a/src/components/input/Password.svelte b/src/components/input/Password.svelte new file mode 100644 index 0000000..95005fa --- /dev/null +++ b/src/components/input/Password.svelte @@ -0,0 +1,70 @@ + + +
+ + + {label} + {#if required} + * + {/if} + + +
+ + + +
+

+ {#if notice} + {@render notice()} + {/if} +

+ {#if validation} +

{validation.hint}

+ {/if} +
diff --git a/src/components/input/Select.svelte b/src/components/input/Select.svelte new file mode 100644 index 0000000..9c057cd --- /dev/null +++ b/src/components/input/Select.svelte @@ -0,0 +1,71 @@ + + +
+ + + {label} + {#if required} + * + {/if} + + + +

+ {#if notice} + {@render notice()} + {/if} +

+ {#if validation} +

{validation.hint}

+ {/if} +
diff --git a/src/components/input/Textarea.svelte b/src/components/input/Textarea.svelte new file mode 100644 index 0000000..f28dfbf --- /dev/null +++ b/src/components/input/Textarea.svelte @@ -0,0 +1,36 @@ + + +
+ + {label} + {#if required} + * + {/if} + + +
diff --git a/src/components/popup/ConfirmPopup.svelte b/src/components/popup/ConfirmPopup.svelte new file mode 100644 index 0000000..eb5e116 --- /dev/null +++ b/src/components/popup/ConfirmPopup.svelte @@ -0,0 +1,33 @@ + + + + + + diff --git a/src/components/popup/ConfirmPopup.ts b/src/components/popup/ConfirmPopup.ts new file mode 100644 index 0000000..466f432 --- /dev/null +++ b/src/components/popup/ConfirmPopup.ts @@ -0,0 +1,3 @@ +import { atom } from 'nanostores'; + +export const confirmPopupState = atom<{ title: string; message: string; onConfirm: () => void } | null>(null); diff --git a/src/components/popup/Popup.svelte b/src/components/popup/Popup.svelte new file mode 100644 index 0000000..c6362c2 --- /dev/null +++ b/src/components/popup/Popup.svelte @@ -0,0 +1,33 @@ + + + + + + diff --git a/src/components/popup/Popup.ts b/src/components/popup/Popup.ts new file mode 100644 index 0000000..76f92ec --- /dev/null +++ b/src/components/popup/Popup.ts @@ -0,0 +1,3 @@ +import { atom } from 'nanostores'; + +export const popupState = atom<{ type: 'info' | 'error'; title: string; message: string } | null>(null); diff --git a/src/components/website/Team.svelte b/src/components/website/Team.svelte new file mode 100644 index 0000000..aca3dc4 --- /dev/null +++ b/src/components/website/Team.svelte @@ -0,0 +1,13 @@ + + +
+
+

{name}

+
diff --git a/src/components/website/index/Countdown.svelte b/src/components/website/index/Countdown.svelte new file mode 100644 index 0000000..1a1fa72 --- /dev/null +++ b/src/components/website/index/Countdown.svelte @@ -0,0 +1,69 @@ + + +
+
+ + + + Tage +
+
+ + + + Stunden +
+
+ + + + Minuten +
+
+ + + + Sekunden +
+
+ + diff --git a/src/components/website/index/Scroll.svelte b/src/components/website/index/Scroll.svelte new file mode 100644 index 0000000..887c254 --- /dev/null +++ b/src/components/website/index/Scroll.svelte @@ -0,0 +1,39 @@ + + + + +
0}> +
+ +
+
+
+
+ Zu den Teams +
+
+ + diff --git a/src/components/website/layout/Menu.svelte b/src/components/website/layout/Menu.svelte new file mode 100644 index 0000000..23a809b --- /dev/null +++ b/src/components/website/layout/Menu.svelte @@ -0,0 +1,180 @@ + + + + { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + if (isTouch && !navElem.contains(e.target)) showMenuPermanent = false; + }} +/> + + + + diff --git a/src/components/website/signup/RegisteredPopup.svelte b/src/components/website/signup/RegisteredPopup.svelte new file mode 100644 index 0000000..d11244b --- /dev/null +++ b/src/components/website/signup/RegisteredPopup.svelte @@ -0,0 +1,94 @@ + + + + +
+
diff --git a/src/components/website/signup/RegisteredPopup.ts b/src/components/website/signup/RegisteredPopup.ts new file mode 100644 index 0000000..09dd04d --- /dev/null +++ b/src/components/website/signup/RegisteredPopup.ts @@ -0,0 +1,12 @@ +import { atom } from 'nanostores'; + +export const registeredPopupState = atom<{ + firstname: string; + lastname: string; + birthday: Date; + phone: string; + username: string; + team: string; + teamMember: string; + teamColor: string; +} | null>(null); diff --git a/src/components/website/signup/RulesPopup.svelte b/src/components/website/signup/RulesPopup.svelte new file mode 100644 index 0000000..edf7e80 --- /dev/null +++ b/src/components/website/signup/RulesPopup.svelte @@ -0,0 +1,84 @@ + + + { + if ($rulesPopupState !== 'accepted') $rulesPopupState = 'closed'; + }} + bind:this={modalElem} +> + + + diff --git a/src/components/website/signup/RulesPopup.ts b/src/components/website/signup/RulesPopup.ts new file mode 100644 index 0000000..d505b34 --- /dev/null +++ b/src/components/website/signup/RulesPopup.ts @@ -0,0 +1,4 @@ +import { atom } from 'nanostores'; + +export const rulesPopupState = atom<'open' | 'closed' | 'accepted'>('closed'); +export const rulesPopupRead = atom(false); diff --git a/src/components/website/signup/TeamPopup.svelte b/src/components/website/signup/TeamPopup.svelte new file mode 100644 index 0000000..dad1a4f --- /dev/null +++ b/src/components/website/signup/TeamPopup.svelte @@ -0,0 +1,30 @@ + + + ($teamPopupOpen = false)}> + + diff --git a/src/components/website/signup/TeamPopup.ts b/src/components/website/signup/TeamPopup.ts new file mode 100644 index 0000000..998d0a8 --- /dev/null +++ b/src/components/website/signup/TeamPopup.ts @@ -0,0 +1,4 @@ +import { atom } from 'nanostores'; + +export const teamPopupOpen = atom(false); +export const teamPopupName = atom(null); diff --git a/src/db/database.sql b/src/db/database.sql new file mode 100644 index 0000000..0961bf1 --- /dev/null +++ b/src/db/database.sql @@ -0,0 +1,121 @@ +-- admins +CREATE TABLE IF NOT EXISTS admin ( + id INT AUTO_INCREMENT PRIMARY KEY, + username VARCHAR(255) NOT NULL, + password VARCHAR(255) NOT NULL, + permissions INT NOT NULL +); + +-- user +CREATE TABLE IF NOT EXISTS user ( + id INT AUTO_INCREMENT PRIMARY KEY, + firstname VARCHAR(255) NOT NULL, + lastname VARCHAR(255) NOT NULL, + birthday DATE NOT NULL, + telephone VARCHAR(255), + username VARCHAR(255) NOT NULL, + uuid VARCHAR(36) +); + +-- update team draft on username update +CREATE TRIGGER IF NOT EXISTS user_username_update AFTER UPDATE ON user + FOR EACH ROW + BEGIN + IF OLD.username <> NEW.username THEN + UPDATE team_draft SET member_one_name = NEW.username WHERE member_one_name = OLD.username; + UPDATE team_draft SET member_two_name = NEW.username WHERE member_two_name = OLD.username; + END IF; + END; +DELIMITER ; + +-- team +CREATE TABLE IF NOT EXISTS team ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) UNIQUE NOT NULL, + color CHAR(7) NOT NULL, + last_joined TIMESTAMP +); + +-- team member +CREATE TABLE IF NOT EXISTS team_member ( + team_id INT NOT NULL, + user_id INT NOT NULL, + FOREIGN KEY (team_id) REFERENCES team(id), + FOREIGN KEY (user_id) REFERENCES user(id) +); + +-- team draft +CREATE TABLE IF NOT EXISTS team_draft ( + member_one_name VARCHAR(255) NOT NULL, + member_two_name VARCHAR(255) NOT NULL, + team_id INT NOT NULL, + FOREIGN KEY (team_id) REFERENCES team(id) +); + +-- death +CREATE TABLE IF NOT EXISTS death ( + message VARCHAR(1024) NOT NULL, + dead_user_id INT NOT NULL, + killer_user_id INT, + FOREIGN KEY (dead_user_id) REFERENCES user(id), + FOREIGN KEY (killer_user_id) REFERENCES user(id) +); + +-- strike reason +CREATE TABLE IF NOT EXISTS strike_reason ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255) NOT NULL, + weight TINYINT NOT NULL +); + +-- strike +CREATE TABLE IF NOT EXISTS strike ( + id INT AUTO_INCREMENT PRIMARY KEY, + at TIMESTAMP NOT NULL, + strike_reason_id INT NOT NULL, + FOREIGN KEY (strike_reason_id) REFERENCES strike_reason(id) +); + +-- report +CREATE TABLE IF NOT EXISTS report ( + id INT AUTO_INCREMENT PRIMARY KEY, + reason VARCHAR(255) NOT NULL, + body TEXT, + url_hash VARCHAR(255) NOT NULL UNIQUE, + created_at TIMESTAMP, + reporter_team_id INT NOT NULL, + reported_team_id INT, + FOREIGN KEY (reporter_team_id) REFERENCES team(id), + FOREIGN KEY (reported_team_id) REFERENCES team(id) +); + +-- report status +CREATE TABLE IF NOT EXISTS report_status ( + status ENUM('open', 'closed'), + notice TEXT, + statement TEXT, + report_id INT NOT NULL UNIQUE, + reviewer_id INT, + strike_id INT, + FOREIGN KEY (report_id) REFERENCES report(id), + FOREIGN KEY (reviewer_id) REFERENCES admin(id), + FOREIGN KEY (strike_id) REFERENCES strike(id) +); + +-- feedback +CREATE TABLE IF NOT EXISTS feedback ( + id INT AUTO_INCREMENT PRIMARY KEY, + event VARCHAR(255) NOT NULL, + title VARCHAR(255), + content TEXT, + url_hash VARCHAR(255) NOT NULL UNIQUE, + last_changed TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + user_id INT, + FOREIGN KEY (user_id) REFERENCES user(id) +); + +-- settings +CREATE TABLE IF NOT EXISTS settings ( + name VARCHAR(255) NOT NULL, + value TEXT NOT NULL +); diff --git a/src/db/database.ts b/src/db/database.ts new file mode 100644 index 0000000..3bbb96f --- /dev/null +++ b/src/db/database.ts @@ -0,0 +1,221 @@ +import { drizzle, type MySql2Database } from 'drizzle-orm/mysql2'; +import mysql from 'mysql2/promise'; +import { + existsAdmin, + admin, + type ExistsAdminReq, + type GetAdminReq, + getAdmins, + type AddAdminReq, + addAdmin, + type EditAdminReq, + editAdmin +} from './schema/admin'; +import { + addTeam, + deleteTeam, + getTeams, + getTeamById, + getTeamByName, + type AddTeamReq, + type DeleteTeamReq, + type GetTeamByIdReq, + type GetTeamByNameReq, + type GetTeamsReq, + team, + type GetTeamByUserUuidReq, + getTeamByUserUuid, + type EditTeamReq, + editTeam +} from './schema/team'; +import { + addTeamDraft, + deleteTeamDraft, + getTeamDraftByMemberOne, + type AddTeamDraftReq, + type DeleteTeamDraftReq, + type GetTeamDraftByMemberOneReq, + teamDraft, + type GetTeamDraftByUsernameReq, + getTeamDraftByUsername +} from './schema/teamDraft'; +import { + addTeamMember, + type AddTeamMemberReq, + deleteTeamMemberByTeamId, + type DeleteTeamMemberByTeamIdReq, + teamMember +} from './schema/teamMember'; +import { + type AddUserReq, + type EditUserReq, + type DeleteUserReq, + type GetUsersReq, + type GetUserByUsernameReq, + user, + addUser, + editUser, + deleteUser, + getUsers, + getUserByUsername, + existsUser, + type ExistsUserReq, + type GetUsersByUuidReq, + getUsersByUuid, + type GetUserByIdReq, + getUserById +} from './schema/user'; +import { + type GetSettingReq, + settings, + getSetting, + type GetSettingsReq, + getSettings, + type SetSettingsReq, + setSettings +} from './schema/settings'; +import { + addDeath, + type AddDeathReq, + death, + getDeathByUserId, + type GetDeathByUserIdReq, + getDeaths, + type GetDeathsReq +} from './schema/death.ts'; +import { + addFeedback, + type AddFeedbackReq, + addUserFeedbacks, + type AddUserFeedbacksReq, + feedback, + getFeedbacks, + type GetFeedbacksReq +} from './schema/feedback.ts'; +import { addReport, type AddReportReq, getReports, type GetReportsReq, report } from './schema/report.ts'; +import { DATABASE_URI } from 'astro:env/server'; +import { type GetStrikeReasonsReq, getStrikeReasons, strikeReason } from '@db/schema/strikeReason.ts'; +import { getStrikesByTeamId, type GetStrikesByTeamId, strike } from '@db/schema/strike.ts'; +import { + editReportStatus, + type EditReportStatusReq, + getReportStatus, + type GetReportStatusReq, + reportStatus +} from '@db/schema/reportStatus.ts'; + +export class Database { + protected readonly db: MySql2Database<{ + admin: typeof admin; + team: typeof team; + teamDraft: typeof teamDraft; + teamMember: typeof teamMember; + user: typeof user; + death: typeof death; + report: typeof report; + reportStatus: typeof reportStatus; + strike: typeof strike; + strikeReason: typeof strikeReason; + feedback: typeof feedback; + settings: typeof settings; + }>; + + private constructor(db: typeof this.db) { + this.db = db; + } + + static async init(databaseUri: string) { + const connection = await mysql.createConnection({ + uri: databaseUri + }); + + const db = drizzle({ + client: connection, + schema: { + admin, + team, + teamDraft, + teamMember, + user, + death, + report, + reportStatus, + strike, + strikeReason, + feedback, + settings + }, + mode: 'default' + }); + + return new Database(db); + } + + async transaction(fn: (tx: Database & { rollback: () => never }) => Promise): Promise { + return this.db.transaction((tx) => fn(new Database(tx) as Database & { rollback: () => never })); + } + + /* admins */ + addAdmin = (values: AddAdminReq) => addAdmin(this.db, values); + editAdmin = (values: EditAdminReq) => editAdmin(this.db, values); + getAdmins = (values: GetAdminReq) => getAdmins(this.db, values); + existsAdmin = (values: ExistsAdminReq) => existsAdmin(this.db, values); + + /* user */ + addUser = (values: AddUserReq) => addUser(this.db, values); + editUser = (values: EditUserReq) => editUser(this.db, values); + deleteUser = (values: DeleteUserReq) => deleteUser(this.db, values); + existsUser = (values: ExistsUserReq) => existsUser(this.db, values); + getUsers = (values: GetUsersReq) => getUsers(this.db, values); + getUserById = (values: GetUserByIdReq) => getUserById(this.db, values); + getUserByUsername = (values: GetUserByUsernameReq) => getUserByUsername(this.db, values); + getUsersByUuid = (values: GetUsersByUuidReq) => getUsersByUuid(this.db, values); + + /* team */ + addTeam = (values: AddTeamReq) => addTeam(this.db, values); + editTeam = (values: EditTeamReq) => editTeam(this.db, values); + deleteTeam = (values: DeleteTeamReq) => deleteTeam(this.db, values); + getTeams = (values: GetTeamsReq) => getTeams(this.db, values); + getTeamById = (values: GetTeamByIdReq) => getTeamById(this.db, values); + getTeamByName = (values: GetTeamByNameReq) => getTeamByName(this.db, values); + getTeamByUserUuid = (values: GetTeamByUserUuidReq) => getTeamByUserUuid(this.db, values); + + /* team draft */ + addTeamDraft = (values: AddTeamDraftReq) => addTeamDraft(this.db, values); + deleteTeamDraft = (values: DeleteTeamDraftReq) => deleteTeamDraft(this.db, values); + getTeamDraftByUsername = (values: GetTeamDraftByUsernameReq) => getTeamDraftByUsername(this.db, values); + getTeamDraftByMemberOne = (values: GetTeamDraftByMemberOneReq) => getTeamDraftByMemberOne(this.db, values); + + /* team member */ + addTeamMember = (values: AddTeamMemberReq) => addTeamMember(this.db, values); + deleteTeamMemberByTeamId = (values: DeleteTeamMemberByTeamIdReq) => deleteTeamMemberByTeamId(this.db, values); + + /* death */ + addDeath = (values: AddDeathReq) => addDeath(this.db, values); + getDeathByUserId = (values: GetDeathByUserIdReq) => getDeathByUserId(this.db, values); + getDeaths = (values: GetDeathsReq) => getDeaths(this.db, values); + + /* report */ + addReport = (values: AddReportReq) => addReport(this.db, values); + getReports = (values: GetReportsReq) => getReports(this.db, values); + + /* report status */ + getReportStatus = (values: GetReportStatusReq) => getReportStatus(this.db, values); + editReportStatus = (values: EditReportStatusReq) => editReportStatus(this.db, values); + + /* strike reason */ + getStrikeReasons = (values: GetStrikeReasonsReq) => getStrikeReasons(this.db, values); + getStrikesByTeamId = (values: GetStrikesByTeamId) => getStrikesByTeamId(this.db, values); + + /* feedback */ + addFeedback = (values: AddFeedbackReq) => addFeedback(this.db, values); + addUserFeedbacks = (values: AddUserFeedbacksReq) => addUserFeedbacks(this.db, values); + getFeedbacks = (values: GetFeedbacksReq) => getFeedbacks(this.db, values); + + /* settings */ + getSettings = (values: GetSettingsReq) => getSettings(this.db, values); + setSettings = (values: SetSettingsReq) => setSettings(this.db, values); + getSetting = (values: GetSettingReq) => getSetting(this.db, values); +} + +export const db = await Database.init(DATABASE_URI); diff --git a/src/db/schema/admin.ts b/src/db/schema/admin.ts new file mode 100644 index 0000000..61577bc --- /dev/null +++ b/src/db/schema/admin.ts @@ -0,0 +1,63 @@ +import { int, mysqlTable, varchar } from 'drizzle-orm/mysql-core'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { eq } from 'drizzle-orm'; +import { Permissions } from '@util/permissions.ts'; +import * as bcrypt from 'bcrypt'; + +type Database = MySql2Database<{ admin: typeof admin }>; + +export const admin = mysqlTable('admin', { + id: int('id').primaryKey().autoincrement(), + username: varchar('username', { length: 255 }).notNull(), + password: varchar('password', { length: 255 }).notNull(), + permissions: int('permissions').notNull() +}); + +export type AddAdminReq = Omit; + +export type EditAdminReq = Omit & { id: number }; + +export type GetAdminReq = {}; +export type GetAdminRes = Omit[]; + +export type ExistsAdminReq = { + username: string; + password: string; +}; +export type ExistsAdminRes = { + id: number; + username: string; + permissions: Permissions; +} | null; + +export async function addAdmin(db: Database, values: AddAdminReq) { + values.password = bcrypt.hashSync(values.password, 10); + + const adminIds = await db.insert(admin).values(values).$returningId(); + + return adminIds[0]; +} + +export async function editAdmin(db: Database, values: EditAdminReq) { + values.password = bcrypt.hashSync(values.password, 10); + + await db.update(admin).set(values).where(eq(admin.id, values.id)); +} + +export async function getAdmins(db: Database, _values: GetAdminReq): Promise { + return db.select({ id: admin.id, username: admin.username, permissions: admin.permissions }).from(admin); +} + +export async function existsAdmin(db: Database, values: ExistsAdminReq): Promise { + const a = await db.query.admin.findFirst({ + where: eq(admin.username, values.username) + }); + + if (!a || !bcrypt.compareSync(values.password, a.password)) return null; + + return { + id: a.id, + username: a.username, + permissions: new Permissions(a.permissions) + }; +} diff --git a/src/db/schema/death.ts b/src/db/schema/death.ts new file mode 100644 index 0000000..747459c --- /dev/null +++ b/src/db/schema/death.ts @@ -0,0 +1,42 @@ +import { int, mysqlTable, varchar } from 'drizzle-orm/mysql-core'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { user } from './user.ts'; +import { eq } from 'drizzle-orm'; + +type Database = MySql2Database<{ death: typeof death }>; + +export const death = mysqlTable('death', { + message: varchar('message', { length: 1024 }).notNull(), + deadUserId: int('dead_user_id') + .notNull() + .references(() => user.id), + killerUserId: int('killer_user_id').references(() => user.id) +}); + +export type AddDeathReq = { + message: string; + killerUserId?: number; + deadUserId: number; +}; + +export type GetDeathByUserIdReq = { + userId: number; +}; + +export type GetDeathsReq = {}; +export type GetDeathsRes = (typeof death.$inferSelect)[]; + +export async function addDeath(db: Database, values: AddDeathReq) { + await db.insert(death).values(values); +} + +export async function getDeathByUserId(db: Database, values: GetDeathByUserIdReq) { + return db.query.death.findFirst({ + where: eq(death.deadUserId, values.userId) + }); +} + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export async function getDeaths(db: Database, values: GetDeathsReq): Promise { + return db.query.death.findMany(); +} diff --git a/src/db/schema/feedback.ts b/src/db/schema/feedback.ts new file mode 100644 index 0000000..231e707 --- /dev/null +++ b/src/db/schema/feedback.ts @@ -0,0 +1,78 @@ +import { int, mysqlTable, text, timestamp, varchar } from 'drizzle-orm/mysql-core'; +import { user } from './user.ts'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { eq, inArray } from 'drizzle-orm'; +import { generateRandomString } from '@util/random.ts'; + +type Database = MySql2Database<{ feedback: typeof feedback }>; + +export const feedback = mysqlTable('feedback', { + id: int('id').primaryKey().autoincrement(), + event: varchar('event', { length: 255 }).notNull(), + title: varchar('title', { length: 255 }), + content: text('content'), + urlHash: varchar('url_hash', { length: 255 }).unique().notNull(), + lastChanged: timestamp('last_changed', { mode: 'date' }).notNull().defaultNow(), + userId: int('user_id').references(() => user.id) +}); + +export type AddFeedbackReq = { + event: string; + content: string; +}; + +export type AddUserFeedbacksReq = { + event: string; + title: string; + uuids: string[]; +}; + +export type GetFeedbacksReq = {}; + +export async function addFeedback(db: Database, values: AddFeedbackReq) { + return db.insert(feedback).values({ + event: values.event, + content: values.content, + urlHash: generateRandomString(16) + }); +} + +export async function addUserFeedbacks(db: Database, values: AddUserFeedbacksReq) { + const users = await db.select({ id: user.id, uuid: user.uuid }).from(user).where(inArray(user.uuid, values.uuids)); + + const userFeedbacks = users.map((user) => ({ + id: user.id, + uuid: user.uuid!, + urlHash: generateRandomString(16) + })); + + await db.insert(feedback).values( + userFeedbacks.map((feedback) => ({ + event: values.event, + title: values.title, + urlHash: feedback.urlHash, + userId: feedback.id + })) + ); + + return userFeedbacks; +} + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export async function getFeedbacks(db: Database, values: GetFeedbacksReq) { + return db + .select({ + id: feedback.id, + event: feedback.event, + title: feedback.title, + content: feedback.content, + urlHash: feedback.urlHash, + lastChanged: feedback.lastChanged, + user: { + id: user.id, + username: user.username + } + }) + .from(feedback) + .leftJoin(user, eq(feedback.userId, user.id)); +} diff --git a/src/db/schema/report.ts b/src/db/schema/report.ts new file mode 100644 index 0000000..222178d --- /dev/null +++ b/src/db/schema/report.ts @@ -0,0 +1,104 @@ +import { alias, int, mysqlTable, text, timestamp, varchar } from 'drizzle-orm/mysql-core'; +import { strike } from './strike.ts'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { and, eq } from 'drizzle-orm'; +import { reportStatus } from './reportStatus.ts'; +import { generateRandomString } from '@util/random.ts'; +import { team } from '@db/schema/team.ts'; + +type Database = MySql2Database<{ report: typeof report }>; + +export const report = mysqlTable('report', { + id: int('id').primaryKey().autoincrement(), + reason: varchar('reason', { length: 255 }).notNull(), + body: text('body'), + urlHash: varchar('url_hash', { length: 255 }).notNull(), + createdAt: timestamp('created_at', { mode: 'string' }), + reporterTeamId: int('reporter_team_id') + .notNull() + .references(() => team.id), + reportedTeamId: int('reported_team_id').references(() => team.id) +}); + +export type AddReportReq = { + reason: string; + body: string | null; + createdAt?: string | null; + reporterTeamId: number; + reportedTeamId?: number | null; +}; + +export type GetReportsReq = { + reporter?: string | null; + reported?: string | null; +}; + +export async function addReport(db: Database, values: AddReportReq) { + const r = await db + .insert(report) + .values({ + reason: values.reason, + body: values.body, + urlHash: generateRandomString(16), + createdAt: values.createdAt, + reporterTeamId: values.reporterTeamId, + reportedTeamId: values.reportedTeamId + }) + .$returningId(); + + return r[0]; +} + +export async function getReports(db: Database, values: GetReportsReq) { + const reporterTeam = alias(team, 'reporter'); + const reportedTeam = alias(team, 'reported'); + + let reporterIdSubquery; + if (values.reporter != null) { + reporterIdSubquery = db + .select({ id: reporterTeam.id }) + .from(reporterTeam) + .where(eq(reporterTeam.name, values.reporter)) + .as('reporter_id_subquery'); + } + let reportedIdSubquery; + if (values.reported != null) { + reportedIdSubquery = db + .select({ id: reportedTeam.id }) + .from(reportedTeam) + .where(eq(reportedTeam.name, values.reported)) + .as('reported_id_subquery'); + } + + return db + .select({ + id: report.id, + reason: report.reason, + body: report.body, + createdAt: report.createdAt, + reporter: { + id: reporterTeam.id, + name: reporterTeam.name + }, + reported: { + id: reportedTeam.id, + name: reportedTeam.name + }, + status: { + status: reportStatus.status, + notice: reportStatus.notice, + statement: reportStatus.statement + } + }) + .from(report) + .innerJoin(reporterTeam, eq(report.reporterTeamId, reporterTeam.id)) + .leftJoin(reportedTeam, eq(report.reportedTeamId, reportedTeam.id)) + .leftJoin(reportStatus, eq(report.id, reportStatus.reportId)) + .leftJoin(strike, eq(reportStatus.strikeId, strike.id)) + .where( + and( + values.reporter != null ? eq(report.reporterTeamId, reporterIdSubquery!.id) : undefined, + values.reported != null ? eq(report.reportedTeamId, reportedIdSubquery!.id) : undefined + ) + ); +} diff --git a/src/db/schema/reportStatus.ts b/src/db/schema/reportStatus.ts new file mode 100644 index 0000000..731583b --- /dev/null +++ b/src/db/schema/reportStatus.ts @@ -0,0 +1,54 @@ +import { int, mysqlEnum, mysqlTable, text } from 'drizzle-orm/mysql-core'; +import { strike } from './strike.ts'; +import { admin } from './admin.ts'; +import { report } from './report.ts'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { eq } from 'drizzle-orm'; + +type Database = MySql2Database<{ reportStatus: typeof reportStatus }>; + +export const reportStatus = mysqlTable('report_status', { + status: mysqlEnum('status', ['open', 'closed']), + notice: text('notice'), + statement: text('statement'), + reportId: int('report_id') + .notNull() + .unique() + .references(() => report.id), + reviewerId: int('reviewer_id').references(() => admin.id), + strikeId: int('strike_id').references(() => strike.id) +}); + +export type GetReportStatusReq = { + reportId: number; +}; + +export type EditReportStatusReq = { + reportId: number; + status: 'open' | 'closed' | null; + notice: string | null; + statement: string | null; + strikeId: number | null; +}; + +export async function getReportStatus(db: Database, values: GetReportStatusReq) { + const rs = await db.query.reportStatus.findFirst({ + where: eq(reportStatus.reportId, values.reportId) + }); + + return rs ?? null; +} + +export async function editReportStatus(db: Database, values: EditReportStatusReq) { + return db + .insert(reportStatus) + .values(values) + .onDuplicateKeyUpdate({ + set: { + status: values.status, + notice: values.notice, + statement: values.statement, + strikeId: values.strikeId + } + }); +} diff --git a/src/db/schema/settings.ts b/src/db/schema/settings.ts new file mode 100644 index 0000000..84da0ef --- /dev/null +++ b/src/db/schema/settings.ts @@ -0,0 +1,41 @@ +import { mysqlTable, text, varchar } from 'drizzle-orm/mysql-core'; +import { eq, inArray } from 'drizzle-orm'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; + +type Database = MySql2Database<{ settings: typeof settings }>; + +export const settings = mysqlTable('settings', { + name: varchar('name', { length: 255 }).unique().notNull(), + value: text() +}); + +export type GetSettingsReq = { + names?: string[]; +}; + +export type SetSettingsReq = { + settings: { + name: string; + value: string | null; + }[]; +}; + +export type GetSettingReq = { + name: string; +}; + +export async function getSettings(db: Database, values: GetSettingsReq) { + return db + .select({ name: settings.name, value: settings.value }) + .from(settings) + .where(values.names ? inArray(settings.name, values.names) : undefined); +} + +export async function setSettings(db: Database, values: SetSettingsReq) { + await db.insert(settings).values(values.settings); +} + +export async function getSetting(db: Database, values: GetSettingReq): Promise { + const value = await db.select({ value: settings.value }).from(settings).where(eq(settings.name, values.name)); + return value.length > 0 ? value[0]?.value : null; +} diff --git a/src/db/schema/strike.ts b/src/db/schema/strike.ts new file mode 100644 index 0000000..135cf73 --- /dev/null +++ b/src/db/schema/strike.ts @@ -0,0 +1,34 @@ +import { int, mysqlTable, timestamp } from 'drizzle-orm/mysql-core'; +import { strikeReason } from '@db/schema/strikeReason.ts'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { eq } from 'drizzle-orm'; +import { report } from '@db/schema/report.ts'; +import { reportStatus } from '@db/schema/reportStatus.ts'; + +type Database = MySql2Database<{ strike: typeof strike }>; + +export const strike = mysqlTable('strike', { + id: int('id').primaryKey().autoincrement(), + at: timestamp('at', { mode: 'string' }).notNull(), + strikeReasonId: int('strike_reason_id') + .notNull() + .references(() => strikeReason.id) +}); + +export type GetStrikesByTeamId = { + teamId: number; +}; + +export async function getStrikesByTeamId(db: Database, values: GetStrikesByTeamId) { + return db + .select({ + id: strike.id, + at: strike.at, + reason: strikeReason + }) + .from(strike) + .innerJoin(strikeReason, eq(strike.strikeReasonId, strikeReason.id)) + .innerJoin(reportStatus, eq(strike.id, reportStatus.strikeId)) + .innerJoin(report, eq(reportStatus.reportId, report.id)) + .where(eq(report.reportedTeamId, values.teamId)); +} diff --git a/src/db/schema/strikeReason.ts b/src/db/schema/strikeReason.ts new file mode 100644 index 0000000..5e17444 --- /dev/null +++ b/src/db/schema/strikeReason.ts @@ -0,0 +1,17 @@ +import { int, mysqlTable, tinyint, varchar } from 'drizzle-orm/mysql-core'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { asc } from 'drizzle-orm'; + +type Database = MySql2Database<{ strikeReason: typeof strikeReason }>; + +export const strikeReason = mysqlTable('strike_reason', { + id: int('id').primaryKey().autoincrement(), + name: varchar('name', { length: 255 }).notNull(), + weight: tinyint('weight').notNull() +}); + +export type GetStrikeReasonsReq = {}; + +export async function getStrikeReasons(db: Database, _values: GetStrikeReasonsReq) { + return db.select().from(strikeReason).orderBy(asc(strikeReason.weight)); +} diff --git a/src/db/schema/team.ts b/src/db/schema/team.ts new file mode 100644 index 0000000..d03a3d7 --- /dev/null +++ b/src/db/schema/team.ts @@ -0,0 +1,256 @@ +import { char, int, mysqlTable, timestamp, varchar } from 'drizzle-orm/mysql-core'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { aliasedTable, and, asc, desc, eq, like } from 'drizzle-orm'; +import { teamMember } from './teamMember.ts'; +import { user } from './user.ts'; +import { teamDraft } from './teamDraft.ts'; + +type Database = MySql2Database<{ team: typeof team }>; + +export const team = mysqlTable('team', { + id: int('id').primaryKey().autoincrement(), + name: varchar('name', { length: 255 }).notNull(), + color: char('color', { length: 7 }).notNull(), + lastJoined: timestamp('last_joined', { mode: 'string' }) +}); + +export type AddTeamReq = { + name: string; + color?: string; +}; + +export type EditTeamReq = Partial> & { id: number }; + +export type DeleteTeamReq = { + id: number; +}; + +export type GetTeamsReq = { + name?: string | null; + username?: string | null; + limit?: number; +}; + +export type GetTeamByIdReq = { + id: number; +}; + +export type GetTeamByNameReq = { + name: string; +}; + +export type GetTeamByUserUuidReq = { + uuid: string; +}; + +export async function addTeam(db: Database, values: AddTeamReq) { + let color = values.color; + if (!color) { + const teams = await db.query.team.findMany({ + columns: { + color: true + }, + orderBy: [desc(team.id)] + }); + + if (teams.length > 0) { + for (const team of teams) { + for (let i = 0; i < teamColors.length; i++) { + if (teamColors[i] == team.color) { + color = teamColors[(i + 1) % teamColors.length]; + break; + } + } + if (color) break; + } + } + + if (!color) color = teamColors[0]; + } + + const teamIds = await db + .insert(team) + .values({ + name: values.name, + color: color + }) + .$returningId(); + + return { + id: teamIds[0].id, + name: values.name, + color: color + }; +} + +export async function editTeam(db: Database, values: EditTeamReq) { + await db.update(team).set(values).where(eq(team.id, values.id)); +} + +export async function deleteTeam(db: Database, values: DeleteTeamReq) { + await db.delete(team).where(eq(team.id, values.id)); +} + +export async function getTeams(db: Database, values: GetTeamsReq) { + const memberOneUser = aliasedTable(user, 'member_one_user'); + const memberTwoUser = aliasedTable(user, 'member_two_user'); + + return db + .select({ + id: team.id, + name: team.name, + color: team.color, + lastJoined: team.lastJoined, + memberOne: { + id: memberOneUser.id, + username: teamDraft.memberOneName, + uuid: memberOneUser.uuid + }, + memberTwo: { + id: memberTwoUser.id, + username: teamDraft.memberTwoName, + uuid: memberTwoUser.uuid + } + }) + .from(team) + .where( + and( + values?.name != null ? like(team.name, `%${values.name}%`) : undefined, + values?.username != null ? like(teamDraft.memberOneName, `%${values.username}%`) : undefined, + values?.username != null ? like(teamDraft.memberTwoName, `%${values.username}%`) : undefined + ) + ) + .orderBy(asc(team.id)) + .innerJoin(teamDraft, eq(team.id, teamDraft.teamId)) + .leftJoin(memberOneUser, eq(teamDraft.memberOneName, memberOneUser.username)) + .leftJoin(memberTwoUser, eq(teamDraft.memberTwoName, memberTwoUser.username)) + .limit(values?.limit ?? 100); +} + +export async function getTeamById(db: Database, values: GetTeamByIdReq) { + const teams = await db.select().from(team).where(eq(team.id, values.id)); + + return teams[0] ?? null; +} + +export async function getTeamByName(db: Database, values: GetTeamByNameReq) { + const teams = await db.select().from(team).where(eq(team.name, values.name)); + + return teams[0] ?? null; +} + +export async function getTeamByUserUuid(db: Database, values: GetTeamByUserUuidReq) { + const teams = await db + .select({ team }) + .from(team) + .innerJoin(teamMember, eq(team.id, teamMember.teamId)) + .innerJoin(user, eq(teamMember.userId, user.id)) + .where(eq(user.uuid, values.uuid)); + + return teams[0] ?? null; +} + +const teamColors = [ + '#cd853f', + '#ff7f50', + '#66cdaa', + '#ffd700', + '#ba55d3', + '#d8bfd8', + '#dc143c', + '#ff6347', + '#2e8b57', + '#daa520', + '#deb887', + '#00fa9a', + '#778899', + '#ffa500', + '#e9967a', + '#b03060', + '#8b0000', + '#bdb76b', + '#663399', + '#d2b48c', + '#00ced1', + '#d2691e', + '#32cd32', + '#ff4500', + '#0000ff', + '#adff2f', + '#b22222', + '#20b2aa', + '#00bfff', + '#fa8072', + '#cd5c5c', + '#9370db', + '#00ff00', + '#006400', + '#00008b', + '#f08080', + '#f4a460', + '#c71585', + '#6b8e23', + '#8a2be2', + '#b8860b', + '#ff69b4', + '#000080', + '#bc8f8f', + '#ff1493', + '#00ffff', + '#b0e0e6', + '#ff0000', + '#00ff7f', + '#dc143c', + '#dda0dd', + '#8b008b', + '#8fbc8f', + '#9932cc', + '#ff00ff', + '#228b22', + '#5f9ea0', + '#3cb371', + '#b0c4de', + '#00ff00', + '#87ceeb', + '#008b8b', + '#191970', + '#90ee90', + '#ff8c00', + '#4b0082', + '#db7093', + '#cd853f', + '#7fff00', + '#c71585', + '#7f0000', + '#fa8072', + '#8b4513', + '#7b68ee', + '#dda0dd', + '#a52a2a', + '#00ced1', + '#d2691e', + '#b8860b', + '#2f4f4f', + '#663399', + '#9370db', + '#da70d6', + '#b03060', + '#bc8f8f', + '#a0522d', + '#6495ed', + '#d8bfd8', + '#adff2f', + '#8b0000', + '#800000', + '#ffd700', + '#00fa9a', + '#4682b4', + '#808000', + '#6a5acd', + '#ff1493', + '#00ff7f', + '#40e0d0', + '#ff4500', + '#1e90ff', + '#ff6347' +]; diff --git a/src/db/schema/teamDraft.ts b/src/db/schema/teamDraft.ts new file mode 100644 index 0000000..324d3df --- /dev/null +++ b/src/db/schema/teamDraft.ts @@ -0,0 +1,56 @@ +import { int, mysqlTable, varchar } from 'drizzle-orm/mysql-core'; +import { team } from './team.ts'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { eq } from 'drizzle-orm'; + +type Database = MySql2Database<{ teamDraft: typeof teamDraft }>; + +export const teamDraft = mysqlTable('team_draft', { + memberOneName: varchar('member_one_name', { length: 255 }).unique().notNull(), + memberTwoName: varchar('member_two_name', { length: 255 }).unique().notNull(), + teamId: int('team_id') + .notNull() + .references(() => team.id) +}); + +export type AddTeamDraftReq = { + memberOneName: string; + memberTwoName: string; + teamId: number; +}; + +export type DeleteTeamDraftReq = { + teamId: number; +}; + +export type GetTeamDraftByUsernameReq = { + username: string; +}; + +export type GetTeamDraftByMemberOneReq = { + memberOneName: string; +}; + +export async function addTeamDraft(db: Database, values: AddTeamDraftReq) { + await db.insert(teamDraft).values(values); +} + +export async function deleteTeamDraft(db: Database, values: DeleteTeamDraftReq) { + await db.delete(teamDraft).where(eq(teamDraft.teamId, values.teamId)); +} + +export async function getTeamDraftByUsername(db: Database, values: GetTeamDraftByUsernameReq) { + const td = await db.query.teamDraft.findFirst({ + where: eq(teamDraft.memberOneName, values.username) + }); + + return td ?? null; +} + +export async function getTeamDraftByMemberOne(db: Database, values: GetTeamDraftByMemberOneReq) { + const td = await db.query.teamDraft.findFirst({ + where: eq(teamDraft.memberOneName, values.memberOneName) + }); + + return td ?? null; +} diff --git a/src/db/schema/teamMember.ts b/src/db/schema/teamMember.ts new file mode 100644 index 0000000..e83637e --- /dev/null +++ b/src/db/schema/teamMember.ts @@ -0,0 +1,35 @@ +import { int, mysqlTable } from 'drizzle-orm/mysql-core'; +import { user } from './user.ts'; +import { team } from './team.ts'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { eq } from 'drizzle-orm'; + +type Database = MySql2Database<{ teamMember: typeof teamMember }>; + +export const teamMember = mysqlTable('team_member', { + teamId: int('team_id') + .notNull() + .references(() => team.id), + userId: int('user_id') + .notNull() + .references(() => user.id) +}); + +export type AddTeamMemberReq = { + teamId: number; + userId: number; +}; + +export type DeleteTeamMemberByTeamIdReq = { + teamId: number; +}; + +export async function addTeamMember(db: Database, values: AddTeamMemberReq) { + const teamMemberIds = await db.insert(teamMember).values(values).$returningId(); + + return teamMemberIds[0]; +} + +export async function deleteTeamMemberByTeamId(db: Database, values: DeleteTeamMemberByTeamIdReq) { + await db.delete(teamMember).where(eq(teamMember.teamId, values.teamId)); +} diff --git a/src/db/schema/user.ts b/src/db/schema/user.ts new file mode 100644 index 0000000..db146e5 --- /dev/null +++ b/src/db/schema/user.ts @@ -0,0 +1,107 @@ +import { date, int, mysqlTable, varchar } from 'drizzle-orm/mysql-core'; +import type { MySql2Database } from 'drizzle-orm/mysql2'; +import { eq, inArray, like, or } from 'drizzle-orm'; + +type Database = MySql2Database<{ user: typeof user }>; + +export const user = mysqlTable('user', { + id: int('id').primaryKey().autoincrement(), + firstname: varchar('firstname', { length: 255 }).notNull(), + lastname: varchar('lastname', { length: 255 }).notNull(), + birthday: date('birthday', { mode: 'string' }).notNull(), + telephone: varchar('telephone', { length: 255 }), + username: varchar('username', { length: 255 }).notNull(), + uuid: varchar('uuid', { length: 36 }) +}); + +export type AddUserReq = Omit; + +export type EditUserReq = Partial> & { id: number }; + +export type DeleteUserReq = { + id: number; +}; + +export type ExistsUserReq = { + username?: string; + uuid?: string; +}; + +export type GetUsersReq = { + username?: string | null; + limit?: number; +}; +export type GetUsersRes = (typeof user.$inferSelect)[]; + +export type GetUserByIdReq = { + id: number; +}; +export type GetUserByIdRes = typeof user.$inferSelect | null; + +export type GetUserByUsernameReq = { + username: string; +}; +export type GetUserByUsernameRes = typeof user.$inferSelect | null; + +export type GetUsersByUuidReq = { + uuid: string[]; +}; + +export async function addUser(db: Database, values: AddUserReq) { + const userIds = await db.insert(user).values(values).$returningId(); + + return userIds[0]; +} + +export async function editUser(db: Database, values: EditUserReq) { + await db.update(user).set(values).where(eq(user.id, values.id)); +} + +export async function deleteUser(db: Database, values: DeleteUserReq) { + await db.delete(user).where(eq(user.id, values.id)); +} + +export async function existsUser(db: Database, values: ExistsUserReq) { + const u = db.query.user.findFirst({ + where: or( + values.username != null ? eq(user.username, values.username) : undefined, + values.uuid != null ? eq(user.uuid, values.uuid) : undefined + ) + }); + + return u ?? null; +} + +export async function getUsers(db: Database, values: GetUsersReq): Promise { + return db.query.user.findMany({ + where: values.username != null ? like(user.username, `%${values.username}%`) : undefined, + limit: values.limit + }); +} + +export async function getUserById(db: Database, values: GetUserByIdReq): Promise { + const u = await db.query.user.findFirst({ + where: eq(user.id, values.id) + }); + + return u ?? null; +} + +export async function getUserByUsername(db: Database, values: GetUserByUsernameReq): Promise { + const u = await db.query.user.findFirst({ + where: eq(user.username, values.username) + }); + + return u ?? null; +} + +export async function getUsersByUuid(db: Database, values: GetUsersByUuidReq) { + const users = await db.query.user.findMany({ + where: inArray(user.uuid, values.uuid) + }); + + return users.reduce( + (prev, curr) => Object.assign(prev, { [curr.uuid!]: curr }), + {} as Record & { uuid: string }> + ); +} diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro new file mode 100644 index 0000000..5fa153e --- /dev/null +++ b/src/layouts/BaseLayout.astro @@ -0,0 +1,29 @@ +--- +import { ClientRouter } from 'astro:transitions'; + +interface Props { + title: string; + description?: string; + keywords?: string[]; + viewTransition?: boolean; +} + +const { title, description, keywords, viewTransition } = Astro.props; +--- + + + + + {viewTransition && } + + + + {title} + + + {keywords && } + + + + + diff --git a/src/layouts/admin/AdminLayout.astro b/src/layouts/admin/AdminLayout.astro new file mode 100644 index 0000000..f3d6b23 --- /dev/null +++ b/src/layouts/admin/AdminLayout.astro @@ -0,0 +1,125 @@ +--- +import '@assets/admin_layout.css'; +import BaseLayout from '../BaseLayout.astro'; +import { ClientRouter } from 'astro:transitions'; +import { Icon } from 'astro-icon/components'; +import { BASE_PATH } from 'astro:env/client'; +import Popup from '@components/popup/Popup.svelte'; +import ConfirmPopup from '@components/popup/ConfirmPopup.svelte'; +import { Session } from '@util/session.ts'; + +interface Props { + title: string; +} + +const { title } = Astro.props; + +const session = Session.sessionFromCookies(Astro.cookies); + +const preTabs = [ + { + href: `${BASE_PATH}`, + name: 'Varo Startseite', + icon: 'heroicons:computer-desktop-20-solid' + } +]; +const adminTabs = [ + { + href: `${BASE_PATH}/admin/users`, + name: 'Registrierte Nutzer', + icon: 'heroicons:user', + enabled: session?.permissions.users + }, + { + href: `${BASE_PATH}/admin/teams`, + name: 'Teams', + icon: 'heroicons:users', + enabled: session?.permissions.users + }, + { + href: `${BASE_PATH}/admin/reports`, + name: 'Reports', + icon: 'heroicons:flag', + enabled: session?.permissions.reports + }, + { + href: `${BASE_PATH}/admin/feedback`, + name: 'Feedback', + icon: 'heroicons:book-open', + enabled: session?.permissions.feedback + }, + { + href: `${BASE_PATH}/admin/admins`, + name: 'Website Admins', + icon: 'heroicons:code-bracket-16-solid', + enabled: session?.permissions.admin + }, + { + href: `${BASE_PATH}/admin/settings`, + name: 'Einstellungen', + icon: 'heroicons:adjustments-horizontal', + enabled: session?.permissions.settings + } +]; +--- + + + +
+ +
+ +
+
+
+ + + + + diff --git a/src/layouts/admin/AdminLoginLayout.astro b/src/layouts/admin/AdminLoginLayout.astro new file mode 100644 index 0000000..7e224bf --- /dev/null +++ b/src/layouts/admin/AdminLoginLayout.astro @@ -0,0 +1,16 @@ +--- +import '@assets/admin_layout.css'; +import BaseLayout from '../BaseLayout.astro'; +import { ClientRouter } from 'astro:transitions'; + +interface Props { + title: string; +} + +const { title } = Astro.props; +--- + + + + + diff --git a/src/layouts/website/SignupLayout.astro b/src/layouts/website/SignupLayout.astro new file mode 100644 index 0000000..289622b --- /dev/null +++ b/src/layouts/website/SignupLayout.astro @@ -0,0 +1,20 @@ +--- +import WebsiteLayout from './WebsiteLayout.astro'; + +interface Props { + signupEnabled: boolean; +} + +const { signupEnabled } = Astro.props; +--- + + +
+
+ +
+
+
diff --git a/src/layouts/website/WebsiteLayout.astro b/src/layouts/website/WebsiteLayout.astro new file mode 100644 index 0000000..92af86d --- /dev/null +++ b/src/layouts/website/WebsiteLayout.astro @@ -0,0 +1,41 @@ +--- +import '@assets/website_layout.css'; +import BaseLayout from '../BaseLayout.astro'; +import { Icon } from 'astro-icon/components'; +import Menu from '@components/website/layout/Menu.svelte'; + +interface Props { + title: string; + description?: string; +} + +const { title, description } = Astro.props; +--- + + +
+ +
+ + +
diff --git a/src/middleware.ts b/src/middleware.ts new file mode 100644 index 0000000..41f5258 --- /dev/null +++ b/src/middleware.ts @@ -0,0 +1,30 @@ +import { sequence } from 'astro/middleware'; +import crypto from 'node:crypto'; +import type { MiddlewareHandler } from 'astro'; +import { logger } from '@it-astro:logger'; + +const actionInternalServerError: MiddlewareHandler = async (context, next) => { + let response = await next(); + + if (response.status === 500 && context.url.pathname.startsWith('/_actions/')) { + const json = await response.json(); + + const errorCode = crypto + .createHash('md5') + .update(Date.now() + context.clientAddress) + .digest('hex'); + logger.error(`${errorCode}: ${json.message}`); + + json.message = `Interner Fehler. Bitte versuch es erneut oder kontakiere einen Administrator.\nFehler Code: ${errorCode}`; + + response = new Response(JSON.stringify(json), { + status: response.status, + headers: response.headers, + statusText: response.statusText + }); + } + + return response; +}; + +export const onRequest = sequence(actionInternalServerError); diff --git a/src/pages/admin/admins.astro b/src/pages/admin/admins.astro new file mode 100644 index 0000000..8536c3f --- /dev/null +++ b/src/pages/admin/admins.astro @@ -0,0 +1,16 @@ +--- +import AdminLayout from '@layouts/admin/AdminLayout.astro'; +import Admins from '@app/admin/admins/Admins.svelte'; +import SidebarActions from '@app/admin/admins/SidebarActions.svelte'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { BASE_PATH } from 'astro:env/client'; + +const session = Session.sessionFromCookies(Astro.cookies, Permissions.Admin); +if (!session) return Astro.redirect(`${BASE_PATH}/admin`); +--- + + + + + diff --git a/src/pages/admin/feedback.astro b/src/pages/admin/feedback.astro new file mode 100644 index 0000000..2e93a5e --- /dev/null +++ b/src/pages/admin/feedback.astro @@ -0,0 +1,14 @@ +--- +import Feedback from '@app/admin/feedback/Feedback.svelte'; +import AdminLayout from '@layouts/admin/AdminLayout.astro'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { BASE_PATH } from 'astro:env/client'; + +const session = Session.sessionFromCookies(Astro.cookies, Permissions.Feedback); +if (!session) return Astro.redirect(`${BASE_PATH}/admin`); +--- + + + + diff --git a/src/pages/admin/index.astro b/src/pages/admin/index.astro new file mode 100644 index 0000000..cfecca4 --- /dev/null +++ b/src/pages/admin/index.astro @@ -0,0 +1,10 @@ +--- +import { Session } from '@util/session.ts'; +import { BASE_PATH } from 'astro:env/client'; +import AdminLayout from '@layouts/admin/AdminLayout.astro'; + +const session = Session.sessionFromCookies(Astro.cookies); +if (!session) return Astro.redirect(`${BASE_PATH}/admin/login`); +--- + + diff --git a/src/pages/admin/login.astro b/src/pages/admin/login.astro new file mode 100644 index 0000000..a3cb821 --- /dev/null +++ b/src/pages/admin/login.astro @@ -0,0 +1,50 @@ +--- +import AdminLoginLayout from '@layouts/admin/AdminLoginLayout.astro'; +import Password from '@components/input/Password.svelte'; +import Input from '@components/input/Input.svelte'; +import Popup from '@components/popup/Popup.svelte'; +--- + + +
+
+

Admin Login

+
+
+
+ + +
+
+ +
+
+
+
+
+ + + + diff --git a/src/pages/admin/reports.astro b/src/pages/admin/reports.astro new file mode 100644 index 0000000..2afe1ea --- /dev/null +++ b/src/pages/admin/reports.astro @@ -0,0 +1,16 @@ +--- +import { Session } from '@util/session'; +import { Permissions } from '@util/permissions'; +import { BASE_PATH } from 'astro:env/client'; +import AdminLayout from '@layouts/admin/AdminLayout.astro'; +import SidebarActions from '@app/admin/reports/SidebarActions.svelte'; +import Reports from '@app/admin/reports/Reports.svelte'; + +const session = Session.sessionFromCookies(Astro.cookies, Permissions.Reports); +if (!session) return Astro.redirect(`${BASE_PATH}/admin`); +--- + + + + + diff --git a/src/pages/admin/settings.astro b/src/pages/admin/settings.astro new file mode 100644 index 0000000..35e5988 --- /dev/null +++ b/src/pages/admin/settings.astro @@ -0,0 +1,17 @@ +--- +import AdminLayout from '@layouts/admin/AdminLayout.astro'; +import Settings from '@app/admin/settings/Settings.svelte'; +import { db } from '@db/database.ts'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { BASE_PATH } from 'astro:env/client'; + +const session = Session.sessionFromCookies(Astro.cookies, Permissions.Settings); +if (!session) return Astro.redirect(`${BASE_PATH}/admin`); + +const settings = await db.getSettings({}); +--- + + + + diff --git a/src/pages/admin/teams.astro b/src/pages/admin/teams.astro new file mode 100644 index 0000000..eb8b436 --- /dev/null +++ b/src/pages/admin/teams.astro @@ -0,0 +1,16 @@ +--- +import AdminLayout from '@layouts/admin/AdminLayout.astro'; +import SidebarActions from '@app/admin/teams/SidebarActions.svelte'; +import Teams from '@app/admin/teams/Teams.svelte'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { BASE_PATH } from 'astro:env/client'; + +const session = Session.sessionFromCookies(Astro.cookies, Permissions.Admin); +if (!session) return Astro.redirect(`${BASE_PATH}/admin`); +--- + + + + + diff --git a/src/pages/admin/users.astro b/src/pages/admin/users.astro new file mode 100644 index 0000000..b11fb62 --- /dev/null +++ b/src/pages/admin/users.astro @@ -0,0 +1,16 @@ +--- +import AdminLayout from '@layouts/admin/AdminLayout.astro'; +import Users from '@app/admin/users/Users.svelte'; +import SidebarActions from '@app/admin/users/SidebarActions.svelte'; +import { Session } from '@util/session.ts'; +import { Permissions } from '@util/permissions.ts'; +import { BASE_PATH } from 'astro:env/client'; + +const session = Session.sessionFromCookies(Astro.cookies, Permissions.Admin); +if (!session) return Astro.redirect(`${BASE_PATH}/admin`); +--- + + + + + diff --git a/src/pages/api/feedback/index.ts b/src/pages/api/feedback/index.ts new file mode 100644 index 0000000..d7652d2 --- /dev/null +++ b/src/pages/api/feedback/index.ts @@ -0,0 +1,37 @@ +import { z } from 'astro:schema'; +import type { APIRoute } from 'astro'; +import { API_SECRET } from 'astro:env/server'; +import { db } from '@db/database.ts'; +import { BASE_PATH } from 'astro:env/client'; + +const postSchema = z.object({ + event: z.string(), + title: z.string(), + users: z.array(z.string()) +}); + +export const POST: APIRoute = async ({ request }) => { + if (API_SECRET && request.headers.get('authorization') !== `Basic ${API_SECRET}`) { + return new Response(null, { status: 401 }); + } + + let parsed; + try { + parsed = await postSchema.parseAsync(await request.json()); + } catch (_) { + return new Response(null, { status: 400 }); + } + + const feedbacks = await db.addUserFeedbacks({ + event: parsed.event, + title: parsed.title, + uuids: parsed.users + }); + + const response = feedbacks.map((feedback) => ({ + uuid: feedback.uuid, + url: `${BASE_PATH}/feedback/${feedback.urlHash}` + })); + + return new Response(JSON.stringify({ feedback: response }), { status: 200 }); +}; diff --git a/src/pages/api/player/death.ts b/src/pages/api/player/death.ts new file mode 100644 index 0000000..72f59b5 --- /dev/null +++ b/src/pages/api/player/death.ts @@ -0,0 +1,44 @@ +import type { APIRoute } from 'astro'; +import { API_SECRET } from 'astro:env/server'; +import { z } from 'astro:schema'; +import { db } from '@db/database.ts'; + +const postSchema = z.object({ + user: z.string(), + killer: z.string().nullable(), + message: z.string() +}); + +export const POST: APIRoute = async ({ request }) => { + if (API_SECRET && request.headers.get('authorization') !== `Basic ${API_SECRET}`) { + return new Response(null, { status: 401 }); + } + + let parsed; + try { + parsed = await postSchema.parseAsync(await request.json()); + } catch (_) { + return new Response(null, { status: 400 }); + } + + let users; + if (parsed.killer) { + users = await db.getUsersByUuid({ uuid: [parsed.user, parsed.killer] }); + } else { + users = await db.getUsersByUuid({ uuid: [parsed.user] }); + } + const user = users[parsed.user]; + const killer = parsed.killer ? users[parsed.killer] : null; + + if (!user || (!killer && parsed.killer)) { + return new Response(null, { status: 404 }); + } + + await db.addDeath({ + message: parsed.message, + deadUserId: user.id, + killerUserId: killer?.id + }); + + return new Response(null, { status: 200 }); +}; diff --git a/src/pages/api/player/status.ts b/src/pages/api/player/status.ts new file mode 100644 index 0000000..952a7f9 --- /dev/null +++ b/src/pages/api/player/status.ts @@ -0,0 +1,74 @@ +import type { APIRoute } from 'astro'; +import { db } from '@db/database.ts'; +import { API_SECRET } from 'astro:env/server'; +import { z } from 'astro:schema'; + +const postSchema = z.object({ + user: z.string() +}); + +export const POST: APIRoute = async ({ request }) => { + if (API_SECRET && request.headers.get('authorization') !== `Basic ${API_SECRET}`) { + return new Response(null, { status: 401 }); + } + + let parsed; + try { + parsed = await postSchema.parseAsync(await request.json()); + } catch (_) { + return new Response(null, { status: 400 }); + } + + const user = (await db.getUsersByUuid({ uuid: [parsed.user] }))[parsed.user]; + if (user == null) { + return new Response(null, { status: 404 }); + } + const team = await db.getTeamByUserUuid({ uuid: parsed.user }); + if (team == null) { + return new Response(null, { status: 404 }); + } + const death = await db.getDeathByUserId({ userId: user.id }); + const strikes = await db.getStrikesByTeamId({ teamId: team.team.id }); + + const response = { + team: { + name: team.team.name, + color: team.team.color + }, + dead: death != null, + strikeWeight: strikes.map((strike) => strike.reason.weight).reduce((a, b) => a + b, 0), + lastJoined: team.team.lastJoined ? new Date(team.team.lastJoined).getTime() : null + }; + + return new Response(JSON.stringify(response)); +}; + +const putSchema = z.object({ + user: z.string(), + lastJoined: z.number() +}); + +export const PUT: APIRoute = async ({ request }) => { + if (API_SECRET && request.headers.get('authorization') !== `Basic ${API_SECRET}`) { + return new Response(null, { status: 401 }); + } + + let parsed; + try { + parsed = await putSchema.parseAsync(await request.json()); + } catch (_) { + return new Response(null, { status: 400 }); + } + + const team = await db.getTeamByUserUuid({ uuid: parsed.user }); + if (team == null) { + return new Response(null, { status: 404 }); + } + + await db.editTeam({ + id: team.team.id, + lastJoined: new Date(parsed.lastJoined).toISOString() + }); + + return new Response(null, { status: 200 }); +}; diff --git a/src/pages/api/team/index.ts b/src/pages/api/team/index.ts new file mode 100644 index 0000000..5c1202f --- /dev/null +++ b/src/pages/api/team/index.ts @@ -0,0 +1,26 @@ +import type { APIRoute } from 'astro'; +import { db } from '@db/database.ts'; +import { API_SECRET } from 'astro:env/server'; + +export const GET: APIRoute = async ({ request }) => { + if (API_SECRET && request.headers.get('authorization') !== `Basic ${API_SECRET}`) { + return new Response(null, { status: 401 }); + } + + const teams = await db.getTeams({}); + + const response = []; + for (const team of teams) { + const users = []; + if (team.memberOne.uuid) users.push(team.memberOne.uuid); + if (team.memberTwo.uuid) users.push(team.memberTwo.uuid); + + response.push({ + name: team.name, + color: team.color, + users: users + }); + } + + return new Response(JSON.stringify(response)); +}; diff --git a/src/pages/faq.astro b/src/pages/faq.astro new file mode 100644 index 0000000..c436d83 --- /dev/null +++ b/src/pages/faq.astro @@ -0,0 +1,214 @@ +--- +import WebsiteLayout from '@layouts/website/WebsiteLayout.astro'; +import { PAYPAL_LINK, TEAMSPEAK_LINK, DISCORD_LINK, SERVER_IP } from 'astro:env/client'; + +const faq = [ + { + section: 'Anmeldung', + questions: [ + { + title: 'Wann startet Varo 5?', + content: `

Der Start von Varo 5 findet gemeinsam am 23.06.2025 um 19:00 Uhr statt. Am besten bist du schon +einige Minuten vorher auf dem Server. Denk daran: Nur wenn du und dein Teampartner beide anwesend seid, könnt ihr am +Start teilnehmen.

` + }, + { + title: 'Was tun, wenn ich am Starttermin nicht kann?', + content: `

Wenn du oder dein Teampartner am 23.06.2025 um 19:00 Uhr verhindert seid, könnt ihr einen Tag +später, also am 24.06.2025 ab 17:00 Uhr einsteigen. Die 30 Minuten von Tag 1 werden euch aus Fairness-Gründen allerdings +nicht gutgeschrieben.

` + }, + { + title: 'Wer kann alles mitspielen?', + content: `

Jeder, der Minecraft Java besitzt, mindestens 6 Jahre alt ist und einen Teampartner hat, kann +mitspielen.

` + }, + { + title: 'Wie kann ich mitspielen?', + content: `

Um mitzuspielen, musst du dich einfach hier auf der Website anmelden und der WhatsApp-Gruppe +beitreten. Nur wenn dein Team vollständig ist, also aus zwei Spielern besteht, kannst du teilnehmen.

` + }, + { + title: 'Auf welcher Version läuft der Server und was ist der Schwierigkeitsgrad?', + content: `

Gespielt wird in der aktuellsten Minecraft Java Version mit dem Schwierigkeitsgrad „Normal“.

` + }, + { + title: 'Kann ich auch als Bedrock-Spieler (Handy oder Konsole) mitspielen?', + content: `

Nein, als Bedrock-Spieler kannst du bei Varo leider nicht mitspielen. Das gilt auch, falls du einen +Proxie betreibst, der Bedrock zu Java proxiet.

` + }, + { + title: 'Ich wurde in CraftAttack gebannt, kann ich bei Varo trotzdem mitspielen?', + content: `

In Einzelfällen sind in CraftAttack gebannte Spieler auch von Varo ausgeschlossen. Diese können +sich dann erst gar nicht anmelden.

` + }, + { + title: 'Ich kann mich nicht anmelden, was kann ich tun?', + content: `

Wenn du dich nicht anmelden kannst, solltest du Folgendes überprüfen:

1. Ist dein Spielername +korrekt geschrieben?
2. Hast du dich bereits angemeldet? Es ist nur ein Account pro Spieler erlaubt.

Falls du +dich aus unerklärlichen Gründen trotzdem nicht anmelden kannst, kannst du dich jederzeit beim Admin-Team melden.

` + }, + { + title: 'Ich komme nicht auf den Server, was kann ich tun?', + content: `

Wenn du dem Server nicht beitreten kannst, überprüfe Folgendes:

+
    +
  1. Hast du die korrekte IP verwendet? Sie lautet varo.mhsl.eu.
  2. +
  3. Hast du Leerzeichen verwendet, insbesondere vor oder hinter der IP, oder dich vertippt?
  4. +
  5. Kommst du auf andere Server, oder ist es nur ein Problem beim Varo-Server?
  6. +
  7. Hast du dich korrekt auf der Webseite angemeldet?
  8. +
+Falls du trotzdem nicht beitreten kannst, melde dich beim Admin-Team und halte die +Fehlermeldung bereit.

` + }, + { + title: 'Was ist die Server-IP?', + content: `

Die Serveradresse lautet: ${SERVER_IP}

` + }, + { + title: 'Ist es kostenlos mitzuspielen?', + content: `

Ja, die Teilnahme ist selbstverständlich kostenlos. Wir freuen uns aber, wenn du das Projekt mit +einer Spende nach der Anmeldung unterstützen würdest. Hier kannst du für das Projekt spenden: +${PAYPAL_LINK}.

` + }, + { + title: 'Die Anmeldefrist ist vorbei, aber ich möchte mich trotzdem noch anmelden. Was kann ich tun?', + content: `

Eine nachträgliche Anmeldung ist ausnahmslos nicht möglich.

` + }, + { + title: 'Ist ein 2. Account erlaubt?', + content: `

Nein, pro Teilnehmer ist nur ein Account zugelassen.

` + } + ] + }, + { + section: 'Anderes', + questions: [ + { + title: 'Wie viel Spielzeit habe ich pro Tag?', + content: `

Sobald du den Server betritt müssen du und dein Teampartner 30 Minuten lang am Stück auf dem Server +spielen. Spielt dein Team an einem Tag nicht, dürft ihr am Folgetag 60 Minuten, also zwei 30-Minuten-Slots spielen. Pro +Tag wird deinem Team also eine Zeit von 30 Minuten gutgeschrieben. Sollte dein Team mehr als 90 Minuten Spielzeit +angesammelt haben, wird es automatisch vom Projekt ausgeschlossen.

` + }, + { + title: 'Von wann bis wann ich dem Server täglich online?', + content: `

Du kannst dem Server zu Beginn täglich von 17:00 Uhr bis 21:00 Uhr joinen.

` + }, + { + title: 'Gibt es eine Finale und wie läuft es ab?', + content: `

Es gibt planmäßig kein öffentliches Finale, aber natürlich wirst du am Ende über das Siegerteam +informiert.

` + }, + { + title: 'Kann ich meinen Teampartner nach dem Tod spectaten?', + content: `

Nein, diese Möglichkeit besteht nicht. Er kann dir aber natürlich gerne seinen Bildschirm +übertragen.

` + }, + { + title: 'Wie kann ich einen Admin kontaktieren?', + content: `

Einen Admin kannst du im Chat, über WhatsApp, per Teamspeak +(mhsl.eu) oder Discord +(${DISCORD_LINK}) kontaktieren.

` + }, + { + title: 'Wer ist eigentlich Organisator und warum?', + content: `

Wir sind ein kleines Team von Minecraft-Enthusiasten, die neben Minecraft CraftAttack dieses Jahr +das Sommerprojekt Varo organisieren. Weitere Infos findest du auf der Teamseite.

` + }, + { + title: 'Spielen die Admins auch mit?', + content: `

Nein, alle Varo Admins sind keine Projektteilnehmer und sind lediglich für die Organisation, die +Kontrolle der Regeln und der technische Umsetzung zuständig. Falls Euch Admin-Namen aus CraftAttack bekannt sind, keine +Sorge: Das Adminteam von CraftAttack und Varo ist nicht zwingend identisch!

` + }, + { + title: 'Warum benötigt ihr meine Daten bei der Anmeldung?', + content: `

Deine Daten werden nur intern gespeichert und dienen den Admins rein zur Organisation des +Projekts.

` + }, + { + title: 'Gibt es einen Teamspeak-Server?', + content: `

Ja, den offiziellen Teamspeak-Server erreichst du unter der IP +mhsl.eu.

` + }, + { + title: 'Gibt es einen Discord-Server?', + content: `

Ja, den offiziellen Discord-Server erreichst du unter +${DISCORD_LINK}.

` + }, + { + title: 'Wozu dient die Varo-WhatsApp-Gruppe?', + content: `

In der WhatsApp-Gruppe erhältst du alle wichtigen Infos bezüglich Varo.

` + } + ] + }, + { + section: 'Ingame', + questions: [ + { + title: 'Gibt es eine Worldborder?', + content: `

Ja, es gibt außerdem eine Worldborder, die sich mit der Zeit – außerhalb der Spielzeiten – langsam +verkleinert. Du wirst im Spiel über alles wichtige informiert, sobald du dich der Border gefährlich näherst.

` + }, + { + title: 'Kann ich ein eigenes Netherportal bauen?', + content: `

Nein, das einzige Netherportal steht am Spawn. Weitere können nicht eröffnet werden.

` + }, + { + title: 'Wie kann ich einen Report erstellen?', + content: `

Neben der Kontrolle durch die Admins kann mit /report ein Report erstellt werden, um Regelverstöße +zu melden. Ohne feste Belege, also einer Bildschirmaufnahme, ist ein Report bei Ingameverstößen leider nutzlos.

` + }, + { + title: 'Welche Spielinhalte (Items etc.) sind deaktiviert?', + content: `
    +
  1. alle Netherite Items
  2. +
  3. alle Tränke der Stufe 2, ausgenommen Direktheilung 2
  4. +
  5. Totems
  6. +
  7. Enderkristalle
  8. +
  9. Mace
  10. +
  11. OP-Goldapfel
  12. +
  13. Villager Handel mit dem Bibliothekar und Panzermacher
  14. +
` + }, + { + title: 'Warum sind diese Spielinhalte deaktiviert?', + content: `

Unser Ziel ist es, ein großartiges Projekt für alle Beteiligten auf die Beine zu stellen. Varo +haben wir in dieser Form und Größe noch nie veranstaltet – auch für uns ist es also ein neues Kapitel, bei dem wir +wertvolle Erfahrungen sammeln wollen.
Wir haben die Regeln nach bestem Wissen und Gewissen so aufgestellt, um das +bestmögliche Spielerlebnis schaffen. Trotzdem ist uns dein Feedback wichtig: Nach dem Projekt holen wir deine Meinung +ein, um Varo – und auch unsere künftigen Projekte – nachhaltig weiterzuentwickeln.

` + } + ] + } +]; +--- + + +
+

FAQ

+
+ { + faq.map((questions) => ( +
+

{questions.section}

+
+ {questions.questions.map((question) => ( + <> +
+ +
{question.title}
+
+
+
+
+ + + ))} +
+
+ )) + } +
+
+ diff --git a/src/pages/feedback.astro b/src/pages/feedback.astro new file mode 100644 index 0000000..c01eb09 --- /dev/null +++ b/src/pages/feedback.astro @@ -0,0 +1,119 @@ +--- +import WebsiteLayout from '@layouts/website/WebsiteLayout.astro'; +import ConfirmPopup from '@components/popup/ConfirmPopup.svelte'; +import Popup from '@components/popup/Popup.svelte'; +import Select from '@components/input/Select.svelte'; +import Textarea from '@components/input/Textarea.svelte'; +import Input from '@components/input/Input.svelte'; +--- + + +
+
+

Feedback & Kontakt

+
+
+