refactored structure and added backend
authorPhiTux <redacted>
Sat, 30 Nov 2024 15:51:17 +0000 (16:51 +0100)
committerPhiTux <redacted>
Sat, 30 Nov 2024 15:51:17 +0000 (16:51 +0100)
28 files changed:
backend/.gitignore [new file with mode: 0644]
backend/requirements.txt [new file with mode: 0644]
backend/server/__init__.py [new file with mode: 0644]
backend/server/__pycache__/__init__.cpython-312.pyc [new file with mode: 0644]
backend/server/__pycache__/main.cpython-312.pyc [new file with mode: 0644]
backend/server/main.py [new file with mode: 0644]
backend/server/routers/__init__.py [new file with mode: 0644]
backend/server/routers/__pycache__/__init__.cpython-312.pyc [new file with mode: 0644]
backend/server/routers/__pycache__/users.cpython-312.pyc [new file with mode: 0644]
backend/server/routers/users.py [new file with mode: 0644]
frontend/.gitignore [new file with mode: 0644]
frontend/.npmrc [new file with mode: 0644]
frontend/.prettierignore [new file with mode: 0644]
frontend/.prettierrc [new file with mode: 0644]
frontend/README.md [new file with mode: 0644]
frontend/eslint.config.js [new file with mode: 0644]
frontend/package-lock.json [new file with mode: 0644]
frontend/package.json [new file with mode: 0644]
frontend/src/app.html [new file with mode: 0644]
frontend/src/lib/assets/locked_heart_with_keyhole.svg [new file with mode: 0644]
frontend/src/routes/+layout.js [new file with mode: 0644]
frontend/src/routes/+layout.svelte [new file with mode: 0644]
frontend/src/routes/+page.svelte [new file with mode: 0644]
frontend/src/routes/login/+page.svelte [new file with mode: 0644]
frontend/src/scss/styles.scss [new file with mode: 0644]
frontend/static/favicon.svg [new file with mode: 0644]
frontend/svelte.config.js [new file with mode: 0644]
frontend/vite.config.js [new file with mode: 0644]

diff --git a/backend/.gitignore b/backend/.gitignore
new file mode 100644 (file)
index 0000000..14c8d94
--- /dev/null
@@ -0,0 +1,3 @@
+.venv
+.envrc
+data/
\ No newline at end of file
diff --git a/backend/requirements.txt b/backend/requirements.txt
new file mode 100644 (file)
index 0000000..bf93177
--- /dev/null
@@ -0,0 +1,3 @@
+fastapi[standard]
+pyjwt
+passlib[bcrypt]
\ No newline at end of file
diff --git a/backend/server/__init__.py b/backend/server/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/backend/server/__pycache__/__init__.cpython-312.pyc b/backend/server/__pycache__/__init__.cpython-312.pyc
new file mode 100644 (file)
index 0000000..26a3654
Binary files /dev/null and b/backend/server/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backend/server/__pycache__/main.cpython-312.pyc b/backend/server/__pycache__/main.cpython-312.pyc
new file mode 100644 (file)
index 0000000..775ae31
Binary files /dev/null and b/backend/server/__pycache__/main.cpython-312.pyc differ
diff --git a/backend/server/main.py b/backend/server/main.py
new file mode 100644 (file)
index 0000000..53952c5
--- /dev/null
@@ -0,0 +1,23 @@
+from fastapi import FastAPI
+from .routers import users
+from fastapi.middleware.cors import CORSMiddleware
+
+app = FastAPI()
+
+origins = [
+    "http://localhost:5173",
+]
+
+app.add_middleware(
+    CORSMiddleware,
+    allow_origins=origins,
+    allow_credentials=True,
+    allow_methods=["*"],
+    allow_headers=["*"],
+)
+
+app.include_router(users.router)
+
+@app.get("/")
+async def root():
+    return {"message": "Hello World"}
diff --git a/backend/server/routers/__init__.py b/backend/server/routers/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/backend/server/routers/__pycache__/__init__.cpython-312.pyc b/backend/server/routers/__pycache__/__init__.cpython-312.pyc
new file mode 100644 (file)
index 0000000..027e8b3
Binary files /dev/null and b/backend/server/routers/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backend/server/routers/__pycache__/users.cpython-312.pyc b/backend/server/routers/__pycache__/users.cpython-312.pyc
new file mode 100644 (file)
index 0000000..af62d21
Binary files /dev/null and b/backend/server/routers/__pycache__/users.cpython-312.pyc differ
diff --git a/backend/server/routers/users.py b/backend/server/routers/users.py
new file mode 100644 (file)
index 0000000..d9d7f33
--- /dev/null
@@ -0,0 +1,20 @@
+from typing import Annotated
+from fastapi import APIRouter
+from fastapi import Form
+from pydantic import BaseModel
+
+router = APIRouter()
+
+class Login(BaseModel):
+    username: str
+    password: str
+
+@router.post("/users/login")
+async def login(login: Login):
+    print(login.username, login.password)
+    return {"message": "Login"}
+
+
+@router.post("/users/register")
+async def register(username: Annotated[str, Form()], password: Annotated[str, Form()]):
+    return {"message": "Register"}
\ No newline at end of file
diff --git a/frontend/.gitignore b/frontend/.gitignore
new file mode 100644 (file)
index 0000000..79518f7
--- /dev/null
@@ -0,0 +1,21 @@
+node_modules
+
+# Output
+.output
+.vercel
+/.svelte-kit
+/build
+
+# OS
+.DS_Store
+Thumbs.db
+
+# Env
+.env
+.env.*
+!.env.example
+!.env.test
+
+# Vite
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/frontend/.npmrc b/frontend/.npmrc
new file mode 100644 (file)
index 0000000..b6f27f1
--- /dev/null
@@ -0,0 +1 @@
+engine-strict=true
diff --git a/frontend/.prettierignore b/frontend/.prettierignore
new file mode 100644 (file)
index 0000000..ab78a95
--- /dev/null
@@ -0,0 +1,4 @@
+# Package Managers
+package-lock.json
+pnpm-lock.yaml
+yarn.lock
diff --git a/frontend/.prettierrc b/frontend/.prettierrc
new file mode 100644 (file)
index 0000000..3f7802c
--- /dev/null
@@ -0,0 +1,15 @@
+{
+       "useTabs": true,
+       "singleQuote": true,
+       "trailingComma": "none",
+       "printWidth": 100,
+       "plugins": ["prettier-plugin-svelte"],
+       "overrides": [
+               {
+                       "files": "*.svelte",
+                       "options": {
+                               "parser": "svelte"
+                       }
+               }
+       ]
+}
diff --git a/frontend/README.md b/frontend/README.md
new file mode 100644 (file)
index 0000000..b5b2950
--- /dev/null
@@ -0,0 +1,38 @@
+# sv
+
+Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
+
+## Creating a project
+
+If you're seeing this, you've probably already done this step. Congrats!
+
+```bash
+# create a new project in the current directory
+npx sv create
+
+# create a new project in my-app
+npx sv create my-app
+```
+
+## Developing
+
+Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
+
+```bash
+npm run dev
+
+# or start the server and open the app in a new browser tab
+npm run dev -- --open
+```
+
+## Building
+
+To create a production version of your app:
+
+```bash
+npm run build
+```
+
+You can preview the production build with `npm run preview`.
+
+> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js
new file mode 100644 (file)
index 0000000..a526565
--- /dev/null
@@ -0,0 +1,33 @@
+import prettier from 'eslint-config-prettier';
+import js from '@eslint/js';
+import svelte from 'eslint-plugin-svelte';
+import globals from 'globals';
+import ts from 'typescript-eslint';
+
+export default ts.config(
+       js.configs.recommended,
+       ...ts.configs.recommended,
+       ...svelte.configs['flat/recommended'],
+       prettier,
+       ...svelte.configs['flat/prettier'],
+       {
+               languageOptions: {
+                       globals: {
+                               ...globals.browser,
+                               ...globals.node
+                       }
+               }
+       },
+       {
+               files: ['**/*.svelte'],
+
+               languageOptions: {
+                       parserOptions: {
+                               parser: ts.parser
+                       }
+               }
+       },
+       {
+               ignores: ['build/', '.svelte-kit/', 'dist/']
+       }
+);
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
new file mode 100644 (file)
index 0000000..067f54f
--- /dev/null
@@ -0,0 +1,3571 @@
+{
+       "name": "dailytxt",
+       "version": "0.0.1",
+       "lockfileVersion": 3,
+       "requires": true,
+       "packages": {
+               "": {
+                       "name": "dailytxt",
+                       "version": "0.0.1",
+                       "dependencies": {
+                               "@popperjs/core": "^2.11.8",
+                               "axios": "^1.7.8",
+                               "bootstrap": "^5.3.3"
+                       },
+                       "devDependencies": {
+                               "@sveltejs/adapter-auto": "^3.0.0",
+                               "@sveltejs/adapter-static": "^3.0.6",
+                               "@sveltejs/kit": "^2.0.0",
+                               "@sveltejs/vite-plugin-svelte": "^4.0.0",
+                               "@types/bootstrap": "^5.2.10",
+                               "eslint": "^9.7.0",
+                               "eslint-config-prettier": "^9.1.0",
+                               "eslint-plugin-svelte": "^2.36.0",
+                               "globals": "^15.0.0",
+                               "prettier": "^3.3.2",
+                               "prettier-plugin-svelte": "^3.2.6",
+                               "sass": "1.77.6",
+                               "svelte": "^5.0.0",
+                               "svelte-check": "^4.0.0",
+                               "typescript": "^5.0.0",
+                               "typescript-eslint": "^8.0.0",
+                               "vite": "^5.0.3"
+                       }
+               },
+               "node_modules/@ampproject/remapping": {
+                       "version": "2.3.0",
+                       "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+                       "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "@jridgewell/gen-mapping": "^0.3.5",
+                               "@jridgewell/trace-mapping": "^0.3.24"
+                       },
+                       "engines": {
+                               "node": ">=6.0.0"
+                       }
+               },
+               "node_modules/@esbuild/aix-ppc64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+                       "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+                       "cpu": [
+                               "ppc64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "aix"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/android-arm": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+                       "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+                       "cpu": [
+                               "arm"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/android-arm64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+                       "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/android-x64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+                       "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/darwin-arm64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+                       "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/darwin-x64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+                       "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/freebsd-arm64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+                       "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "freebsd"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/freebsd-x64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+                       "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "freebsd"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-arm": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+                       "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+                       "cpu": [
+                               "arm"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-arm64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+                       "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-ia32": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+                       "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+                       "cpu": [
+                               "ia32"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-loong64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+                       "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+                       "cpu": [
+                               "loong64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-mips64el": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+                       "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+                       "cpu": [
+                               "mips64el"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-ppc64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+                       "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+                       "cpu": [
+                               "ppc64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-riscv64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+                       "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+                       "cpu": [
+                               "riscv64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-s390x": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+                       "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+                       "cpu": [
+                               "s390x"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/linux-x64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+                       "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/netbsd-x64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+                       "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "netbsd"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/openbsd-x64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+                       "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "openbsd"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/sunos-x64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+                       "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "sunos"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/win32-arm64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+                       "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/win32-ia32": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+                       "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+                       "cpu": [
+                               "ia32"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@esbuild/win32-x64": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+                       "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ],
+                       "engines": {
+                               "node": ">=12"
+                       }
+               },
+               "node_modules/@eslint-community/eslint-utils": {
+                       "version": "4.4.1",
+                       "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
+                       "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
+                       "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.19.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz",
+                       "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "@eslint/object-schema": "^2.1.4",
+                               "debug": "^4.3.1",
+                               "minimatch": "^3.1.2"
+                       },
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       }
+               },
+               "node_modules/@eslint/core": {
+                       "version": "0.9.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz",
+                       "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       }
+               },
+               "node_modules/@eslint/eslintrc": {
+                       "version": "3.2.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
+                       "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
+                       "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.15.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz",
+                       "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       }
+               },
+               "node_modules/@eslint/object-schema": {
+                       "version": "2.1.4",
+                       "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
+                       "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
+                       "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.3",
+                       "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz",
+                       "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "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.1",
+                       "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
+                       "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "engines": {
+                               "node": ">=18.18"
+                       },
+                       "funding": {
+                               "type": "github",
+                               "url": "https://github.com/sponsors/nzakas"
+                       }
+               },
+               "node_modules/@jridgewell/gen-mapping": {
+                       "version": "0.3.5",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+                       "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+                       "dev": true,
+                       "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==",
+                       "dev": true,
+                       "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==",
+                       "dev": true,
+                       "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==",
+                       "dev": true,
+                       "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==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/resolve-uri": "^3.1.0",
+                               "@jridgewell/sourcemap-codec": "^1.4.14"
+                       }
+               },
+               "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/@polka/url": {
+                       "version": "1.0.0-next.28",
+                       "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
+                       "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/@popperjs/core": {
+                       "version": "2.11.8",
+                       "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+                       "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+                       "license": "MIT",
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/popperjs"
+                       }
+               },
+               "node_modules/@rollup/rollup-android-arm-eabi": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz",
+                       "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==",
+                       "cpu": [
+                               "arm"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ]
+               },
+               "node_modules/@rollup/rollup-android-arm64": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz",
+                       "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ]
+               },
+               "node_modules/@rollup/rollup-darwin-arm64": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz",
+                       "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ]
+               },
+               "node_modules/@rollup/rollup-darwin-x64": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz",
+                       "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ]
+               },
+               "node_modules/@rollup/rollup-freebsd-arm64": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz",
+                       "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "freebsd"
+                       ]
+               },
+               "node_modules/@rollup/rollup-freebsd-x64": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz",
+                       "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "freebsd"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz",
+                       "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==",
+                       "cpu": [
+                               "arm"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz",
+                       "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==",
+                       "cpu": [
+                               "arm"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-arm64-gnu": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz",
+                       "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-arm64-musl": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz",
+                       "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz",
+                       "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==",
+                       "cpu": [
+                               "ppc64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz",
+                       "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==",
+                       "cpu": [
+                               "riscv64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-s390x-gnu": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz",
+                       "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==",
+                       "cpu": [
+                               "s390x"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-x64-gnu": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz",
+                       "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-x64-musl": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz",
+                       "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-win32-arm64-msvc": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz",
+                       "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ]
+               },
+               "node_modules/@rollup/rollup-win32-ia32-msvc": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz",
+                       "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==",
+                       "cpu": [
+                               "ia32"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ]
+               },
+               "node_modules/@rollup/rollup-win32-x64-msvc": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz",
+                       "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ]
+               },
+               "node_modules/@sveltejs/adapter-auto": {
+                       "version": "3.3.1",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-3.3.1.tgz",
+                       "integrity": "sha512-5Sc7WAxYdL6q9j/+D0jJKjGREGlfIevDyHSQ2eNETHcB1TKlQWHcAo8AS8H1QdjNvSXpvOwNjykDUHPEAyGgdQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "import-meta-resolve": "^4.1.0"
+                       },
+                       "peerDependencies": {
+                               "@sveltejs/kit": "^2.0.0"
+                       }
+               },
+               "node_modules/@sveltejs/adapter-static": {
+                       "version": "3.0.6",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.6.tgz",
+                       "integrity": "sha512-MGJcesnJWj7FxDcB/GbrdYD3q24Uk0PIL4QIX149ku+hlJuj//nxUbb0HxUTpjkecWfHjVveSUnUaQWnPRXlpg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "peerDependencies": {
+                               "@sveltejs/kit": "^2.0.0"
+                       }
+               },
+               "node_modules/@sveltejs/kit": {
+                       "version": "2.8.4",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.8.4.tgz",
+                       "integrity": "sha512-oDSBHPokbP2iaQlHiEWAkVLsIugsXve8YtABtlyHBUljA63Wgx0UtV8MSOQOGpRft1M+Cd5rzer+0SFlppQwOg==",
+                       "dev": true,
+                       "hasInstallScript": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@types/cookie": "^0.6.0",
+                               "cookie": "^0.6.0",
+                               "devalue": "^5.1.0",
+                               "esm-env": "^1.0.0",
+                               "import-meta-resolve": "^4.1.0",
+                               "kleur": "^4.1.5",
+                               "magic-string": "^0.30.5",
+                               "mrmime": "^2.0.0",
+                               "sade": "^1.8.1",
+                               "set-cookie-parser": "^2.6.0",
+                               "sirv": "^3.0.0",
+                               "tiny-glob": "^0.2.9"
+                       },
+                       "bin": {
+                               "svelte-kit": "svelte-kit.js"
+                       },
+                       "engines": {
+                               "node": ">=18.13"
+                       },
+                       "peerDependencies": {
+                               "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1",
+                               "svelte": "^4.0.0 || ^5.0.0-next.0",
+                               "vite": "^5.0.3"
+                       }
+               },
+               "node_modules/@sveltejs/vite-plugin-svelte": {
+                       "version": "4.0.2",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.2.tgz",
+                       "integrity": "sha512-Y9r/fWy539XlAC7+5wfNJ4zH6TygUYoQ0Eegzp0zDDqhJ54+92gOyOX1l4MO1cJSx0O+Gp13YePT5XEa3+kX0w==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@sveltejs/vite-plugin-svelte-inspector": "^3.0.0-next.0||^3.0.0",
+                               "debug": "^4.3.7",
+                               "deepmerge": "^4.3.1",
+                               "kleur": "^4.1.5",
+                               "magic-string": "^0.30.12",
+                               "vitefu": "^1.0.3"
+                       },
+                       "engines": {
+                               "node": "^18.0.0 || ^20.0.0 || >=22"
+                       },
+                       "peerDependencies": {
+                               "svelte": "^5.0.0-next.96 || ^5.0.0",
+                               "vite": "^5.0.0"
+                       }
+               },
+               "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
+                       "version": "3.0.1",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-3.0.1.tgz",
+                       "integrity": "sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "debug": "^4.3.7"
+                       },
+                       "engines": {
+                               "node": "^18.0.0 || ^20.0.0 || >=22"
+                       },
+                       "peerDependencies": {
+                               "@sveltejs/vite-plugin-svelte": "^4.0.0-next.0||^4.0.0",
+                               "svelte": "^5.0.0-next.96 || ^5.0.0",
+                               "vite": "^5.0.0"
+                       }
+               },
+               "node_modules/@types/bootstrap": {
+                       "version": "5.2.10",
+                       "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.10.tgz",
+                       "integrity": "sha512-F2X+cd6551tep0MvVZ6nM8v7XgGN/twpdNDjqS1TUM7YFNEtQYWk+dKAnH+T1gr6QgCoGMPl487xw/9hXooa2g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@popperjs/core": "^2.9.2"
+                       }
+               },
+               "node_modules/@types/cookie": {
+                       "version": "0.6.0",
+                       "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
+                       "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/@types/estree": {
+                       "version": "1.0.6",
+                       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+                       "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/@types/json-schema": {
+                       "version": "7.0.15",
+                       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+                       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/@typescript-eslint/eslint-plugin": {
+                       "version": "8.16.0",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz",
+                       "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@eslint-community/regexpp": "^4.10.0",
+                               "@typescript-eslint/scope-manager": "8.16.0",
+                               "@typescript-eslint/type-utils": "8.16.0",
+                               "@typescript-eslint/utils": "8.16.0",
+                               "@typescript-eslint/visitor-keys": "8.16.0",
+                               "graphemer": "^1.4.0",
+                               "ignore": "^5.3.1",
+                               "natural-compare": "^1.4.0",
+                               "ts-api-utils": "^1.3.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"
+                       },
+                       "peerDependenciesMeta": {
+                               "typescript": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/@typescript-eslint/parser": {
+                       "version": "8.16.0",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz",
+                       "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "@typescript-eslint/scope-manager": "8.16.0",
+                               "@typescript-eslint/types": "8.16.0",
+                               "@typescript-eslint/typescript-estree": "8.16.0",
+                               "@typescript-eslint/visitor-keys": "8.16.0",
+                               "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"
+                       },
+                       "peerDependenciesMeta": {
+                               "typescript": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/@typescript-eslint/scope-manager": {
+                       "version": "8.16.0",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz",
+                       "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/types": "8.16.0",
+                               "@typescript-eslint/visitor-keys": "8.16.0"
+                       },
+                       "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.16.0",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz",
+                       "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/typescript-estree": "8.16.0",
+                               "@typescript-eslint/utils": "8.16.0",
+                               "debug": "^4.3.4",
+                               "ts-api-utils": "^1.3.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"
+                       },
+                       "peerDependenciesMeta": {
+                               "typescript": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/@typescript-eslint/types": {
+                       "version": "8.16.0",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz",
+                       "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==",
+                       "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.16.0",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz",
+                       "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "@typescript-eslint/types": "8.16.0",
+                               "@typescript-eslint/visitor-keys": "8.16.0",
+                               "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": "^1.3.0"
+                       },
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       },
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/typescript-eslint"
+                       },
+                       "peerDependenciesMeta": {
+                               "typescript": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "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.16.0",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz",
+                       "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@eslint-community/eslint-utils": "^4.4.0",
+                               "@typescript-eslint/scope-manager": "8.16.0",
+                               "@typescript-eslint/types": "8.16.0",
+                               "@typescript-eslint/typescript-estree": "8.16.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"
+                       },
+                       "peerDependenciesMeta": {
+                               "typescript": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/@typescript-eslint/visitor-keys": {
+                       "version": "8.16.0",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz",
+                       "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/types": "8.16.0",
+                               "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/acorn": {
+                       "version": "8.14.0",
+                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+                       "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "bin": {
+                               "acorn": "bin/acorn"
+                       },
+                       "engines": {
+                               "node": ">=0.4.0"
+                       }
+               },
+               "node_modules/acorn-jsx": {
+                       "version": "5.3.2",
+                       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+                       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "peerDependencies": {
+                               "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+                       }
+               },
+               "node_modules/acorn-typescript": {
+                       "version": "1.4.13",
+                       "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz",
+                       "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "peerDependencies": {
+                               "acorn": ">=8.9.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-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/anymatch": {
+                       "version": "3.1.3",
+                       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+                       "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+                       "dev": true,
+                       "license": "ISC",
+                       "dependencies": {
+                               "normalize-path": "^3.0.0",
+                               "picomatch": "^2.0.4"
+                       },
+                       "engines": {
+                               "node": ">= 8"
+                       }
+               },
+               "node_modules/argparse": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+                       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+                       "dev": true,
+                       "license": "Python-2.0"
+               },
+               "node_modules/aria-query": {
+                       "version": "5.3.2",
+                       "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+                       "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "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/axios": {
+                       "version": "1.7.8",
+                       "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz",
+                       "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==",
+                       "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==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/balanced-match": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+                       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/binary-extensions": {
+                       "version": "2.3.0",
+                       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+                       "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/bootstrap": {
+                       "version": "5.3.3",
+                       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
+                       "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
+                       "funding": [
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/twbs"
+                               },
+                               {
+                                       "type": "opencollective",
+                                       "url": "https://opencollective.com/bootstrap"
+                               }
+                       ],
+                       "license": "MIT",
+                       "peerDependencies": {
+                               "@popperjs/core": "^2.11.8"
+                       }
+               },
+               "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==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "balanced-match": "^1.0.0",
+                               "concat-map": "0.0.1"
+                       }
+               },
+               "node_modules/braces": {
+                       "version": "3.0.3",
+                       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+                       "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "fill-range": "^7.1.1"
+                       },
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/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/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/chokidar": {
+                       "version": "3.6.0",
+                       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+                       "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "anymatch": "~3.1.2",
+                               "braces": "~3.0.2",
+                               "glob-parent": "~5.1.2",
+                               "is-binary-path": "~2.1.0",
+                               "is-glob": "~4.0.1",
+                               "normalize-path": "~3.0.0",
+                               "readdirp": "~3.6.0"
+                       },
+                       "engines": {
+                               "node": ">= 8.10.0"
+                       },
+                       "funding": {
+                               "url": "https://paulmillr.com/funding/"
+                       },
+                       "optionalDependencies": {
+                               "fsevents": "~2.3.2"
+                       }
+               },
+               "node_modules/chokidar/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/color-convert": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+                       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "color-name": "~1.1.4"
+                       },
+                       "engines": {
+                               "node": ">=7.0.0"
+                       }
+               },
+               "node_modules/color-name": {
+                       "version": "1.1.4",
+                       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+                       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/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/concat-map": {
+                       "version": "0.0.1",
+                       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+                       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/cookie": {
+                       "version": "0.6.0",
+                       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+                       "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.6"
+                       }
+               },
+               "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/cssesc": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+                       "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "bin": {
+                               "cssesc": "bin/cssesc"
+                       },
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
+               "node_modules/debug": {
+                       "version": "4.3.7",
+                       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+                       "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "ms": "^2.1.3"
+                       },
+                       "engines": {
+                               "node": ">=6.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "supports-color": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "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==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
+               "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/devalue": {
+                       "version": "5.1.1",
+                       "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz",
+                       "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/esbuild": {
+                       "version": "0.21.5",
+                       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+                       "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+                       "dev": true,
+                       "hasInstallScript": true,
+                       "license": "MIT",
+                       "bin": {
+                               "esbuild": "bin/esbuild"
+                       },
+                       "engines": {
+                               "node": ">=12"
+                       },
+                       "optionalDependencies": {
+                               "@esbuild/aix-ppc64": "0.21.5",
+                               "@esbuild/android-arm": "0.21.5",
+                               "@esbuild/android-arm64": "0.21.5",
+                               "@esbuild/android-x64": "0.21.5",
+                               "@esbuild/darwin-arm64": "0.21.5",
+                               "@esbuild/darwin-x64": "0.21.5",
+                               "@esbuild/freebsd-arm64": "0.21.5",
+                               "@esbuild/freebsd-x64": "0.21.5",
+                               "@esbuild/linux-arm": "0.21.5",
+                               "@esbuild/linux-arm64": "0.21.5",
+                               "@esbuild/linux-ia32": "0.21.5",
+                               "@esbuild/linux-loong64": "0.21.5",
+                               "@esbuild/linux-mips64el": "0.21.5",
+                               "@esbuild/linux-ppc64": "0.21.5",
+                               "@esbuild/linux-riscv64": "0.21.5",
+                               "@esbuild/linux-s390x": "0.21.5",
+                               "@esbuild/linux-x64": "0.21.5",
+                               "@esbuild/netbsd-x64": "0.21.5",
+                               "@esbuild/openbsd-x64": "0.21.5",
+                               "@esbuild/sunos-x64": "0.21.5",
+                               "@esbuild/win32-arm64": "0.21.5",
+                               "@esbuild/win32-ia32": "0.21.5",
+                               "@esbuild/win32-x64": "0.21.5"
+                       }
+               },
+               "node_modules/escape-string-regexp": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+                       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=10"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/eslint": {
+                       "version": "9.15.0",
+                       "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz",
+                       "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@eslint-community/eslint-utils": "^4.2.0",
+                               "@eslint-community/regexpp": "^4.12.1",
+                               "@eslint/config-array": "^0.19.0",
+                               "@eslint/core": "^0.9.0",
+                               "@eslint/eslintrc": "^3.2.0",
+                               "@eslint/js": "9.15.0",
+                               "@eslint/plugin-kit": "^0.2.3",
+                               "@humanfs/node": "^0.16.6",
+                               "@humanwhocodes/module-importer": "^1.0.1",
+                               "@humanwhocodes/retry": "^0.4.1",
+                               "@types/estree": "^1.0.6",
+                               "@types/json-schema": "^7.0.15",
+                               "ajv": "^6.12.4",
+                               "chalk": "^4.0.0",
+                               "cross-spawn": "^7.0.5",
+                               "debug": "^4.3.2",
+                               "escape-string-regexp": "^4.0.0",
+                               "eslint-scope": "^8.2.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"
+                       },
+                       "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.5.1",
+                       "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz",
+                       "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "semver": "^7.5.4"
+                       },
+                       "engines": {
+                               "node": ">=12"
+                       },
+                       "peerDependencies": {
+                               "eslint": ">=6.0.0"
+                       }
+               },
+               "node_modules/eslint-config-prettier": {
+                       "version": "9.1.0",
+                       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz",
+                       "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "bin": {
+                               "eslint-config-prettier": "bin/cli.js"
+                       },
+                       "peerDependencies": {
+                               "eslint": ">=7.0.0"
+                       }
+               },
+               "node_modules/eslint-plugin-svelte": {
+                       "version": "2.46.0",
+                       "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.0.tgz",
+                       "integrity": "sha512-1A7iEMkzmCZ9/Iz+EAfOGYL8IoIG6zeKEq1SmpxGeM5SXmoQq+ZNnCpXFVJpsxPWYx8jIVGMerQMzX20cqUl0g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@eslint-community/eslint-utils": "^4.4.0",
+                               "@jridgewell/sourcemap-codec": "^1.4.15",
+                               "eslint-compat-utils": "^0.5.1",
+                               "esutils": "^2.0.3",
+                               "known-css-properties": "^0.35.0",
+                               "postcss": "^8.4.38",
+                               "postcss-load-config": "^3.1.4",
+                               "postcss-safe-parser": "^6.0.0",
+                               "postcss-selector-parser": "^6.1.0",
+                               "semver": "^7.6.2",
+                               "svelte-eslint-parser": "^0.43.0"
+                       },
+                       "engines": {
+                               "node": "^14.17.0 || >=16.0.0"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ota-meshi"
+                       },
+                       "peerDependencies": {
+                               "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0",
+                               "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "svelte": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/eslint-scope": {
+                       "version": "8.2.0",
+                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz",
+                       "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
+                       "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/esm-env": {
+                       "version": "1.1.4",
+                       "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.1.4.tgz",
+                       "integrity": "sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==",
+                       "dev": true,
+                       "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/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.2.2",
+                       "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz",
+                       "integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/sourcemap-codec": "^1.4.15",
+                               "@types/estree": "^1.0.1"
+                       }
+               },
+               "node_modules/esrecurse": {
+                       "version": "4.3.0",
+                       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+                       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "estraverse": "^5.2.0"
+                       },
+                       "engines": {
+                               "node": ">=4.0"
+                       }
+               },
+               "node_modules/estraverse": {
+                       "version": "5.3.0",
+                       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+                       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "engines": {
+                               "node": ">=4.0"
+                       }
+               },
+               "node_modules/esutils": {
+                       "version": "2.0.3",
+                       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+                       "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
+               "node_modules/fast-deep-equal": {
+                       "version": "3.1.3",
+                       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+                       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/fast-glob": {
+                       "version": "3.3.2",
+                       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+                       "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+                       "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.4"
+                       },
+                       "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.17.1",
+                       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+                       "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+                       "dev": true,
+                       "license": "ISC",
+                       "dependencies": {
+                               "reusify": "^1.0.4"
+                       }
+               },
+               "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/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.2",
+                       "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
+                       "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
+                       "dev": true,
+                       "license": "ISC"
+               },
+               "node_modules/follow-redirects": {
+                       "version": "1.15.9",
+                       "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+                       "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+                       "funding": [
+                               {
+                                       "type": "individual",
+                                       "url": "https://github.com/sponsors/RubenVerborgh"
+                               }
+                       ],
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=4.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "debug": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/form-data": {
+                       "version": "4.0.1",
+                       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+                       "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "asynckit": "^0.4.0",
+                               "combined-stream": "^1.0.8",
+                               "mime-types": "^2.1.12"
+                       },
+                       "engines": {
+                               "node": ">= 6"
+                       }
+               },
+               "node_modules/fsevents": {
+                       "version": "2.3.3",
+                       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+                       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+                       "dev": true,
+                       "hasInstallScript": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ],
+                       "engines": {
+                               "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+                       }
+               },
+               "node_modules/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": "15.12.0",
+                       "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz",
+                       "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=18"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/globalyzer": {
+                       "version": "0.1.0",
+                       "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
+                       "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/globrex": {
+                       "version": "0.1.2",
+                       "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
+                       "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "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/has-flag": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+                       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/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": "4.3.7",
+                       "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
+                       "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/import-fresh": {
+                       "version": "3.3.0",
+                       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+                       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+                       "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==",
+                       "dev": true,
+                       "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/is-binary-path": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+                       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "binary-extensions": "^2.0.0"
+                       },
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "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-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-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-reference": {
+                       "version": "3.0.3",
+                       "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
+                       "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@types/estree": "^1.0.6"
+                       }
+               },
+               "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/js-yaml": {
+                       "version": "4.1.0",
+                       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+                       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "argparse": "^2.0.1"
+                       },
+                       "bin": {
+                               "js-yaml": "bin/js-yaml.js"
+                       }
+               },
+               "node_modules/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==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "node_modules/known-css-properties": {
+                       "version": "0.35.0",
+                       "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz",
+                       "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==",
+                       "dev": true,
+                       "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/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/locate-character": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
+                       "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
+                       "dev": true,
+                       "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/magic-string": {
+                       "version": "0.30.14",
+                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz",
+                       "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/sourcemap-codec": "^1.5.0"
+                       }
+               },
+               "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/micromatch": {
+                       "version": "4.0.8",
+                       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+                       "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "braces": "^3.0.3",
+                               "picomatch": "^2.3.1"
+                       },
+                       "engines": {
+                               "node": ">=8.6"
+                       }
+               },
+               "node_modules/mime-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==",
+                       "dev": true,
+                       "license": "ISC",
+                       "dependencies": {
+                               "brace-expansion": "^1.1.7"
+                       },
+                       "engines": {
+                               "node": "*"
+                       }
+               },
+               "node_modules/mri": {
+                       "version": "1.2.0",
+                       "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+                       "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
+               "node_modules/mrmime": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
+                       "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==",
+                       "dev": true,
+                       "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==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/nanoid": {
+                       "version": "3.3.8",
+                       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+                       "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+                       "dev": true,
+                       "funding": [
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/ai"
+                               }
+                       ],
+                       "license": "MIT",
+                       "bin": {
+                               "nanoid": "bin/nanoid.cjs"
+                       },
+                       "engines": {
+                               "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+                       }
+               },
+               "node_modules/natural-compare": {
+                       "version": "1.4.0",
+                       "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+                       "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/normalize-path": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+                       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
+               "node_modules/optionator": {
+                       "version": "0.9.4",
+                       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+                       "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "deep-is": "^0.1.3",
+                               "fast-levenshtein": "^2.0.6",
+                               "levn": "^0.4.1",
+                               "prelude-ls": "^1.2.1",
+                               "type-check": "^0.4.0",
+                               "word-wrap": "^1.2.5"
+                       },
+                       "engines": {
+                               "node": ">= 0.8.0"
+                       }
+               },
+               "node_modules/p-limit": {
+                       "version": "3.1.0",
+                       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+                       "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "yocto-queue": "^0.1.0"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/p-locate": {
+                       "version": "5.0.0",
+                       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+                       "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "p-limit": "^3.0.2"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/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/path-exists": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+                       "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/path-key": {
+                       "version": "3.1.1",
+                       "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+                       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/picocolors": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+                       "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+                       "dev": true,
+                       "license": "ISC"
+               },
+               "node_modules/picomatch": {
+                       "version": "2.3.1",
+                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+                       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8.6"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/jonschlinkert"
+                       }
+               },
+               "node_modules/postcss": {
+                       "version": "8.4.49",
+                       "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+                       "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+                       "dev": true,
+                       "funding": [
+                               {
+                                       "type": "opencollective",
+                                       "url": "https://opencollective.com/postcss/"
+                               },
+                               {
+                                       "type": "tidelift",
+                                       "url": "https://tidelift.com/funding/github/npm/postcss"
+                               },
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/ai"
+                               }
+                       ],
+                       "license": "MIT",
+                       "dependencies": {
+                               "nanoid": "^3.3.7",
+                               "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-safe-parser": {
+                       "version": "6.0.0",
+                       "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz",
+                       "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=12.0"
+                       },
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/postcss/"
+                       },
+                       "peerDependencies": {
+                               "postcss": "^8.3.3"
+                       }
+               },
+               "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": "6.1.2",
+                       "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+                       "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
+                       "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.4.1",
+                       "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz",
+                       "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==",
+                       "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-svelte": {
+                       "version": "3.3.2",
+                       "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.2.tgz",
+                       "integrity": "sha512-kRPjH8wSj2iu+dO+XaUv4vD8qr5mdDmlak3IT/7AOgGIMRG86z/EHOLauFcClKEnOUf4A4nOA7sre5KrJD4Raw==",
+                       "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/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/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/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/readdirp": {
+                       "version": "3.6.0",
+                       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+                       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "picomatch": "^2.2.1"
+                       },
+                       "engines": {
+                               "node": ">=8.10.0"
+                       }
+               },
+               "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/reusify": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+                       "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "iojs": ">=1.0.0",
+                               "node": ">=0.10.0"
+                       }
+               },
+               "node_modules/rollup": {
+                       "version": "4.27.4",
+                       "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz",
+                       "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@types/estree": "1.0.6"
+                       },
+                       "bin": {
+                               "rollup": "dist/bin/rollup"
+                       },
+                       "engines": {
+                               "node": ">=18.0.0",
+                               "npm": ">=8.0.0"
+                       },
+                       "optionalDependencies": {
+                               "@rollup/rollup-android-arm-eabi": "4.27.4",
+                               "@rollup/rollup-android-arm64": "4.27.4",
+                               "@rollup/rollup-darwin-arm64": "4.27.4",
+                               "@rollup/rollup-darwin-x64": "4.27.4",
+                               "@rollup/rollup-freebsd-arm64": "4.27.4",
+                               "@rollup/rollup-freebsd-x64": "4.27.4",
+                               "@rollup/rollup-linux-arm-gnueabihf": "4.27.4",
+                               "@rollup/rollup-linux-arm-musleabihf": "4.27.4",
+                               "@rollup/rollup-linux-arm64-gnu": "4.27.4",
+                               "@rollup/rollup-linux-arm64-musl": "4.27.4",
+                               "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4",
+                               "@rollup/rollup-linux-riscv64-gnu": "4.27.4",
+                               "@rollup/rollup-linux-s390x-gnu": "4.27.4",
+                               "@rollup/rollup-linux-x64-gnu": "4.27.4",
+                               "@rollup/rollup-linux-x64-musl": "4.27.4",
+                               "@rollup/rollup-win32-arm64-msvc": "4.27.4",
+                               "@rollup/rollup-win32-ia32-msvc": "4.27.4",
+                               "@rollup/rollup-win32-x64-msvc": "4.27.4",
+                               "fsevents": "~2.3.2"
+                       }
+               },
+               "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/sade": {
+                       "version": "1.8.1",
+                       "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
+                       "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "mri": "^1.1.0"
+                       },
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "node_modules/sass": {
+                       "version": "1.77.6",
+                       "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz",
+                       "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "chokidar": ">=3.0.0 <4.0.0",
+                               "immutable": "^4.0.0",
+                               "source-map-js": ">=0.6.2 <2.0.0"
+                       },
+                       "bin": {
+                               "sass": "sass.js"
+                       },
+                       "engines": {
+                               "node": ">=14.0.0"
+                       }
+               },
+               "node_modules/semver": {
+                       "version": "7.6.3",
+                       "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+                       "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+                       "dev": true,
+                       "license": "ISC",
+                       "bin": {
+                               "semver": "bin/semver.js"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       }
+               },
+               "node_modules/set-cookie-parser": {
+                       "version": "2.7.1",
+                       "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
+                       "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "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/sirv": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz",
+                       "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@polka/url": "^1.0.0-next.24",
+                               "mrmime": "^2.0.0",
+                               "totalist": "^3.0.0"
+                       },
+                       "engines": {
+                               "node": ">=18"
+                       }
+               },
+               "node_modules/source-map-js": {
+                       "version": "1.2.1",
+                       "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+                       "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+                       "dev": true,
+                       "license": "BSD-3-Clause",
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
+               "node_modules/strip-json-comments": {
+                       "version": "3.1.1",
+                       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+                       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/supports-color": {
+                       "version": "7.2.0",
+                       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+                       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "has-flag": "^4.0.0"
+                       },
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/svelte": {
+                       "version": "5.2.8",
+                       "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.2.8.tgz",
+                       "integrity": "sha512-VU7a01XwnFi6wXVkH5QY3FYXRZWrhsWZhaE8AYU6UeYZdslE3TFgQq6+HLrbMjOLkVhdKt74NGHYbhFeErQQ6g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@ampproject/remapping": "^2.3.0",
+                               "@jridgewell/sourcemap-codec": "^1.5.0",
+                               "@types/estree": "^1.0.5",
+                               "acorn": "^8.12.1",
+                               "acorn-typescript": "^1.4.13",
+                               "aria-query": "^5.3.1",
+                               "axobject-query": "^4.1.0",
+                               "esm-env": "^1.0.0",
+                               "esrap": "^1.2.2",
+                               "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-check": {
+                       "version": "4.1.0",
+                       "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.0.tgz",
+                       "integrity": "sha512-AflEZYqI578KuDZcpcorPSf597LStxlkN7XqXi38u09zlHODVKd7c+7OuubGzbhgGRUqNTdQCZ+Ga96iRXEf2g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/trace-mapping": "^0.3.25",
+                               "chokidar": "^4.0.1",
+                               "fdir": "^6.2.0",
+                               "picocolors": "^1.0.0",
+                               "sade": "^1.7.4"
+                       },
+                       "bin": {
+                               "svelte-check": "bin/svelte-check"
+                       },
+                       "engines": {
+                               "node": ">= 18.0.0"
+                       },
+                       "peerDependencies": {
+                               "svelte": "^4.0.0 || ^5.0.0-next.0",
+                               "typescript": ">=5.0.0"
+                       }
+               },
+               "node_modules/svelte-check/node_modules/chokidar": {
+                       "version": "4.0.1",
+                       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz",
+                       "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "readdirp": "^4.0.1"
+                       },
+                       "engines": {
+                               "node": ">= 14.16.0"
+                       },
+                       "funding": {
+                               "url": "https://paulmillr.com/funding/"
+                       }
+               },
+               "node_modules/svelte-check/node_modules/fdir": {
+                       "version": "6.4.2",
+                       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz",
+                       "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "peerDependencies": {
+                               "picomatch": "^3 || ^4"
+                       },
+                       "peerDependenciesMeta": {
+                               "picomatch": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/svelte-check/node_modules/picomatch": {
+                       "version": "4.0.2",
+                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+                       "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "peer": true,
+                       "engines": {
+                               "node": ">=12"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/jonschlinkert"
+                       }
+               },
+               "node_modules/svelte-check/node_modules/readdirp": {
+                       "version": "4.0.2",
+                       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+                       "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 14.16.0"
+                       },
+                       "funding": {
+                               "type": "individual",
+                               "url": "https://paulmillr.com/funding/"
+                       }
+               },
+               "node_modules/svelte-eslint-parser": {
+                       "version": "0.43.0",
+                       "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.43.0.tgz",
+                       "integrity": "sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "eslint-scope": "^7.2.2",
+                               "eslint-visitor-keys": "^3.4.3",
+                               "espree": "^9.6.1",
+                               "postcss": "^8.4.39",
+                               "postcss-scss": "^4.0.9"
+                       },
+                       "engines": {
+                               "node": "^12.22.0 || ^14.17.0 || >=16.0.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/svelte-eslint-parser/node_modules/eslint-scope": {
+                       "version": "7.2.2",
+                       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+                       "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "esrecurse": "^4.3.0",
+                               "estraverse": "^5.2.0"
+                       },
+                       "engines": {
+                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+                       },
+                       "funding": {
+                               "url": "https://opencollective.com/eslint"
+                       }
+               },
+               "node_modules/svelte-eslint-parser/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/svelte-eslint-parser/node_modules/espree": {
+                       "version": "9.6.1",
+                       "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+                       "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "acorn": "^8.9.0",
+                               "acorn-jsx": "^5.3.2",
+                               "eslint-visitor-keys": "^3.4.1"
+                       },
+                       "engines": {
+                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+                       },
+                       "funding": {
+                               "url": "https://opencollective.com/eslint"
+                       }
+               },
+               "node_modules/tiny-glob": {
+                       "version": "0.2.9",
+                       "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
+                       "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "globalyzer": "0.1.0",
+                               "globrex": "^0.1.2"
+                       }
+               },
+               "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/totalist": {
+                       "version": "3.0.1",
+                       "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+                       "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "node_modules/ts-api-utils": {
+                       "version": "1.4.2",
+                       "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.2.tgz",
+                       "integrity": "sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=16"
+                       },
+                       "peerDependencies": {
+                               "typescript": ">=4.2.0"
+                       }
+               },
+               "node_modules/type-check": {
+                       "version": "0.4.0",
+                       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+                       "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "prelude-ls": "^1.2.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.8.0"
+                       }
+               },
+               "node_modules/typescript": {
+                       "version": "5.7.2",
+                       "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
+                       "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "bin": {
+                               "tsc": "bin/tsc",
+                               "tsserver": "bin/tsserver"
+                       },
+                       "engines": {
+                               "node": ">=14.17"
+                       }
+               },
+               "node_modules/typescript-eslint": {
+                       "version": "8.16.0",
+                       "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz",
+                       "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/eslint-plugin": "8.16.0",
+                               "@typescript-eslint/parser": "8.16.0",
+                               "@typescript-eslint/utils": "8.16.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"
+                       },
+                       "peerDependenciesMeta": {
+                               "typescript": {
+                                       "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==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/vite": {
+                       "version": "5.4.11",
+                       "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz",
+                       "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "esbuild": "^0.21.3",
+                               "postcss": "^8.4.43",
+                               "rollup": "^4.20.0"
+                       },
+                       "bin": {
+                               "vite": "bin/vite.js"
+                       },
+                       "engines": {
+                               "node": "^18.0.0 || >=20.0.0"
+                       },
+                       "funding": {
+                               "url": "https://github.com/vitejs/vite?sponsor=1"
+                       },
+                       "optionalDependencies": {
+                               "fsevents": "~2.3.3"
+                       },
+                       "peerDependencies": {
+                               "@types/node": "^18.0.0 || >=20.0.0",
+                               "less": "*",
+                               "lightningcss": "^1.21.0",
+                               "sass": "*",
+                               "sass-embedded": "*",
+                               "stylus": "*",
+                               "sugarss": "*",
+                               "terser": "^5.4.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "@types/node": {
+                                       "optional": true
+                               },
+                               "less": {
+                                       "optional": true
+                               },
+                               "lightningcss": {
+                                       "optional": true
+                               },
+                               "sass": {
+                                       "optional": true
+                               },
+                               "sass-embedded": {
+                                       "optional": true
+                               },
+                               "stylus": {
+                                       "optional": true
+                               },
+                               "sugarss": {
+                                       "optional": true
+                               },
+                               "terser": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/vitefu": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.4.tgz",
+                       "integrity": "sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==",
+                       "dev": true,
+                       "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/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/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/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/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/zimmerframe": {
+                       "version": "1.1.2",
+                       "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz",
+                       "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==",
+                       "dev": true,
+                       "license": "MIT"
+               }
+       }
+}
diff --git a/frontend/package.json b/frontend/package.json
new file mode 100644 (file)
index 0000000..80174f9
--- /dev/null
@@ -0,0 +1,38 @@
+{
+       "name": "dailytxt",
+       "version": "0.0.1",
+       "type": "module",
+       "scripts": {
+               "dev": "vite dev",
+               "build": "vite build",
+               "preview": "vite preview",
+               "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
+               "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
+               "format": "prettier --write .",
+               "lint": "prettier --check . && eslint ."
+       },
+       "devDependencies": {
+               "@sveltejs/adapter-auto": "^3.0.0",
+               "@sveltejs/adapter-static": "^3.0.6",
+               "@sveltejs/kit": "^2.0.0",
+               "@sveltejs/vite-plugin-svelte": "^4.0.0",
+               "@types/bootstrap": "^5.2.10",
+               "eslint": "^9.7.0",
+               "eslint-config-prettier": "^9.1.0",
+               "eslint-plugin-svelte": "^2.36.0",
+               "globals": "^15.0.0",
+               "prettier": "^3.3.2",
+               "prettier-plugin-svelte": "^3.2.6",
+               "sass": "1.77.6",
+               "svelte": "^5.0.0",
+               "svelte-check": "^4.0.0",
+               "typescript": "^5.0.0",
+               "typescript-eslint": "^8.0.0",
+               "vite": "^5.0.3"
+       },
+       "dependencies": {
+               "@popperjs/core": "^2.11.8",
+               "axios": "^1.7.8",
+               "bootstrap": "^5.3.3"
+       }
+}
diff --git a/frontend/src/app.html b/frontend/src/app.html
new file mode 100644 (file)
index 0000000..1391f88
--- /dev/null
@@ -0,0 +1,12 @@
+<!doctype html>
+<html lang="en">
+       <head>
+               <meta charset="utf-8" />
+               <link rel="icon" href="%sveltekit.assets%/favicon.svg" />
+               <meta name="viewport" content="width=device-width, initial-scale=1" />
+               %sveltekit.head%
+       </head>
+       <body data-sveltekit-preload-data="hover">
+               <div style="display: contents">%sveltekit.body%</div>
+       </body>
+</html>
diff --git a/frontend/src/lib/assets/locked_heart_with_keyhole.svg b/frontend/src/lib/assets/locked_heart_with_keyhole.svg
new file mode 100644 (file)
index 0000000..0e58a3c
--- /dev/null
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="200mm"
+   height="200mm"
+   viewBox="0 0 200 200"
+   version="1.1"
+   id="svg8"
+   sodipodi:docname="locked_heart_with_keyhole.svg"
+   inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
+   inkscape:export-filename="/home/marco/Bilder/DailyTxT_Logo_2020/locked_heart_512.png"
+   inkscape:export-xdpi="65.024002"
+   inkscape:export-ydpi="65.024002"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs
+     id="defs2">
+    <inkscape:path-effect
+       effect="mirror_symmetry"
+       start_point="100.22607,47.520526"
+       end_point="100.22607,78.791061"
+       center_point="100.22607,63.155794"
+       id="path-effect912"
+       is_visible="true"
+       lpeversion="1"
+       mode="free"
+       discard_orig_path="false"
+       fuse_paths="false"
+       oposite_fuse="false"
+       split_items="false" />
+    <inkscape:path-effect
+       effect="bspline"
+       id="path-effect910"
+       is_visible="true"
+       lpeversion="1"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="464.28571"
+     inkscape:cy="371.42857"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     inkscape:document-rotation="0"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1017"
+     inkscape:window-x="1912"
+     inkscape:window-y="317"
+     inkscape:window-maximized="1"
+     inkscape:pagecheckerboard="false"
+     inkscape:showpageshadow="false"
+     showborder="true"
+     inkscape:deskcolor="#d1d1d1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       id="rect18"
+       style="fill:#f57c00;fill-opacity:1;fill-rule:evenodd;stroke-width:0.452355"
+       d="M 2.3677141,52.553119 A 58.397915,58.397915 0 0 0 17.482506,108.96152 l 82.587234,82.58722 82.58661,-82.5866 A 58.397915,58.397915 0 0 0 197.77114,52.553748 58.397915,58.397915 0 0 0 156.47752,11.26014 58.397915,58.397915 0 0 0 100.06911,26.374932 58.397915,58.397915 0 0 0 43.661325,11.259506 58.397915,58.397915 0 0 0 2.3677141,52.553119 Z" />
+    <rect
+       style="fill:#1565c0;fill-opacity:1;stroke-width:0.287211"
+       id="rect906"
+       width="69.861923"
+       height="63.937119"
+       x="65.304489"
+       y="75.826767"
+       ry="6.7518868" />
+    <path
+       style="fill:none;stroke:#1565c0;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 74.247469,78.791061 c -0.09578,-7.857458 -0.191563,-15.715105 1.676123,-20.927074 1.867685,-5.211969 5.698573,-7.777653 10.076426,-9.060557 4.377854,-1.282904 9.302034,-1.282904 14.226052,-1.282904 m 25.9786,31.270535 c 0.0958,-7.857458 0.19156,-15.715105 -1.67612,-20.927074 -1.86769,-5.211969 -5.69857,-7.777653 -10.07643,-9.060557 -4.37785,-1.282904 -9.30203,-1.282904 -14.22605,-1.282904"
+       id="path908"
+       inkscape:path-effect="#path-effect910;#path-effect912"
+       inkscape:original-d="M 74.247469,78.791061 C 74.151923,70.9336 74.05614,63.075953 73.960118,55.217885 c 3.831336,-2.565603 7.662223,-5.131288 11.493119,-7.697359 4.924635,2.22e-4 9.848815,2.22e-4 14.772833,0"
+       transform="matrix(0.90263587,0,0,1.0927354,9.7528706,-6.0621084)"
+       sodipodi:nodetypes="cccc"
+       class="UnoptimicedTransforms" />
+    <g
+       id="g940"
+       transform="translate(0,-1.1442912)">
+      <circle
+         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.44;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="path934"
+         cx="100.3775"
+         cy="101.77544"
+         r="8.1988697" />
+      <rect
+         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.39629;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect936"
+         width="8.3338318"
+         height="18.939137"
+         x="96.238655"
+         y="104.36925"
+         ry="4.6886554" />
+    </g>
+  </g>
+</svg>
diff --git a/frontend/src/routes/+layout.js b/frontend/src/routes/+layout.js
new file mode 100644 (file)
index 0000000..b81889a
--- /dev/null
@@ -0,0 +1,10 @@
+export const ssr = false;
+//export const prerender = false;
+
+export const load = ({ url }) => {
+  const { pathname } = url
+
+  return {
+    pathname
+  }
+}
\ No newline at end of file
diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte
new file mode 100644 (file)
index 0000000..d091f91
--- /dev/null
@@ -0,0 +1,49 @@
+<script>
+       import { fade, blur, slide } from 'svelte/transition';
+
+       export let data;
+       let inDuration = 150;
+       let outDuration = 150;
+</script>
+
+<main class="d-flex flex-column">
+       <nav class="navbar navbar-expand-lg bg-body-tertiary">
+               <div class="container-fluid">
+                       <a class="nav-item" href="/">Navbar</a>
+                       <a class="nav-item" href="/login">Navbar</a>
+               </div>
+       </nav>
+
+       <div class="wrapper h-100">
+               {#key data.pathname}
+                       <div
+                               class="transition-wrapper h-100"
+                               out:blur={{ duration: outDuration }}
+                               in:blur={{ duration: inDuration, delay: outDuration }}
+                       >
+                               <slot />
+                       </div>
+               {/key}
+       </div>
+</main>
+
+<!-- in:crossfade={{ duration: inDuration, delay: outDuration }}
+                               out:crossfade={{ duration: outDuration }} -->
+
+<style>
+       main {
+               height: 100vh;
+       }
+
+       .wrapper {
+               position: relative; /* Ensure the wrapper is the positioning context */
+       }
+
+       .transition-wrapper {
+               position: absolute; /* Ensure the transition wrapper does not occupy space */
+               top: 0;
+               left: 0;
+               width: 100%;
+               height: 100%;
+       }
+</style>
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte
new file mode 100644 (file)
index 0000000..fccb823
--- /dev/null
@@ -0,0 +1,23 @@
+<script>
+       import '../scss/styles.scss';
+       //import * as bootstrap from 'bootstrap';
+       import { Tooltip } from 'bootstrap';
+
+       //on mount
+       import { onMount } from 'svelte';
+       onMount(() => {
+               const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]');
+               const tooltipList = [...tooltipTriggerList].map(
+                       (tooltipTriggerEl) => new Tooltip(tooltipTriggerEl)
+               );
+       });
+</script>
+
+<h1>Welcome to SvelteKit</h1>
+<p>Visit <a href="https://svelte.dev/docs/kit">svelte.dev/docs/kit</a> to read the documentation</p>
+<button
+       type="button"
+       class="btn btn-primary"
+       data-bs-toggle="tooltip"
+       data-bs-title="Default tooltip">Primary</button
+>
diff --git a/frontend/src/routes/login/+page.svelte b/frontend/src/routes/login/+page.svelte
new file mode 100644 (file)
index 0000000..c7e66de
--- /dev/null
@@ -0,0 +1,170 @@
+<script>
+       import img from '$lib/assets/locked_heart_with_keyhole.svg';
+       import { onMount } from 'svelte';
+       import axios from 'axios';
+
+       function handleLogin(event) {
+               event.preventDefault();
+               const username = document.getElementById('loginUsername').value;
+               const password = document.getElementById('loginPassword').value;
+
+               axios
+                       .post('http://localhost:8000/users/login', { username, password })
+                       .then((response) => {
+                               console.log(response);
+                       })
+                       .catch((error) => {
+                               console.error(error);
+                       });
+
+               console.log('Login attempt:', { username, password });
+               // Add your login logic here
+       }
+
+       function handleRegister(event) {
+               event.preventDefault();
+               const username = document.getElementById('registerUsername').value;
+               const password = document.getElementById('registerPassword').value;
+               const password2 = document.getElementById('registerPassword2').value;
+               console.log('Register attempt:', { username, password, password2 });
+               // Add your registration logic here
+       }
+</script>
+
+<div class="logo-login-flex d-flex justify-content-center align-items-center flex-row h-100">
+       <div class="logo-wrapper d-flex flex-column align-items-center">
+               <img id="largeLogo" src={img} alt="locked heart with keyhole" />
+               <p>DailyTxT</p>
+       </div>
+       <div class="login-wrapper">
+               <div class="accordion" id="loginAccordion">
+                       <div class="accordion-item">
+                               <h2 class="accordion-header">
+                                       <button
+                                               class="accordion-button"
+                                               type="button"
+                                               data-bs-toggle="collapse"
+                                               data-bs-target="#collapseOne"
+                                               aria-expanded="true"
+                                               aria-controls="collapseOne"
+                                       >
+                                               Login
+                                       </button>
+                               </h2>
+                               <div
+                                       id="collapseOne"
+                                       class="accordion-collapse collapse show"
+                                       data-bs-parent="#loginAccordion"
+                               >
+                                       <div class="accordion-body">
+                                               <form on:submit={handleLogin}>
+                                                       <div class="form-floating mb-3">
+                                                               <!-- svelte-ignore a11y_autofocus -->
+                                                               <input
+                                                                       type="text"
+                                                                       class="form-control"
+                                                                       id="loginUsername"
+                                                                       placeholder="Username"
+                                                                       autofocus
+                                                               />
+                                                               <label for="loginUsername">Username</label>
+                                                       </div>
+                                                       <div class="form-floating mb-3">
+                                                               <input
+                                                                       type="password"
+                                                                       class="form-control"
+                                                                       id="loginPassword"
+                                                                       placeholder="Password"
+                                                               />
+                                                               <label for="loginPassword">Password</label>
+                                                       </div>
+                                                       <div class="d-flex justify-content-center">
+                                                               <button type="submit" class="btn btn-primary">Login</button>
+                                                       </div>
+                                               </form>
+                                       </div>
+                               </div>
+                       </div>
+                       <div class="accordion-item">
+                               <h2 class="accordion-header">
+                                       <button
+                                               class="accordion-button collapsed"
+                                               type="button"
+                                               data-bs-toggle="collapse"
+                                               data-bs-target="#collapseTwo"
+                                               aria-expanded="false"
+                                               aria-controls="collapseTwo"
+                                       >
+                                               Registrierung
+                                       </button>
+                               </h2>
+                               <div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#loginAccordion">
+                                       <div class="accordion-body">
+                                               <form on:submit={handleRegister}>
+                                                       <div class="form-floating mb-3">
+                                                               <input
+                                                                       type="text"
+                                                                       class="form-control"
+                                                                       id="registerUsername"
+                                                                       placeholder="Username"
+                                                               />
+                                                               <label for="registerUsername">Username</label>
+                                                       </div>
+                                                       <div class="form-floating mb-3">
+                                                               <input
+                                                                       type="password"
+                                                                       class="form-control"
+                                                                       id="registerPassword"
+                                                                       placeholder="Password"
+                                                               />
+                                                               <label for="registerPassword">Password</label>
+                                                       </div>
+                                                       <div class="form-floating mb-3">
+                                                               <input
+                                                                       type="password"
+                                                                       class="form-control"
+                                                                       id="registerPassword2"
+                                                                       placeholder="Password bestätigen"
+                                                               />
+                                                               <label for="registerPassword2">Password bestätigen</label>
+                                                       </div>
+                                                       <div class="d-flex justify-content-center">
+                                                               <button type="submit" class="btn btn-primary">Registrieren</button>
+                                                       </div>
+                                               </form>
+                                       </div>
+                               </div>
+                       </div>
+               </div>
+       </div>
+</div>
+
+<style>
+       .logo-wrapper {
+               width: 50%;
+       }
+
+       #largeLogo {
+               width: 40%;
+               min-height: 10%;
+       }
+
+       .login-wrapper {
+               width: 50%;
+       }
+
+       #loginAccordion {
+               width: 70%;
+       }
+
+       @media screen and (max-width: 768px) {
+               .logo-login-flex {
+                       flex-direction: column !important;
+               }
+
+               .login-wrapper {
+                       min-width: 50%;
+                       max-width: 75%;
+               }
+       }
+</style>
diff --git a/frontend/src/scss/styles.scss b/frontend/src/scss/styles.scss
new file mode 100644 (file)
index 0000000..ea4b383
--- /dev/null
@@ -0,0 +1,2 @@
+// Import all of Bootstrap's CSS
+@import "bootstrap/scss/bootstrap";
\ No newline at end of file
diff --git a/frontend/static/favicon.svg b/frontend/static/favicon.svg
new file mode 100644 (file)
index 0000000..9bfbb99
--- /dev/null
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="200mm"
+   height="200mm"
+   viewBox="0 0 200 200"
+   version="1.1"
+   id="svg8"
+   sodipodi:docname="locked_heart.svg"
+   inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
+   inkscape:export-filename="/home/marco/Bilder/DailyTxT_Logo_2020/locked_heart_512.png"
+   inkscape:export-xdpi="65.024002"
+   inkscape:export-ydpi="65.024002"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs
+     id="defs2">
+    <inkscape:path-effect
+       effect="mirror_symmetry"
+       start_point="100.22607,47.520526"
+       end_point="100.22607,78.791061"
+       center_point="100.22607,63.155794"
+       id="path-effect912"
+       is_visible="true"
+       lpeversion="1"
+       mode="free"
+       discard_orig_path="false"
+       fuse_paths="false"
+       oposite_fuse="false"
+       split_items="false" />
+    <inkscape:path-effect
+       effect="bspline"
+       id="path-effect910"
+       is_visible="true"
+       lpeversion="1"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.7"
+     inkscape:cx="464.28571"
+     inkscape:cy="371.42857"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     inkscape:document-rotation="0"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1017"
+     inkscape:window-x="1912"
+     inkscape:window-y="317"
+     inkscape:window-maximized="1"
+     inkscape:pagecheckerboard="false"
+     inkscape:showpageshadow="false"
+     showborder="true"
+     inkscape:deskcolor="#d1d1d1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       id="rect18"
+       style="fill:#f57c00;fill-opacity:1;fill-rule:evenodd;stroke-width:0.452355"
+       d="M 2.3677141,52.553119 A 58.397915,58.397915 0 0 0 17.482506,108.96152 l 82.587234,82.58722 82.58661,-82.5866 A 58.397915,58.397915 0 0 0 197.77114,52.553748 58.397915,58.397915 0 0 0 156.47752,11.26014 58.397915,58.397915 0 0 0 100.06911,26.374932 58.397915,58.397915 0 0 0 43.661325,11.259506 58.397915,58.397915 0 0 0 2.3677141,52.553119 Z" />
+    <rect
+       style="fill:#1565c0;fill-opacity:1;stroke-width:0.287211"
+       id="rect906"
+       width="69.861923"
+       height="63.937119"
+       x="65.304489"
+       y="75.826767"
+       ry="6.7518868" />
+    <path
+       style="fill:none;stroke:#1565c0;stroke-width:10;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 74.247469,78.791061 c -0.09578,-7.857458 -0.191563,-15.715105 1.676123,-20.927074 1.867685,-5.211969 5.698573,-7.777653 10.076426,-9.060557 4.377854,-1.282904 9.302034,-1.282904 14.226052,-1.282904 m 25.9786,31.270535 c 0.0958,-7.857458 0.19156,-15.715105 -1.67612,-20.927074 -1.86769,-5.211969 -5.69857,-7.777653 -10.07643,-9.060557 -4.37785,-1.282904 -9.30203,-1.282904 -14.22605,-1.282904"
+       id="path908"
+       inkscape:path-effect="#path-effect910;#path-effect912"
+       inkscape:original-d="M 74.247469,78.791061 C 74.151923,70.9336 74.05614,63.075953 73.960118,55.217885 c 3.831336,-2.565603 7.662223,-5.131288 11.493119,-7.697359 4.924635,2.22e-4 9.848815,2.22e-4 14.772833,0"
+       transform="matrix(0.90263587,0,0,1.0927354,9.7528706,-6.0621084)"
+       sodipodi:nodetypes="cccc"
+       class="UnoptimicedTransforms" />
+  </g>
+</svg>
diff --git a/frontend/svelte.config.js b/frontend/svelte.config.js
new file mode 100644 (file)
index 0000000..2eb0235
--- /dev/null
@@ -0,0 +1,30 @@
+//import adapter from '@sveltejs/adapter-auto';
+import adapter from '@sveltejs/adapter-static';
+import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
+
+/** @type {import('@sveltejs/kit').Config} */
+const config = {
+       // Consult https://svelte.dev/docs/kit/integrations
+       // for more information about preprocessors
+       preprocess: vitePreprocess(),
+
+       /*kit: {
+               // adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
+               // If your environment is not supported, or you settled on a specific environment, switch out the adapter.
+               // See https://svelte.dev/docs/kit/adapters for more information about adapters.
+               adapter: adapter()
+       }*/
+       kit: {
+               adapter: adapter({
+                       // default options are shown. On some platforms
+                       // these options are set automatically — see below
+                       pages: 'build',
+                       assets: 'build',
+                       fallback: undefined,
+                       precompress: false,
+                       strict: true
+               })
+       }
+};
+
+export default config;
diff --git a/frontend/vite.config.js b/frontend/vite.config.js
new file mode 100644 (file)
index 0000000..bbf8c7d
--- /dev/null
@@ -0,0 +1,6 @@
+import { sveltekit } from '@sveltejs/kit/vite';
+import { defineConfig } from 'vite';
+
+export default defineConfig({
+       plugins: [sveltekit()]
+});
git clone https://git.99rst.org/PROJECT