Dockerfile & PWA-preparations
authorPhiTux <redacted>
Sat, 4 Oct 2025 17:32:54 +0000 (19:32 +0200)
committerPhiTux <redacted>
Sat, 4 Oct 2025 17:32:54 +0000 (19:32 +0200)
27 files changed:
Dockerfile [new file with mode: 0644]
backend/main.go
docker-entrypoint.sh [new file with mode: 0644]
frontend/.gitignore
frontend/package-lock.json
frontend/package.json
frontend/src/app.html
frontend/src/i18n/de.json [new file with mode: 0644]
frontend/src/i18n/en.json [new file with mode: 0644]
frontend/src/i18n/fr.json [new file with mode: 0644]
frontend/src/lib/APIurl.js
frontend/src/lib/helpers.js
frontend/src/routes/(authed)/+layout.svelte
frontend/src/routes/+layout.js
frontend/src/routes/+layout.svelte
frontend/src/routes/+page.js [moved from frontend/src/routes/+page.server.js with 100% similarity]
frontend/src/routes/+page.svelte [new file with mode: 0644]
frontend/src/routes/[...missing]/+page.js [moved from frontend/src/routes/[...missing]/+page.server.js with 100% similarity]
frontend/src/routes/[...missing]/+page.svelte [new file with mode: 0644]
frontend/src/routes/login/+page.svelte
frontend/static/icons/icon-180.png [new file with mode: 0644]
frontend/static/icons/icon-192.png [new file with mode: 0644]
frontend/static/icons/icon-512.png [new file with mode: 0644]
frontend/static/manifest.webmanifest [new file with mode: 0644]
frontend/svelte.config.js
frontend/vite.config.js
nginx/default.conf [new file with mode: 0644]

diff --git a/Dockerfile b/Dockerfile
new file mode 100644 (file)
index 0000000..6101784
--- /dev/null
@@ -0,0 +1,54 @@
+## Multi-stage build: frontend (SvelteKit) + backend (Go) + Nginx runtime
+
+# ---------- FRONTEND BUILD ----------
+FROM node:20-alpine AS frontend-builder
+WORKDIR /app/frontend
+
+# Install dependencies and build SvelteKit (adapter-static outputs to build/)
+COPY frontend/package*.json ./
+RUN apk update && apk add build-base cairo-dev pango-dev giflib-dev g++ make py3-pip && npm ci
+#RUN apk add g++ make py3-pip && npm ci || npm install
+COPY frontend/ ./
+RUN npm run build
+RUN npm prune --production
+
+# ---------- BACKEND BUILD ----------
+FROM golang:1.24-alpine AS backend-builder
+WORKDIR /src
+
+# Install git and CA certs for `go mod download`
+RUN apk add --no-cache git ca-certificates && update-ca-certificates
+
+COPY backend/go.mod backend/go.sum ./backend/
+WORKDIR /src/backend
+RUN go mod download
+
+# Copy backend source and build static binary
+COPY backend/ ./
+ENV CGO_ENABLED=0 GOOS=linux
+RUN go build -o /out/dailytxt ./
+
+# ---------- RUNTIME (NGINX + BACKEND) ----------
+FROM nginx:alpine-slim AS runtime
+
+# Create app directories
+RUN mkdir -p /usr/share/nginx/html \
+       && mkdir -p /etc/nginx/conf.d \
+       && mkdir -p /data
+
+# Copy frontend build
+COPY --from=frontend-builder /app/frontend/build/ /usr/share/nginx/html/
+
+# Copy backend binary
+COPY --from=backend-builder /out/dailytxt /usr/local/bin/dailytxt
+
+# Copy nginx config and entrypoint
+COPY nginx/default.conf /etc/nginx/conf.d/default.conf
+COPY docker-entrypoint.sh /entrypoint.sh
+RUN chmod +x /entrypoint.sh
+
+VOLUME ["/data"]
+
+EXPOSE 80
+ENTRYPOINT ["/entrypoint.sh"]
+
index a68637844d4cddac3cbda37046106f7b2814a05c..7ad6507c9ae8818591185ea10927a7b5509aa830 100644 (file)
@@ -17,12 +17,13 @@ import (
 // Application version - UPDATE THIS FOR NEW RELEASES
 const AppVersion = "2.0.0-testing.1"
 
-// longTimeoutEndpoints defines endpoints that need extended timeouts
+// longTimeoutEndpoints defines endpoints that need extended/none timeouts
+// Paths are checked against the request URL path as seen by the top-level handler.
 var longTimeoutEndpoints = map[string]bool{
-       "/logs/uploadFile":   true,
-       "/logs/downloadFile": true,
-       "/logs/exportData":   true,
-       "/users/login":       true,
+       "/api/logs/uploadFile":   true,
+       "/api/logs/downloadFile": true,
+       "/api/logs/exportData":   true,
+       "/api/users/login":       true,
 }
 
 // timeoutMiddleware applies different timeouts based on the endpoint
@@ -57,63 +58,68 @@ func main() {
        // Check and handle old data migration if needed
        utils.HandleOldData(logger)
 
-       // Create a new router
-       mux := http.NewServeMux()
+       // API sub-router
+       api := http.NewServeMux()
 
        // Public routes (no authentication required)
-       mux.HandleFunc("GET /version", handlers.GetVersionInfo)
-
-       // Register routes
-       mux.HandleFunc("POST /users/login", handlers.Login)
-       mux.HandleFunc("GET /users/migrationProgress", handlers.GetMigrationProgress)
-       mux.HandleFunc("GET /users/isRegistrationAllowed", handlers.IsRegistrationAllowed)
-       mux.HandleFunc("POST /users/register", handlers.RegisterHandler)
-       mux.HandleFunc("GET /users/logout", handlers.Logout)
-       mux.HandleFunc("GET /users/check", middleware.RequireAuth(handlers.CheckLogin))
-       mux.HandleFunc("GET /users/getUserSettings", middleware.RequireAuth(handlers.GetUserSettings))
-       mux.HandleFunc("POST /users/saveUserSettings", middleware.RequireAuth(handlers.SaveUserSettings))
-       mux.HandleFunc("POST /users/changePassword", middleware.RequireAuth(handlers.ChangePassword))
-       mux.HandleFunc("POST /users/changeUsername", middleware.RequireAuth(handlers.ChangeUsername))
-       mux.HandleFunc("POST /users/deleteAccount", middleware.RequireAuth(handlers.DeleteAccount))
-       mux.HandleFunc("POST /users/createBackupCodes", middleware.RequireAuth(handlers.CreateBackupCodes))
-       mux.HandleFunc("POST /users/validatePassword", middleware.RequireAuth(handlers.ValidatePassword))
-       mux.HandleFunc("GET /users/statistics", middleware.RequireAuth(handlers.GetStatistics))
-
-       mux.HandleFunc("POST /logs/saveLog", middleware.RequireAuth(handlers.SaveLog))
-       mux.HandleFunc("GET /logs/getLog", middleware.RequireAuth(handlers.GetLog))
-       mux.HandleFunc("GET /logs/getMarkedDays", middleware.RequireAuth(handlers.GetMarkedDays))
-       mux.HandleFunc("GET /logs/getTags", middleware.RequireAuth(handlers.GetTags))
-       mux.HandleFunc("POST /logs/saveNewTag", middleware.RequireAuth(handlers.SaveTags))
-       mux.HandleFunc("POST /logs/editTag", middleware.RequireAuth(handlers.EditTag))
-       mux.HandleFunc("GET /logs/deleteTag", middleware.RequireAuth(handlers.DeleteTag))
-       mux.HandleFunc("POST /logs/addTagToLog", middleware.RequireAuth(handlers.AddTagToLog))
-       mux.HandleFunc("POST /logs/removeTagFromLog", middleware.RequireAuth(handlers.RemoveTagFromLog))
-       mux.HandleFunc("GET /logs/getTemplates", middleware.RequireAuth(handlers.GetTemplates))
-       mux.HandleFunc("POST /logs/saveTemplates", middleware.RequireAuth(handlers.SaveTemplates))
-       mux.HandleFunc("GET /logs/getALookBack", middleware.RequireAuth(handlers.GetALookBack))
-       mux.HandleFunc("GET /logs/searchString", middleware.RequireAuth(handlers.Search))
-       mux.HandleFunc("GET /logs/searchTag", middleware.RequireAuth(handlers.SearchTag))
-       mux.HandleFunc("GET /logs/loadMonthForReading", middleware.RequireAuth(handlers.LoadMonthForReading))
-       mux.HandleFunc("POST /logs/uploadFile", middleware.RequireAuth(handlers.UploadFile))
-       mux.HandleFunc("GET /logs/downloadFile", middleware.RequireAuth(handlers.DownloadFile))
-       mux.HandleFunc("GET /logs/deleteFile", middleware.RequireAuth(handlers.DeleteFile))
-       mux.HandleFunc("POST /logs/renameFile", middleware.RequireAuth(handlers.RenameFile))
-       mux.HandleFunc("POST /logs/reorderFiles", middleware.RequireAuth(handlers.ReorderFiles))
-       mux.HandleFunc("GET /logs/getHistory", middleware.RequireAuth(handlers.GetHistory))
-       mux.HandleFunc("GET /logs/bookmarkDay", middleware.RequireAuth(handlers.BookmarkDay))
-       mux.HandleFunc("GET /logs/deleteDay", middleware.RequireAuth(handlers.DeleteDay))
-       mux.HandleFunc("GET /logs/exportData", middleware.RequireAuth(handlers.ExportData))
+       api.HandleFunc("GET /version", handlers.GetVersionInfo)
+
+       // Users
+       api.HandleFunc("POST /users/login", handlers.Login)
+       api.HandleFunc("GET /users/migrationProgress", handlers.GetMigrationProgress)
+       api.HandleFunc("GET /users/isRegistrationAllowed", handlers.IsRegistrationAllowed)
+       api.HandleFunc("POST /users/register", handlers.RegisterHandler)
+       api.HandleFunc("GET /users/logout", handlers.Logout)
+       api.HandleFunc("GET /users/check", middleware.RequireAuth(handlers.CheckLogin))
+       api.HandleFunc("GET /users/getUserSettings", middleware.RequireAuth(handlers.GetUserSettings))
+       api.HandleFunc("POST /users/saveUserSettings", middleware.RequireAuth(handlers.SaveUserSettings))
+       api.HandleFunc("POST /users/changePassword", middleware.RequireAuth(handlers.ChangePassword))
+       api.HandleFunc("POST /users/changeUsername", middleware.RequireAuth(handlers.ChangeUsername))
+       api.HandleFunc("POST /users/deleteAccount", middleware.RequireAuth(handlers.DeleteAccount))
+       api.HandleFunc("POST /users/createBackupCodes", middleware.RequireAuth(handlers.CreateBackupCodes))
+       api.HandleFunc("POST /users/validatePassword", middleware.RequireAuth(handlers.ValidatePassword))
+       api.HandleFunc("GET /users/statistics", middleware.RequireAuth(handlers.GetStatistics))
+
+       // Logs
+       api.HandleFunc("POST /logs/saveLog", middleware.RequireAuth(handlers.SaveLog))
+       api.HandleFunc("GET /logs/getLog", middleware.RequireAuth(handlers.GetLog))
+       api.HandleFunc("GET /logs/getMarkedDays", middleware.RequireAuth(handlers.GetMarkedDays))
+       api.HandleFunc("GET /logs/getTags", middleware.RequireAuth(handlers.GetTags))
+       api.HandleFunc("POST /logs/saveNewTag", middleware.RequireAuth(handlers.SaveTags))
+       api.HandleFunc("POST /logs/editTag", middleware.RequireAuth(handlers.EditTag))
+       api.HandleFunc("GET /logs/deleteTag", middleware.RequireAuth(handlers.DeleteTag))
+       api.HandleFunc("POST /logs/addTagToLog", middleware.RequireAuth(handlers.AddTagToLog))
+       api.HandleFunc("POST /logs/removeTagFromLog", middleware.RequireAuth(handlers.RemoveTagFromLog))
+       api.HandleFunc("GET /logs/getTemplates", middleware.RequireAuth(handlers.GetTemplates))
+       api.HandleFunc("POST /logs/saveTemplates", middleware.RequireAuth(handlers.SaveTemplates))
+       api.HandleFunc("GET /logs/getALookBack", middleware.RequireAuth(handlers.GetALookBack))
+       api.HandleFunc("GET /logs/searchString", middleware.RequireAuth(handlers.Search))
+       api.HandleFunc("GET /logs/searchTag", middleware.RequireAuth(handlers.SearchTag))
+       api.HandleFunc("GET /logs/loadMonthForReading", middleware.RequireAuth(handlers.LoadMonthForReading))
+       api.HandleFunc("POST /logs/uploadFile", middleware.RequireAuth(handlers.UploadFile))
+       api.HandleFunc("GET /logs/downloadFile", middleware.RequireAuth(handlers.DownloadFile))
+       api.HandleFunc("GET /logs/deleteFile", middleware.RequireAuth(handlers.DeleteFile))
+       api.HandleFunc("POST /logs/renameFile", middleware.RequireAuth(handlers.RenameFile))
+       api.HandleFunc("POST /logs/reorderFiles", middleware.RequireAuth(handlers.ReorderFiles))
+       api.HandleFunc("GET /logs/getHistory", middleware.RequireAuth(handlers.GetHistory))
+       api.HandleFunc("GET /logs/bookmarkDay", middleware.RequireAuth(handlers.BookmarkDay))
+       api.HandleFunc("GET /logs/deleteDay", middleware.RequireAuth(handlers.DeleteDay))
+       api.HandleFunc("GET /logs/exportData", middleware.RequireAuth(handlers.ExportData))
 
        // Admin routes
-       mux.HandleFunc("POST /admin/validate-password", middleware.RequireAuth(handlers.ValidateAdminPassword))
-       mux.HandleFunc("POST /admin/get-data", middleware.RequireAuth(handlers.GetAdminData))
-       mux.HandleFunc("POST /admin/delete-user", middleware.RequireAuth(handlers.DeleteUser))
-       mux.HandleFunc("POST /admin/delete-old-data", middleware.RequireAuth(handlers.DeleteOldData))
-       mux.HandleFunc("POST /admin/open-registration", middleware.RequireAuth(handlers.OpenRegistrationTemp))
+       api.HandleFunc("POST /admin/validate-password", middleware.RequireAuth(handlers.ValidateAdminPassword))
+       api.HandleFunc("POST /admin/get-data", middleware.RequireAuth(handlers.GetAdminData))
+       api.HandleFunc("POST /admin/delete-user", middleware.RequireAuth(handlers.DeleteUser))
+       api.HandleFunc("POST /admin/delete-old-data", middleware.RequireAuth(handlers.DeleteOldData))
+       api.HandleFunc("POST /admin/open-registration", middleware.RequireAuth(handlers.OpenRegistrationTemp))
+
+       // Root mux mounts API under /api/
+       rootMux := http.NewServeMux()
+       rootMux.Handle("/api/", http.StripPrefix("/api", api))
 
        // Create a handler chain with Timeout, Logger and CORS middleware
        // Timeout middleware will be executed first, then Logger, then CORS
-       handler := timeoutMiddleware(middleware.Logger(middleware.CORS(mux)))
+       handler := timeoutMiddleware(middleware.Logger(middleware.CORS(rootMux)))
 
        // Create the server without ReadTimeout/WriteTimeout (managed by middleware)
        server := &http.Server{
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
new file mode 100644 (file)
index 0000000..68ca972
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+set -e
+
+# Start the Go backend in background
+# Environment variables consumed by backend (see utils.InitSettings):
+#   DATA_PATH, DEVELOPMENT, SECRET_TOKEN, LOGOUT_AFTER_DAYS, ALLOWED_HOSTS, INDENT, ALLOW_REGISTRATION, ADMIN_PASSWORD
+
+# Ensure data directory exists
+mkdir -p "${DATA_PATH:-/data}"
+
+# Run backend
+/usr/local/bin/dailytxt &
+BACKEND_PID=$!
+
+echo "Started backend (PID $BACKEND_PID)"
+
+# Start nginx in foreground
+exec nginx -g 'daemon off;'
index 79518f716450203a2ce2c11665182cc439429a76..56749de64a95463f935fc266b78e71cdd321fc59 100644 (file)
@@ -19,3 +19,5 @@ Thumbs.db
 # Vite
 vite.config.js.timestamp-*
 vite.config.ts.timestamp-*
+
+dev-dist
\ No newline at end of file
index e98006b2e6058cfc2ee3fa7f103cfd355f19700e..91c010b9880f55d8dcdcab02f06fefbe156a83ff 100644 (file)
@@ -30,6 +30,7 @@
                                "@sveltejs/kit": "^2.0.0",
                                "@sveltejs/vite-plugin-svelte": "^4.0.0",
                                "@types/bootstrap": "^5.2.10",
+                               "@vite-pwa/sveltekit": "^1.0.0",
                                "eslint": "^9.7.0",
                                "eslint-config-prettier": "^9.1.0",
                                "eslint-plugin-svelte": "^2.36.0",
@@ -42,7 +43,8 @@
                                "svelte-fa": "^4.0.3",
                                "typescript": "^5.0.0",
                                "typescript-eslint": "^8.0.0",
-                               "vite": "^5.0.3"
+                               "vite": "^5.0.3",
+                               "vite-plugin-mkcert": "^1.17.8"
                        }
                },
                "node_modules/@ampproject/remapping": {
                                "node": ">=6.0.0"
                        }
                },
-               "node_modules/@emoji-mart/data": {
-                       "version": "1.2.1",
-                       "resolved": "https://registry.npmjs.org/@emoji-mart/data/-/data-1.2.1.tgz",
-                       "integrity": "sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==",
-                       "license": "MIT"
-               },
-               "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"
-                       ],
+               "node_modules/@babel/code-frame": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+                       "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "aix"
-                       ],
+                       "dependencies": {
+                               "@babel/helper-validator-identifier": "^7.27.1",
+                               "js-tokens": "^4.0.0",
+                               "picocolors": "^1.1.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/compat-data": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz",
+                       "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ],
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/core": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
+                       "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ],
+                       "dependencies": {
+                               "@babel/code-frame": "^7.27.1",
+                               "@babel/generator": "^7.28.3",
+                               "@babel/helper-compilation-targets": "^7.27.2",
+                               "@babel/helper-module-transforms": "^7.28.3",
+                               "@babel/helpers": "^7.28.4",
+                               "@babel/parser": "^7.28.4",
+                               "@babel/template": "^7.27.2",
+                               "@babel/traverse": "^7.28.4",
+                               "@babel/types": "^7.28.4",
+                               "@jridgewell/remapping": "^2.3.5",
+                               "convert-source-map": "^2.0.0",
+                               "debug": "^4.1.0",
+                               "gensync": "^1.0.0-beta.2",
+                               "json5": "^2.2.3",
+                               "semver": "^6.3.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
+                       },
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/babel"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/core/node_modules/semver": {
+                       "version": "6.3.1",
+                       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+                       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
                        "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ],
-                       "engines": {
-                               "node": ">=12"
+                       "license": "ISC",
+                       "bin": {
+                               "semver": "bin/semver.js"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/generator": {
+                       "version": "7.28.3",
+                       "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz",
+                       "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ],
+                       "dependencies": {
+                               "@babel/parser": "^7.28.3",
+                               "@babel/types": "^7.28.2",
+                               "@jridgewell/gen-mapping": "^0.3.12",
+                               "@jridgewell/trace-mapping": "^0.3.28",
+                               "jsesc": "^3.0.2"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-annotate-as-pure": {
+                       "version": "7.27.3",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+                       "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ],
+                       "dependencies": {
+                               "@babel/types": "^7.27.3"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-compilation-targets": {
+                       "version": "7.27.2",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+                       "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "freebsd"
-                       ],
+                       "dependencies": {
+                               "@babel/compat-data": "^7.27.2",
+                               "@babel/helper-validator-option": "^7.27.1",
+                               "browserslist": "^4.24.0",
+                               "lru-cache": "^5.1.1",
+                               "semver": "^6.3.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+                       "version": "6.3.1",
+                       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+                       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+                       "dev": true,
+                       "license": "ISC",
+                       "bin": {
+                               "semver": "bin/semver.js"
+                       }
+               },
+               "node_modules/@babel/helper-create-class-features-plugin": {
+                       "version": "7.28.3",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz",
+                       "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "freebsd"
-                       ],
+                       "dependencies": {
+                               "@babel/helper-annotate-as-pure": "^7.27.3",
+                               "@babel/helper-member-expression-to-functions": "^7.27.1",
+                               "@babel/helper-optimise-call-expression": "^7.27.1",
+                               "@babel/helper-replace-supers": "^7.27.1",
+                               "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+                               "@babel/traverse": "^7.28.3",
+                               "semver": "^6.3.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
+                       "version": "6.3.1",
+                       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+                       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+                       "dev": true,
+                       "license": "ISC",
+                       "bin": {
+                               "semver": "bin/semver.js"
+                       }
+               },
+               "node_modules/@babel/helper-create-regexp-features-plugin": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz",
+                       "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
+                       "dependencies": {
+                               "@babel/helper-annotate-as-pure": "^7.27.1",
+                               "regexpu-core": "^6.2.0",
+                               "semver": "^6.3.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
+                       "version": "6.3.1",
+                       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+                       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+                       "dev": true,
+                       "license": "ISC",
+                       "bin": {
+                               "semver": "bin/semver.js"
+                       }
+               },
+               "node_modules/@babel/helper-define-polyfill-provider": {
+                       "version": "0.6.5",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz",
+                       "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
-                       "engines": {
-                               "node": ">=12"
+                       "dependencies": {
+                               "@babel/helper-compilation-targets": "^7.27.2",
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "debug": "^4.4.1",
+                               "lodash.debounce": "^4.0.8",
+                               "resolve": "^1.22.10"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-globals": {
+                       "version": "7.28.0",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+                       "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-member-expression-to-functions": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz",
+                       "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
+                       "dependencies": {
+                               "@babel/traverse": "^7.27.1",
+                               "@babel/types": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-module-imports": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+                       "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
+                       "dependencies": {
+                               "@babel/traverse": "^7.27.1",
+                               "@babel/types": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-module-transforms": {
+                       "version": "7.28.3",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
+                       "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
+                       "dependencies": {
+                               "@babel/helper-module-imports": "^7.27.1",
+                               "@babel/helper-validator-identifier": "^7.27.1",
+                               "@babel/traverse": "^7.28.3"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-optimise-call-expression": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
+                       "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
+                       "dependencies": {
+                               "@babel/types": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-plugin-utils": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+                       "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-remap-async-to-generator": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz",
+                       "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ],
+                       "dependencies": {
+                               "@babel/helper-annotate-as-pure": "^7.27.1",
+                               "@babel/helper-wrap-function": "^7.27.1",
+                               "@babel/traverse": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-replace-supers": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
+                       "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "netbsd"
-                       ],
+                       "dependencies": {
+                               "@babel/helper-member-expression-to-functions": "^7.27.1",
+                               "@babel/helper-optimise-call-expression": "^7.27.1",
+                               "@babel/traverse": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
+                       "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "openbsd"
-                       ],
+                       "dependencies": {
+                               "@babel/traverse": "^7.27.1",
+                               "@babel/types": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-string-parser": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+                       "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "sunos"
-                       ],
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-validator-identifier": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+                       "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ],
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-validator-option": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+                       "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ],
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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"
-                       ],
+               "node_modules/@babel/helper-wrap-function": {
+                       "version": "7.28.3",
+                       "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz",
+                       "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ],
+                       "dependencies": {
+                               "@babel/template": "^7.27.2",
+                               "@babel/traverse": "^7.28.3",
+                               "@babel/types": "^7.28.2"
+                       },
                        "engines": {
-                               "node": ">=12"
+                               "node": ">=6.9.0"
                        }
                },
-               "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==",
+               "node_modules/@babel/helpers": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
+                       "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "eslint-visitor-keys": "^3.4.3"
+                               "@babel/template": "^7.27.2",
+                               "@babel/types": "^7.28.4"
                        },
                        "engines": {
-                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+                               "node": ">=6.9.0"
+                       }
+               },
+               "node_modules/@babel/parser": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
+                       "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/types": "^7.28.4"
                        },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
+                       "bin": {
+                               "parser": "bin/babel-parser.js"
                        },
-                       "peerDependencies": {
-                               "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+                       "engines": {
+                               "node": ">=6.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==",
+               "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz",
+                       "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/traverse": "^7.27.1"
+                       },
                        "engines": {
-                               "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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==",
+               "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz",
+                       "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "node_modules/@eslint/config-array": {
-                       "version": "0.19.1",
-                       "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz",
-                       "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==",
+               "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz",
+                       "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
                        "dependencies": {
-                               "@eslint/object-schema": "^2.1.5",
-                               "debug": "^4.3.1",
-                               "minimatch": "^3.1.2"
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "node_modules/@eslint/core": {
-                       "version": "0.9.1",
-                       "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz",
-                       "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==",
+               "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz",
+                       "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
                        "dependencies": {
-                               "@types/json-schema": "^7.0.15"
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+                               "@babel/plugin-transform-optional-chaining": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.13.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==",
+               "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
+                       "version": "7.28.3",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz",
+                       "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==",
                        "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"
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/traverse": "^7.28.3"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "url": "https://opencollective.com/eslint"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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==",
+               "node_modules/@babel/plugin-proposal-private-property-in-object": {
+                       "version": "7.21.0-placeholder-for-preset-env.2",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+                       "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
                        "dev": true,
                        "license": "MIT",
                        "engines": {
-                               "node": ">=18"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@eslint/js": {
-                       "version": "9.17.0",
-                       "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz",
-                       "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==",
+               "node_modules/@babel/plugin-syntax-import-assertions": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz",
+                       "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@eslint/object-schema": {
-                       "version": "2.1.5",
-                       "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz",
-                       "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==",
+               "node_modules/@babel/plugin-syntax-import-attributes": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz",
+                       "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@eslint/plugin-kit": {
-                       "version": "0.2.4",
-                       "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz",
-                       "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==",
+               "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
+                       "version": "7.18.6",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+                       "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
                        "dependencies": {
-                               "levn": "^0.4.1"
+                               "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+                               "@babel/helper-plugin-utils": "^7.18.6"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "node_modules/@fortawesome/fontawesome-common-types": {
-                       "version": "6.7.2",
-                       "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz",
-                       "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==",
+               "node_modules/@babel/plugin-transform-arrow-functions": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz",
+                       "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==",
+                       "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=6"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@fortawesome/free-solid-svg-icons": {
-                       "version": "6.7.2",
-                       "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz",
-                       "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==",
-                       "license": "(CC-BY-4.0 AND MIT)",
+               "node_modules/@babel/plugin-transform-async-generator-functions": {
+                       "version": "7.28.0",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz",
+                       "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==",
+                       "dev": true,
+                       "license": "MIT",
                        "dependencies": {
-                               "@fortawesome/fontawesome-common-types": "6.7.2"
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-remap-async-to-generator": "^7.27.1",
+                               "@babel/traverse": "^7.28.0"
                        },
                        "engines": {
-                               "node": ">=6"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-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==",
+               "node_modules/@babel/plugin-transform-async-to-generator": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz",
+                       "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-module-imports": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-remap-async-to-generator": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=18.18.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-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==",
+               "node_modules/@babel/plugin-transform-block-scoped-functions": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz",
+                       "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
                        "dependencies": {
-                               "@humanfs/core": "^0.19.1",
-                               "@humanwhocodes/retry": "^0.3.0"
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": ">=18.18.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-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==",
+               "node_modules/@babel/plugin-transform-block-scoping": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz",
+                       "integrity": "sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=18.18"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/nzakas"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "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==",
+               "node_modules/@babel/plugin-transform-class-properties": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz",
+                       "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-create-class-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=12.22"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/nzakas"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "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==",
+               "node_modules/@babel/plugin-transform-class-static-block": {
+                       "version": "7.28.3",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz",
+                       "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==",
                        "dev": true,
-                       "license": "Apache-2.0",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-create-class-features-plugin": "^7.28.3",
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=18.18"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/nzakas"
+                       "peerDependencies": {
+                               "@babel/core": "^7.12.0"
                        }
                },
-               "node_modules/@jridgewell/gen-mapping": {
-                       "version": "0.3.8",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
-                       "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+               "node_modules/@babel/plugin-transform-classes": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz",
+                       "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==",
+                       "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@jridgewell/set-array": "^1.2.1",
-                               "@jridgewell/sourcemap-codec": "^1.4.10",
-                               "@jridgewell/trace-mapping": "^0.3.24"
+                               "@babel/helper-annotate-as-pure": "^7.27.3",
+                               "@babel/helper-compilation-targets": "^7.27.2",
+                               "@babel/helper-globals": "^7.28.0",
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-replace-supers": "^7.27.1",
+                               "@babel/traverse": "^7.28.4"
                        },
                        "engines": {
-                               "node": ">=6.0.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.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==",
+               "node_modules/@babel/plugin-transform-computed-properties": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz",
+                       "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==",
+                       "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/template": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">=6.0.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.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==",
+               "node_modules/@babel/plugin-transform-destructuring": {
+                       "version": "7.28.0",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz",
+                       "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==",
+                       "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/traverse": "^7.28.0"
+                       },
                        "engines": {
-                               "node": ">=6.0.0"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@jridgewell/sourcemap-codec": {
-                       "version": "1.5.0",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
-                       "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
-                       "license": "MIT"
-               },
-               "node_modules/@jridgewell/trace-mapping": {
-                       "version": "0.3.25",
-                       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
-                       "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+               "node_modules/@babel/plugin-transform-dotall-regex": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz",
+                       "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==",
+                       "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@jridgewell/resolve-uri": "^3.1.0",
-                               "@jridgewell/sourcemap-codec": "^1.4.14"
+                               "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@mapbox/node-pre-gyp": {
-                       "version": "1.0.11",
-                       "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
-                       "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
-                       "license": "BSD-3-Clause",
+               "node_modules/@babel/plugin-transform-duplicate-keys": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz",
+                       "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==",
+                       "dev": true,
+                       "license": "MIT",
                        "dependencies": {
-                               "detect-libc": "^2.0.0",
-                               "https-proxy-agent": "^5.0.0",
-                               "make-dir": "^3.1.0",
-                               "node-fetch": "^2.6.7",
-                               "nopt": "^5.0.0",
-                               "npmlog": "^5.0.1",
-                               "rimraf": "^3.0.2",
-                               "semver": "^7.3.5",
-                               "tar": "^6.1.11"
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
-                       "bin": {
-                               "node-pre-gyp": "bin/node-pre-gyp"
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "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==",
+               "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz",
+                       "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@nodelib/fs.stat": "2.0.5",
-                               "run-parallel": "^1.1.9"
+                               "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": ">= 8"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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==",
+               "node_modules/@babel/plugin-transform-dynamic-import": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz",
+                       "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": ">= 8"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "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==",
+               "node_modules/@babel/plugin-transform-explicit-resource-management": {
+                       "version": "7.28.0",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz",
+                       "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@nodelib/fs.scandir": "2.1.5",
-                               "fastq": "^1.6.0"
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/plugin-transform-destructuring": "^7.28.0"
                        },
                        "engines": {
-                               "node": ">= 8"
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "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==",
+               "node_modules/@babel/plugin-transform-exponentiation-operator": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz",
+                       "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==",
                        "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"
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@rollup/rollup-android-arm-eabi": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz",
-                       "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==",
-                       "cpu": [
-                               "arm"
-                       ],
+               "node_modules/@babel/plugin-transform-export-namespace-from": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz",
+                       "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-android-arm64": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz",
-                       "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==",
-                       "cpu": [
-                               "arm64"
-                       ],
+               "node_modules/@babel/plugin-transform-for-of": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz",
+                       "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "android"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-darwin-arm64": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz",
-                       "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==",
-                       "cpu": [
-                               "arm64"
-                       ],
+               "node_modules/@babel/plugin-transform-function-name": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz",
+                       "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-compilation-targets": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/traverse": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-darwin-x64": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz",
-                       "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==",
-                       "cpu": [
-                               "x64"
-                       ],
+               "node_modules/@babel/plugin-transform-json-strings": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz",
+                       "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-freebsd-arm64": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz",
-                       "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==",
-                       "cpu": [
-                               "arm64"
-                       ],
+               "node_modules/@babel/plugin-transform-literals": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz",
+                       "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "freebsd"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-freebsd-x64": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz",
-                       "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==",
-                       "cpu": [
-                               "x64"
-                       ],
+               "node_modules/@babel/plugin-transform-logical-assignment-operators": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz",
+                       "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "freebsd"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz",
-                       "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==",
-                       "cpu": [
-                               "arm"
-                       ],
-                       "dev": true,
-                       "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
-               },
-               "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz",
-                       "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==",
-                       "cpu": [
-                               "arm"
-                       ],
+               "node_modules/@babel/plugin-transform-member-expression-literals": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz",
+                       "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-arm64-gnu": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz",
-                       "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==",
-                       "cpu": [
-                               "arm64"
-                       ],
+               "node_modules/@babel/plugin-transform-modules-amd": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz",
+                       "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-module-transforms": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-arm64-musl": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz",
-                       "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==",
-                       "cpu": [
-                               "arm64"
-                       ],
+               "node_modules/@babel/plugin-transform-modules-commonjs": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
+                       "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-module-transforms": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz",
-                       "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==",
-                       "cpu": [
-                               "loong64"
-                       ],
+               "node_modules/@babel/plugin-transform-modules-systemjs": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz",
+                       "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-module-transforms": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-validator-identifier": "^7.27.1",
+                               "@babel/traverse": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz",
-                       "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==",
-                       "cpu": [
-                               "ppc64"
-                       ],
+               "node_modules/@babel/plugin-transform-modules-umd": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz",
+                       "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-module-transforms": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz",
-                       "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==",
-                       "cpu": [
-                               "riscv64"
-                       ],
+               "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz",
+                       "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-s390x-gnu": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz",
-                       "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==",
-                       "cpu": [
-                               "s390x"
-                       ],
+               "node_modules/@babel/plugin-transform-new-target": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz",
+                       "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-x64-gnu": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz",
-                       "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==",
-                       "cpu": [
-                               "x64"
-                       ],
+               "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz",
+                       "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-linux-x64-musl": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz",
-                       "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==",
-                       "cpu": [
-                               "x64"
-                       ],
+               "node_modules/@babel/plugin-transform-numeric-separator": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz",
+                       "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "linux"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-win32-arm64-msvc": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz",
-                       "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==",
-                       "cpu": [
-                               "arm64"
-                       ],
+               "node_modules/@babel/plugin-transform-object-rest-spread": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz",
+                       "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-compilation-targets": "^7.27.2",
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/plugin-transform-destructuring": "^7.28.0",
+                               "@babel/plugin-transform-parameters": "^7.27.7",
+                               "@babel/traverse": "^7.28.4"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-win32-ia32-msvc": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz",
-                       "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==",
-                       "cpu": [
-                               "ia32"
-                       ],
+               "node_modules/@babel/plugin-transform-object-super": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz",
+                       "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-replace-supers": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "node_modules/@rollup/rollup-win32-x64-msvc": {
-                       "version": "4.29.1",
-                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz",
-                       "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==",
-                       "cpu": [
-                               "x64"
-                       ],
+               "node_modules/@babel/plugin-transform-optional-catch-binding": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz",
+                       "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==",
                        "dev": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "win32"
-                       ]
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
+                       }
                },
-               "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==",
+               "node_modules/@babel/plugin-transform-optional-chaining": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz",
+                       "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "import-meta-resolve": "^4.1.0"
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "@sveltejs/kit": "^2.0.0"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@sveltejs/adapter-static": {
-                       "version": "3.0.8",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz",
-                       "integrity": "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==",
+               "node_modules/@babel/plugin-transform-parameters": {
+                       "version": "7.27.7",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz",
+                       "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
                        "peerDependencies": {
-                               "@sveltejs/kit": "^2.0.0"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@sveltejs/kit": {
-                       "version": "2.15.1",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.15.1.tgz",
-                       "integrity": "sha512-8t7D3hQHbUDMiaQ2RVnjJJ/+Ur4Fn/tkeySJCsHtX346Q9cp3LAnav8xXdfuqYNJwpUGX0x3BqF1uvbmXQw93A==",
+               "node_modules/@babel/plugin-transform-private-methods": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz",
+                       "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==",
                        "dev": true,
-                       "hasInstallScript": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@types/cookie": "^0.6.0",
-                               "cookie": "^0.6.0",
-                               "devalue": "^5.1.0",
-                               "esm-env": "^1.2.1",
-                               "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"
+                               "@babel/helper-create-class-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": ">=18.13"
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0",
-                               "svelte": "^4.0.0 || ^5.0.0-next.0",
-                               "vite": "^5.0.3 || ^6.0.0"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@sveltejs/vite-plugin-svelte": {
-                       "version": "4.0.4",
-                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.4.tgz",
-                       "integrity": "sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==",
+               "node_modules/@babel/plugin-transform-private-property-in-object": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz",
+                       "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==",
                        "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"
+                               "@babel/helper-annotate-as-pure": "^7.27.1",
+                               "@babel/helper-create-class-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.0.0 || ^20.0.0 || >=22"
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "svelte": "^5.0.0-next.96 || ^5.0.0",
-                               "vite": "^5.0.0"
+                               "@babel/core": "^7.0.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==",
+               "node_modules/@babel/plugin-transform-property-literals": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz",
+                       "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "debug": "^4.3.7"
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.0.0 || ^20.0.0 || >=22"
+                               "node": ">=6.9.0"
                        },
                        "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"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@tolgee/core": {
-                       "version": "6.2.7",
-                       "resolved": "https://registry.npmjs.org/@tolgee/core/-/core-6.2.7.tgz",
-                       "integrity": "sha512-0Au+m9R23/gmeaLJY0X6lKcR2LSy9dW7hEFrpFvPdJoGvxc8XCNZpKlgnm1N534CwmtIBJ4rzOK6vOrSKbl45w==",
-                       "license": "MIT"
-               },
-               "node_modules/@tolgee/format-icu": {
-                       "version": "6.2.7",
-                       "resolved": "https://registry.npmjs.org/@tolgee/format-icu/-/format-icu-6.2.7.tgz",
-                       "integrity": "sha512-rLa8EZZVX3pDYC3I6HLnLvTgwLr2PAyOw+7SanS7d7SXp9cvcxbX8O6nqHubv6K7YDqVblcj9FoFbvGBQ22PgQ==",
-                       "license": "MIT"
-               },
-               "node_modules/@tolgee/svelte": {
-                       "version": "6.2.7",
-                       "resolved": "https://registry.npmjs.org/@tolgee/svelte/-/svelte-6.2.7.tgz",
-                       "integrity": "sha512-R7J3XO3g5BtUnXwvzljajRAnJeFIPB0qmisEl896L4IJUMHfsddDytaFRP90hlQzEgwRICMtbr43T6XFgSNJrQ==",
+               "node_modules/@babel/plugin-transform-regenerator": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz",
+                       "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==",
+                       "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@tolgee/web": "6.2.7"
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "svelte": "^4.0.0 || ^5.0.0"
-                       }
-               },
-               "node_modules/@tolgee/web": {
-                       "version": "6.2.7",
-                       "resolved": "https://registry.npmjs.org/@tolgee/web/-/web-6.2.7.tgz",
-                       "integrity": "sha512-MAgHGkL5RYREwAjUansJt98fCuQFV4uDfP11NLOCHan2Hx9rpuszv88eXX7enq9CE8eS/Ed2pELiSwb5rlYiKg==",
-                       "license": "BSD-3-Clause",
-                       "dependencies": {
-                               "@tolgee/core": "6.2.7"
+                               "@babel/core": "^7.0.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==",
+               "node_modules/@babel/plugin-transform-regexp-modifiers": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz",
+                       "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@popperjs/core": "^2.9.2"
+                               "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
                        }
                },
-               "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==",
-                       "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.18.2",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz",
-                       "integrity": "sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==",
+               "node_modules/@babel/plugin-transform-reserved-words": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz",
+                       "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@eslint-community/regexpp": "^4.10.0",
-                               "@typescript-eslint/scope-manager": "8.18.2",
-                               "@typescript-eslint/type-utils": "8.18.2",
-                               "@typescript-eslint/utils": "8.18.2",
-                               "@typescript-eslint/visitor-keys": "8.18.2",
-                               "graphemer": "^1.4.0",
-                               "ignore": "^5.3.1",
-                               "natural-compare": "^1.4.0",
-                               "ts-api-utils": "^1.3.0"
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
-                               "eslint": "^8.57.0 || ^9.0.0",
-                               "typescript": ">=4.8.4 <5.8.0"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@typescript-eslint/parser": {
-                       "version": "8.18.2",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.2.tgz",
-                       "integrity": "sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==",
+               "node_modules/@babel/plugin-transform-shorthand-properties": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz",
+                       "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@typescript-eslint/scope-manager": "8.18.2",
-                               "@typescript-eslint/types": "8.18.2",
-                               "@typescript-eslint/typescript-estree": "8.18.2",
-                               "@typescript-eslint/visitor-keys": "8.18.2",
-                               "debug": "^4.3.4"
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "eslint": "^8.57.0 || ^9.0.0",
-                               "typescript": ">=4.8.4 <5.8.0"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@typescript-eslint/scope-manager": {
-                       "version": "8.18.2",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz",
-                       "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==",
+               "node_modules/@babel/plugin-transform-spread": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz",
+                       "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@typescript-eslint/types": "8.18.2",
-                               "@typescript-eslint/visitor-keys": "8.18.2"
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@typescript-eslint/type-utils": {
-                       "version": "8.18.2",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz",
-                       "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==",
+               "node_modules/@babel/plugin-transform-sticky-regex": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz",
+                       "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@typescript-eslint/typescript-estree": "8.18.2",
-                               "@typescript-eslint/utils": "8.18.2",
-                               "debug": "^4.3.4",
-                               "ts-api-utils": "^1.3.0"
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "eslint": "^8.57.0 || ^9.0.0",
-                               "typescript": ">=4.8.4 <5.8.0"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@typescript-eslint/types": {
-                       "version": "8.18.2",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz",
-                       "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==",
+               "node_modules/@babel/plugin-transform-template-literals": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz",
+                       "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@typescript-eslint/typescript-estree": {
-                       "version": "8.18.2",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz",
-                       "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==",
+               "node_modules/@babel/plugin-transform-typeof-symbol": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz",
+                       "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@typescript-eslint/types": "8.18.2",
-                               "@typescript-eslint/visitor-keys": "8.18.2",
-                               "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"
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "typescript": ">=4.8.4 <5.8.0"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-                       "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+               "node_modules/@babel/plugin-transform-unicode-escapes": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz",
+                       "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "balanced-match": "^1.0.0"
+                               "@babel/helper-plugin-utils": "^7.27.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.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==",
+               "node_modules/@babel/plugin-transform-unicode-property-regex": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz",
+                       "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==",
                        "dev": true,
-                       "license": "ISC",
+                       "license": "MIT",
                        "dependencies": {
-                               "brace-expansion": "^2.0.1"
+                               "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": ">=16 || 14 >=14.17"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "url": "https://github.com/sponsors/isaacs"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@typescript-eslint/utils": {
-                       "version": "8.18.2",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz",
-                       "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==",
+               "node_modules/@babel/plugin-transform-unicode-regex": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz",
+                       "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@eslint-community/eslint-utils": "^4.4.0",
-                               "@typescript-eslint/scope-manager": "8.18.2",
-                               "@typescript-eslint/types": "8.18.2",
-                               "@typescript-eslint/typescript-estree": "8.18.2"
+                               "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-                       },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                               "node": ">=6.9.0"
                        },
                        "peerDependencies": {
-                               "eslint": "^8.57.0 || ^9.0.0",
-                               "typescript": ">=4.8.4 <5.8.0"
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/@typescript-eslint/visitor-keys": {
-                       "version": "8.18.2",
-                       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz",
-                       "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==",
+               "node_modules/@babel/plugin-transform-unicode-sets-regex": {
+                       "version": "7.27.1",
+                       "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz",
+                       "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@typescript-eslint/types": "8.18.2",
-                               "eslint-visitor-keys": "^4.2.0"
+                               "@babel/helper-create-regexp-features-plugin": "^7.27.1",
+                               "@babel/helper-plugin-utils": "^7.27.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">=6.9.0"
                        },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0"
+                       }
+               },
+               "node_modules/@babel/preset-env": {
+                       "version": "7.28.3",
+                       "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz",
+                       "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/compat-data": "^7.28.0",
+                               "@babel/helper-compilation-targets": "^7.27.2",
+                               "@babel/helper-plugin-utils": "^7.27.1",
+                               "@babel/helper-validator-option": "^7.27.1",
+                               "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1",
+                               "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
+                               "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
+                               "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
+                               "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3",
+                               "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+                               "@babel/plugin-syntax-import-assertions": "^7.27.1",
+                               "@babel/plugin-syntax-import-attributes": "^7.27.1",
+                               "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+                               "@babel/plugin-transform-arrow-functions": "^7.27.1",
+                               "@babel/plugin-transform-async-generator-functions": "^7.28.0",
+                               "@babel/plugin-transform-async-to-generator": "^7.27.1",
+                               "@babel/plugin-transform-block-scoped-functions": "^7.27.1",
+                               "@babel/plugin-transform-block-scoping": "^7.28.0",
+                               "@babel/plugin-transform-class-properties": "^7.27.1",
+                               "@babel/plugin-transform-class-static-block": "^7.28.3",
+                               "@babel/plugin-transform-classes": "^7.28.3",
+                               "@babel/plugin-transform-computed-properties": "^7.27.1",
+                               "@babel/plugin-transform-destructuring": "^7.28.0",
+                               "@babel/plugin-transform-dotall-regex": "^7.27.1",
+                               "@babel/plugin-transform-duplicate-keys": "^7.27.1",
+                               "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
+                               "@babel/plugin-transform-dynamic-import": "^7.27.1",
+                               "@babel/plugin-transform-explicit-resource-management": "^7.28.0",
+                               "@babel/plugin-transform-exponentiation-operator": "^7.27.1",
+                               "@babel/plugin-transform-export-namespace-from": "^7.27.1",
+                               "@babel/plugin-transform-for-of": "^7.27.1",
+                               "@babel/plugin-transform-function-name": "^7.27.1",
+                               "@babel/plugin-transform-json-strings": "^7.27.1",
+                               "@babel/plugin-transform-literals": "^7.27.1",
+                               "@babel/plugin-transform-logical-assignment-operators": "^7.27.1",
+                               "@babel/plugin-transform-member-expression-literals": "^7.27.1",
+                               "@babel/plugin-transform-modules-amd": "^7.27.1",
+                               "@babel/plugin-transform-modules-commonjs": "^7.27.1",
+                               "@babel/plugin-transform-modules-systemjs": "^7.27.1",
+                               "@babel/plugin-transform-modules-umd": "^7.27.1",
+                               "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1",
+                               "@babel/plugin-transform-new-target": "^7.27.1",
+                               "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
+                               "@babel/plugin-transform-numeric-separator": "^7.27.1",
+                               "@babel/plugin-transform-object-rest-spread": "^7.28.0",
+                               "@babel/plugin-transform-object-super": "^7.27.1",
+                               "@babel/plugin-transform-optional-catch-binding": "^7.27.1",
+                               "@babel/plugin-transform-optional-chaining": "^7.27.1",
+                               "@babel/plugin-transform-parameters": "^7.27.7",
+                               "@babel/plugin-transform-private-methods": "^7.27.1",
+                               "@babel/plugin-transform-private-property-in-object": "^7.27.1",
+                               "@babel/plugin-transform-property-literals": "^7.27.1",
+                               "@babel/plugin-transform-regenerator": "^7.28.3",
+                               "@babel/plugin-transform-regexp-modifiers": "^7.27.1",
+                               "@babel/plugin-transform-reserved-words": "^7.27.1",
+                               "@babel/plugin-transform-shorthand-properties": "^7.27.1",
+                               "@babel/plugin-transform-spread": "^7.27.1",
+                               "@babel/plugin-transform-sticky-regex": "^7.27.1",
+                               "@babel/plugin-transform-template-literals": "^7.27.1",
+                               "@babel/plugin-transform-typeof-symbol": "^7.27.1",
+                               "@babel/plugin-transform-unicode-escapes": "^7.27.1",
+                               "@babel/plugin-transform-unicode-property-regex": "^7.27.1",
+                               "@babel/plugin-transform-unicode-regex": "^7.27.1",
+                               "@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
+                               "@babel/preset-modules": "0.1.6-no-external-plugins",
+                               "babel-plugin-polyfill-corejs2": "^0.4.14",
+                               "babel-plugin-polyfill-corejs3": "^0.13.0",
+                               "babel-plugin-polyfill-regenerator": "^0.6.5",
+                               "core-js-compat": "^3.43.0",
+                               "semver": "^6.3.1"
+                       },
+                       "engines": {
+                               "node": ">=6.9.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0-0"
                        }
                },
-               "node_modules/abbrev": {
-                       "version": "1.1.1",
-                       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
-                       "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
-                       "license": "ISC"
-               },
-               "node_modules/acorn": {
-                       "version": "8.14.0",
-                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
-                       "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
-                       "license": "MIT",
+               "node_modules/@babel/preset-env/node_modules/semver": {
+                       "version": "6.3.1",
+                       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+                       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+                       "dev": true,
+                       "license": "ISC",
                        "bin": {
-                               "acorn": "bin/acorn"
-                       },
-                       "engines": {
-                               "node": ">=0.4.0"
+                               "semver": "bin/semver.js"
                        }
                },
-               "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==",
+               "node_modules/@babel/preset-modules": {
+                       "version": "0.1.6-no-external-plugins",
+                       "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+                       "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-plugin-utils": "^7.0.0",
+                               "@babel/types": "^7.4.4",
+                               "esutils": "^2.0.2"
+                       },
                        "peerDependencies": {
-                               "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+                               "@babel/core": "^7.0.0-0 || ^8.0.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==",
+               "node_modules/@babel/runtime": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
+                       "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+                       "dev": true,
                        "license": "MIT",
-                       "peerDependencies": {
-                               "acorn": ">=8.9.0"
+                       "engines": {
+                               "node": ">=6.9.0"
                        }
                },
-               "node_modules/agent-base": {
-                       "version": "6.0.2",
-                       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
-                       "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-                       "license": "MIT",
-                       "dependencies": {
-                               "debug": "4"
-                       },
-                       "engines": {
-                               "node": ">= 6.0.0"
-                       }
-               },
-               "node_modules/ajv": {
-                       "version": "6.12.6",
-                       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
-                       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+               "node_modules/@babel/template": {
+                       "version": "7.27.2",
+                       "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+                       "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
                        "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"
+                               "@babel/code-frame": "^7.27.1",
+                               "@babel/parser": "^7.27.2",
+                               "@babel/types": "^7.27.1"
                        },
-                       "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/epoberezkin"
-                       }
-               },
-               "node_modules/ansi-regex": {
-                       "version": "5.0.1",
-                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-                       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-                       "license": "MIT",
                        "engines": {
-                               "node": ">=8"
+                               "node": ">=6.9.0"
                        }
                },
-               "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==",
+               "node_modules/@babel/traverse": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz",
+                       "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "color-convert": "^2.0.1"
+                               "@babel/code-frame": "^7.27.1",
+                               "@babel/generator": "^7.28.3",
+                               "@babel/helper-globals": "^7.28.0",
+                               "@babel/parser": "^7.28.4",
+                               "@babel/template": "^7.27.2",
+                               "@babel/types": "^7.28.4",
+                               "debug": "^4.3.1"
                        },
                        "engines": {
-                               "node": ">=8"
-                       },
-                       "funding": {
-                               "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+                               "node": ">=6.9.0"
                        }
                },
-               "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==",
+               "node_modules/@babel/types": {
+                       "version": "7.28.4",
+                       "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
+                       "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
                        "dev": true,
-                       "license": "ISC",
+                       "license": "MIT",
                        "dependencies": {
-                               "normalize-path": "^3.0.0",
-                               "picomatch": "^2.0.4"
+                               "@babel/helper-string-parser": "^7.27.1",
+                               "@babel/helper-validator-identifier": "^7.27.1"
                        },
                        "engines": {
-                               "node": ">= 8"
+                               "node": ">=6.9.0"
                        }
                },
-               "node_modules/aproba": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
-                       "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
-                       "license": "ISC"
+               "node_modules/@emoji-mart/data": {
+                       "version": "1.2.1",
+                       "resolved": "https://registry.npmjs.org/@emoji-mart/data/-/data-1.2.1.tgz",
+                       "integrity": "sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw==",
+                       "license": "MIT"
                },
-               "node_modules/are-we-there-yet": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
-                       "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
-                       "deprecated": "This package is no longer supported.",
-                       "license": "ISC",
-                       "dependencies": {
-                               "delegates": "^1.0.0",
-                               "readable-stream": "^3.6.0"
-                       },
+               "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": ">=10"
+                               "node": ">=12"
                        }
                },
-               "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==",
+               "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": "Python-2.0"
-               },
-               "node_modules/aria-query": {
-                       "version": "5.3.2",
-                       "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
-                       "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
-                       "license": "Apache-2.0",
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ],
                        "engines": {
-                               "node": ">= 0.4"
+                               "node": ">=12"
                        }
                },
-               "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.9",
-                       "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
-                       "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
+               "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",
-                       "dependencies": {
-                               "follow-redirects": "^1.15.6",
-                               "form-data": "^4.0.0",
-                               "proxy-from-env": "^1.1.0"
-                       }
-               },
-               "node_modules/axobject-query": {
-                       "version": "4.1.0",
-                       "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
-                       "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
-                       "license": "Apache-2.0",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ],
                        "engines": {
-                               "node": ">= 0.4"
+                               "node": ">=12"
                        }
                },
-               "node_modules/balanced-match": {
-                       "version": "1.0.2",
-                       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
-                       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
-                       "license": "MIT"
-               },
-               "node_modules/binary-extensions": {
-                       "version": "2.3.0",
-                       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
-                       "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+               "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": ">=8"
-                       },
-                       "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
+                               "node": ">=12"
                        }
                },
-               "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"
-                               }
+               "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",
-                       "peerDependencies": {
-                               "@popperjs/core": "^2.11.8"
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ],
+                       "engines": {
+                               "node": ">=12"
                        }
                },
-               "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==",
+               "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",
-                       "dependencies": {
-                               "balanced-match": "^1.0.0",
-                               "concat-map": "0.0.1"
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ],
+                       "engines": {
+                               "node": ">=12"
                        }
                },
-               "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==",
+               "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",
-                       "dependencies": {
-                               "fill-range": "^7.1.1"
-                       },
+                       "optional": true,
+                       "os": [
+                               "freebsd"
+                       ],
                        "engines": {
-                               "node": ">=8"
+                               "node": ">=12"
                        }
                },
-               "node_modules/callsites": {
-                       "version": "3.1.0",
-                       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-                       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+               "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": ">=6"
+                               "node": ">=12"
                        }
                },
-               "node_modules/canvas": {
-                       "version": "2.11.2",
-                       "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz",
-                       "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==",
+               "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.1",
+                       "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz",
+                       "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "@eslint/object-schema": "^2.1.5",
+                               "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.1",
+                       "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz",
+                       "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "@types/json-schema": "^7.0.15"
+                       },
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       }
+               },
+               "node_modules/@eslint/eslintrc": {
+                       "version": "3.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.17.0",
+                       "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz",
+                       "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       }
+               },
+               "node_modules/@eslint/object-schema": {
+                       "version": "2.1.5",
+                       "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz",
+                       "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==",
+                       "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.4",
+                       "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz",
+                       "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "levn": "^0.4.1"
+                       },
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       }
+               },
+               "node_modules/@fortawesome/fontawesome-common-types": {
+                       "version": "6.7.2",
+                       "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz",
+                       "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "node_modules/@fortawesome/free-solid-svg-icons": {
+                       "version": "6.7.2",
+                       "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz",
+                       "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==",
+                       "license": "(CC-BY-4.0 AND MIT)",
+                       "dependencies": {
+                               "@fortawesome/fontawesome-common-types": "6.7.2"
+                       },
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "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.13",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+                       "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/sourcemap-codec": "^1.5.0",
+                               "@jridgewell/trace-mapping": "^0.3.24"
+                       }
+               },
+               "node_modules/@jridgewell/remapping": {
+                       "version": "2.3.5",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+                       "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/gen-mapping": "^0.3.5",
+                               "@jridgewell/trace-mapping": "^0.3.24"
+                       }
+               },
+               "node_modules/@jridgewell/resolve-uri": {
+                       "version": "3.1.2",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+                       "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6.0.0"
+                       }
+               },
+               "node_modules/@jridgewell/source-map": {
+                       "version": "0.3.11",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
+                       "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/gen-mapping": "^0.3.5",
+                               "@jridgewell/trace-mapping": "^0.3.25"
+                       }
+               },
+               "node_modules/@jridgewell/sourcemap-codec": {
+                       "version": "1.5.0",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+                       "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+                       "license": "MIT"
+               },
+               "node_modules/@jridgewell/trace-mapping": {
+                       "version": "0.3.31",
+                       "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+                       "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/resolve-uri": "^3.1.0",
+                               "@jridgewell/sourcemap-codec": "^1.4.14"
+                       }
+               },
+               "node_modules/@mapbox/node-pre-gyp": {
+                       "version": "1.0.11",
+                       "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
+                       "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
+                       "license": "BSD-3-Clause",
+                       "dependencies": {
+                               "detect-libc": "^2.0.0",
+                               "https-proxy-agent": "^5.0.0",
+                               "make-dir": "^3.1.0",
+                               "node-fetch": "^2.6.7",
+                               "nopt": "^5.0.0",
+                               "npmlog": "^5.0.1",
+                               "rimraf": "^3.0.2",
+                               "semver": "^7.3.5",
+                               "tar": "^6.1.11"
+                       },
+                       "bin": {
+                               "node-pre-gyp": "bin/node-pre-gyp"
+                       }
+               },
+               "node_modules/@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/plugin-node-resolve": {
+                       "version": "15.3.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz",
+                       "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@rollup/pluginutils": "^5.0.1",
+                               "@types/resolve": "1.20.2",
+                               "deepmerge": "^4.2.2",
+                               "is-module": "^1.0.0",
+                               "resolve": "^1.22.1"
+                       },
+                       "engines": {
+                               "node": ">=14.0.0"
+                       },
+                       "peerDependencies": {
+                               "rollup": "^2.78.0||^3.0.0||^4.0.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "rollup": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/@rollup/plugin-terser": {
+                       "version": "0.4.4",
+                       "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
+                       "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "serialize-javascript": "^6.0.1",
+                               "smob": "^1.0.0",
+                               "terser": "^5.17.4"
+                       },
+                       "engines": {
+                               "node": ">=14.0.0"
+                       },
+                       "peerDependencies": {
+                               "rollup": "^2.0.0||^3.0.0||^4.0.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "rollup": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/@rollup/pluginutils": {
+                       "version": "5.3.0",
+                       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
+                       "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@types/estree": "^1.0.0",
+                               "estree-walker": "^2.0.2",
+                               "picomatch": "^4.0.2"
+                       },
+                       "engines": {
+                               "node": ">=14.0.0"
+                       },
+                       "peerDependencies": {
+                               "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "rollup": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/@rollup/pluginutils/node_modules/picomatch": {
+                       "version": "4.0.3",
+                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+                       "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=12"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/jonschlinkert"
+                       }
+               },
+               "node_modules/@rollup/rollup-android-arm-eabi": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz",
+                       "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==",
+                       "cpu": [
+                               "arm"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ]
+               },
+               "node_modules/@rollup/rollup-android-arm64": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz",
+                       "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "android"
+                       ]
+               },
+               "node_modules/@rollup/rollup-darwin-arm64": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz",
+                       "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ]
+               },
+               "node_modules/@rollup/rollup-darwin-x64": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz",
+                       "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "darwin"
+                       ]
+               },
+               "node_modules/@rollup/rollup-freebsd-arm64": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz",
+                       "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "freebsd"
+                       ]
+               },
+               "node_modules/@rollup/rollup-freebsd-x64": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz",
+                       "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "freebsd"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz",
+                       "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==",
+                       "cpu": [
+                               "arm"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz",
+                       "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==",
+                       "cpu": [
+                               "arm"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-arm64-gnu": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz",
+                       "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-arm64-musl": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz",
+                       "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz",
+                       "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==",
+                       "cpu": [
+                               "loong64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz",
+                       "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==",
+                       "cpu": [
+                               "ppc64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz",
+                       "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==",
+                       "cpu": [
+                               "riscv64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-s390x-gnu": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz",
+                       "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==",
+                       "cpu": [
+                               "s390x"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-x64-gnu": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz",
+                       "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-linux-x64-musl": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz",
+                       "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "linux"
+                       ]
+               },
+               "node_modules/@rollup/rollup-win32-arm64-msvc": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz",
+                       "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==",
+                       "cpu": [
+                               "arm64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ]
+               },
+               "node_modules/@rollup/rollup-win32-ia32-msvc": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz",
+                       "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==",
+                       "cpu": [
+                               "ia32"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ]
+               },
+               "node_modules/@rollup/rollup-win32-x64-msvc": {
+                       "version": "4.29.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz",
+                       "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==",
+                       "cpu": [
+                               "x64"
+                       ],
+                       "dev": true,
+                       "license": "MIT",
+                       "optional": true,
+                       "os": [
+                               "win32"
+                       ]
+               },
+               "node_modules/@surma/rollup-plugin-off-main-thread": {
+                       "version": "2.2.3",
+                       "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz",
+                       "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "ejs": "^3.1.6",
+                               "json5": "^2.2.0",
+                               "magic-string": "^0.25.0",
+                               "string.prototype.matchall": "^4.0.6"
+                       }
+               },
+               "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": {
+                       "version": "0.25.9",
+                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+                       "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "sourcemap-codec": "^1.4.8"
+                       }
+               },
+               "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.8",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz",
+                       "integrity": "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "peerDependencies": {
+                               "@sveltejs/kit": "^2.0.0"
+                       }
+               },
+               "node_modules/@sveltejs/kit": {
+                       "version": "2.15.1",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.15.1.tgz",
+                       "integrity": "sha512-8t7D3hQHbUDMiaQ2RVnjJJ/+Ur4Fn/tkeySJCsHtX346Q9cp3LAnav8xXdfuqYNJwpUGX0x3BqF1uvbmXQw93A==",
+                       "dev": true,
+                       "hasInstallScript": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@types/cookie": "^0.6.0",
+                               "cookie": "^0.6.0",
+                               "devalue": "^5.1.0",
+                               "esm-env": "^1.2.1",
+                               "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 || ^5.0.0",
+                               "svelte": "^4.0.0 || ^5.0.0-next.0",
+                               "vite": "^5.0.3 || ^6.0.0"
+                       }
+               },
+               "node_modules/@sveltejs/vite-plugin-svelte": {
+                       "version": "4.0.4",
+                       "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.4.tgz",
+                       "integrity": "sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==",
+                       "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/@tolgee/core": {
+                       "version": "6.2.7",
+                       "resolved": "https://registry.npmjs.org/@tolgee/core/-/core-6.2.7.tgz",
+                       "integrity": "sha512-0Au+m9R23/gmeaLJY0X6lKcR2LSy9dW7hEFrpFvPdJoGvxc8XCNZpKlgnm1N534CwmtIBJ4rzOK6vOrSKbl45w==",
+                       "license": "MIT"
+               },
+               "node_modules/@tolgee/format-icu": {
+                       "version": "6.2.7",
+                       "resolved": "https://registry.npmjs.org/@tolgee/format-icu/-/format-icu-6.2.7.tgz",
+                       "integrity": "sha512-rLa8EZZVX3pDYC3I6HLnLvTgwLr2PAyOw+7SanS7d7SXp9cvcxbX8O6nqHubv6K7YDqVblcj9FoFbvGBQ22PgQ==",
+                       "license": "MIT"
+               },
+               "node_modules/@tolgee/svelte": {
+                       "version": "6.2.7",
+                       "resolved": "https://registry.npmjs.org/@tolgee/svelte/-/svelte-6.2.7.tgz",
+                       "integrity": "sha512-R7J3XO3g5BtUnXwvzljajRAnJeFIPB0qmisEl896L4IJUMHfsddDytaFRP90hlQzEgwRICMtbr43T6XFgSNJrQ==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@tolgee/web": "6.2.7"
+                       },
+                       "peerDependencies": {
+                               "svelte": "^4.0.0 || ^5.0.0"
+                       }
+               },
+               "node_modules/@tolgee/web": {
+                       "version": "6.2.7",
+                       "resolved": "https://registry.npmjs.org/@tolgee/web/-/web-6.2.7.tgz",
+                       "integrity": "sha512-MAgHGkL5RYREwAjUansJt98fCuQFV4uDfP11NLOCHan2Hx9rpuszv88eXX7enq9CE8eS/Ed2pELiSwb5rlYiKg==",
+                       "license": "BSD-3-Clause",
+                       "dependencies": {
+                               "@tolgee/core": "6.2.7"
+                       }
+               },
+               "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==",
+                       "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/@types/resolve": {
+                       "version": "1.20.2",
+                       "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
+                       "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/@types/trusted-types": {
+                       "version": "2.0.7",
+                       "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+                       "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/@typescript-eslint/eslint-plugin": {
+                       "version": "8.18.2",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.2.tgz",
+                       "integrity": "sha512-adig4SzPLjeQ0Tm+jvsozSGiCliI2ajeURDGHjZ2llnA+A67HihCQ+a3amtPhUakd1GlwHxSRvzOZktbEvhPPg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@eslint-community/regexpp": "^4.10.0",
+                               "@typescript-eslint/scope-manager": "8.18.2",
+                               "@typescript-eslint/type-utils": "8.18.2",
+                               "@typescript-eslint/utils": "8.18.2",
+                               "@typescript-eslint/visitor-keys": "8.18.2",
+                               "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",
+                               "typescript": ">=4.8.4 <5.8.0"
+                       }
+               },
+               "node_modules/@typescript-eslint/parser": {
+                       "version": "8.18.2",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.2.tgz",
+                       "integrity": "sha512-y7tcq4StgxQD4mDr9+Jb26dZ+HTZ/SkfqpXSiqeUXZHxOUyjWDKsmwKhJ0/tApR08DgOhrFAoAhyB80/p3ViuA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/scope-manager": "8.18.2",
+                               "@typescript-eslint/types": "8.18.2",
+                               "@typescript-eslint/typescript-estree": "8.18.2",
+                               "@typescript-eslint/visitor-keys": "8.18.2",
+                               "debug": "^4.3.4"
+                       },
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       },
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/typescript-eslint"
+                       },
+                       "peerDependencies": {
+                               "eslint": "^8.57.0 || ^9.0.0",
+                               "typescript": ">=4.8.4 <5.8.0"
+                       }
+               },
+               "node_modules/@typescript-eslint/scope-manager": {
+                       "version": "8.18.2",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.2.tgz",
+                       "integrity": "sha512-YJFSfbd0CJjy14r/EvWapYgV4R5CHzptssoag2M7y3Ra7XNta6GPAJPPP5KGB9j14viYXyrzRO5GkX7CRfo8/g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/types": "8.18.2",
+                               "@typescript-eslint/visitor-keys": "8.18.2"
+                       },
+                       "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.18.2",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.2.tgz",
+                       "integrity": "sha512-AB/Wr1Lz31bzHfGm/jgbFR0VB0SML/hd2P1yxzKDM48YmP7vbyJNHRExUE/wZsQj2wUCvbWH8poNHFuxLqCTnA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/typescript-estree": "8.18.2",
+                               "@typescript-eslint/utils": "8.18.2",
+                               "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",
+                               "typescript": ">=4.8.4 <5.8.0"
+                       }
+               },
+               "node_modules/@typescript-eslint/types": {
+                       "version": "8.18.2",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.2.tgz",
+                       "integrity": "sha512-Z/zblEPp8cIvmEn6+tPDIHUbRu/0z5lqZ+NvolL5SvXWT5rQy7+Nch83M0++XzO0XrWRFWECgOAyE8bsJTl1GQ==",
+                       "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.18.2",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.2.tgz",
+                       "integrity": "sha512-WXAVt595HjpmlfH4crSdM/1bcsqh+1weFRWIa9XMTx/XHZ9TCKMcr725tLYqWOgzKdeDrqVHxFotrvWcEsk2Tg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/types": "8.18.2",
+                               "@typescript-eslint/visitor-keys": "8.18.2",
+                               "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"
+                       },
+                       "peerDependencies": {
+                               "typescript": ">=4.8.4 <5.8.0"
+                       }
+               },
+               "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+                       "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "balanced-match": "^1.0.0"
+                       }
+               },
+               "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+                       "version": "9.0.5",
+                       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+                       "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+                       "dev": true,
+                       "license": "ISC",
+                       "dependencies": {
+                               "brace-expansion": "^2.0.1"
+                       },
+                       "engines": {
+                               "node": ">=16 || 14 >=14.17"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/isaacs"
+                       }
+               },
+               "node_modules/@typescript-eslint/utils": {
+                       "version": "8.18.2",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.2.tgz",
+                       "integrity": "sha512-Cr4A0H7DtVIPkauj4sTSXVl+VBWewE9/o40KcF3TV9aqDEOWoXF3/+oRXNby3DYzZeCATvbdksYsGZzplwnK/Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@eslint-community/eslint-utils": "^4.4.0",
+                               "@typescript-eslint/scope-manager": "8.18.2",
+                               "@typescript-eslint/types": "8.18.2",
+                               "@typescript-eslint/typescript-estree": "8.18.2"
+                       },
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       },
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/typescript-eslint"
+                       },
+                       "peerDependencies": {
+                               "eslint": "^8.57.0 || ^9.0.0",
+                               "typescript": ">=4.8.4 <5.8.0"
+                       }
+               },
+               "node_modules/@typescript-eslint/visitor-keys": {
+                       "version": "8.18.2",
+                       "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.2.tgz",
+                       "integrity": "sha512-zORcwn4C3trOWiCqFQP1x6G3xTRyZ1LYydnj51cRnJ6hxBlr/cKPckk+PKPUw/fXmvfKTcw7bwY3w9izgx5jZw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@typescript-eslint/types": "8.18.2",
+                               "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/@vite-pwa/sveltekit": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/@vite-pwa/sveltekit/-/sveltekit-1.0.0.tgz",
+                       "integrity": "sha512-Tv2Bb0EtXlkYQ/7sFSaK69KYcRJiybGvQbJOcdwna+GngCPAM1g1EsvKQ5Be+r7WqtNJfCzKnMhVVbOGxXjF5A==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "kolorist": "^1.8.0",
+                               "tinyglobby": "^0.2.9",
+                               "vite-plugin-pwa": "^1.0.0"
+                       },
+                       "engines": {
+                               "node": ">=18.13"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/antfu"
+                       },
+                       "peerDependencies": {
+                               "@sveltejs/kit": "^1.3.1 || ^2.0.1",
+                               "@vite-pwa/assets-generator": "^1.0.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "@vite-pwa/assets-generator": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/abbrev": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+                       "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+                       "license": "ISC"
+               },
+               "node_modules/acorn": {
+                       "version": "8.15.0",
+                       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+                       "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+                       "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==",
+                       "license": "MIT",
+                       "peerDependencies": {
+                               "acorn": ">=8.9.0"
+                       }
+               },
+               "node_modules/agent-base": {
+                       "version": "6.0.2",
+                       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+                       "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "debug": "4"
+                       },
+                       "engines": {
+                               "node": ">= 6.0.0"
+                       }
+               },
+               "node_modules/ajv": {
+                       "version": "6.12.6",
+                       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+                       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "fast-deep-equal": "^3.1.1",
+                               "fast-json-stable-stringify": "^2.0.0",
+                               "json-schema-traverse": "^0.4.1",
+                               "uri-js": "^4.2.2"
+                       },
+                       "funding": {
+                               "type": "github",
+                               "url": "https://github.com/sponsors/epoberezkin"
+                       }
+               },
+               "node_modules/ansi-regex": {
+                       "version": "5.0.1",
+                       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+                       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/ansi-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/aproba": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+                       "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
+                       "license": "ISC"
+               },
+               "node_modules/are-we-there-yet": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
+                       "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
+                       "deprecated": "This package is no longer supported.",
+                       "license": "ISC",
+                       "dependencies": {
+                               "delegates": "^1.0.0",
+                               "readable-stream": "^3.6.0"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       }
+               },
+               "node_modules/argparse": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+                       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+                       "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==",
+                       "license": "Apache-2.0",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/array-buffer-byte-length": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+                       "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.3",
+                               "is-array-buffer": "^3.0.5"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/arraybuffer.prototype.slice": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+                       "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "array-buffer-byte-length": "^1.0.1",
+                               "call-bind": "^1.0.8",
+                               "define-properties": "^1.2.1",
+                               "es-abstract": "^1.23.5",
+                               "es-errors": "^1.3.0",
+                               "get-intrinsic": "^1.2.6",
+                               "is-array-buffer": "^3.0.4"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/async": {
+                       "version": "3.2.6",
+                       "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+                       "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/async-function": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+                       "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "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/at-least-node": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+                       "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
+                       "dev": true,
+                       "license": "ISC",
+                       "engines": {
+                               "node": ">= 4.0.0"
+                       }
+               },
+               "node_modules/available-typed-arrays": {
+                       "version": "1.0.7",
+                       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+                       "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "possible-typed-array-names": "^1.0.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/axios": {
+                       "version": "1.12.2",
+                       "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
+                       "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "follow-redirects": "^1.15.6",
+                               "form-data": "^4.0.4",
+                               "proxy-from-env": "^1.1.0"
+                       }
+               },
+               "node_modules/axobject-query": {
+                       "version": "4.1.0",
+                       "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+                       "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+                       "license": "Apache-2.0",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/babel-plugin-polyfill-corejs2": {
+                       "version": "0.4.14",
+                       "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz",
+                       "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/compat-data": "^7.27.7",
+                               "@babel/helper-define-polyfill-provider": "^0.6.5",
+                               "semver": "^6.3.1"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+                       }
+               },
+               "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+                       "version": "6.3.1",
+                       "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+                       "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+                       "dev": true,
+                       "license": "ISC",
+                       "bin": {
+                               "semver": "bin/semver.js"
+                       }
+               },
+               "node_modules/babel-plugin-polyfill-corejs3": {
+                       "version": "0.13.0",
+                       "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
+                       "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-define-polyfill-provider": "^0.6.5",
+                               "core-js-compat": "^3.43.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+                       }
+               },
+               "node_modules/babel-plugin-polyfill-regenerator": {
+                       "version": "0.6.5",
+                       "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz",
+                       "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-define-polyfill-provider": "^0.6.5"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
+                       }
+               },
+               "node_modules/balanced-match": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+                       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+                       "license": "MIT"
+               },
+               "node_modules/baseline-browser-mapping": {
+                       "version": "2.8.11",
+                       "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.11.tgz",
+                       "integrity": "sha512-i+sRXGhz4+QW8aACZ3+r1GAKMt0wlFpeA8M5rOQd0HEYw9zhDrlx9Wc8uQ0IdXakjJRthzglEwfB/yqIjO6iDg==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "bin": {
+                               "baseline-browser-mapping": "dist/cli.js"
+                       }
+               },
+               "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==",
+                       "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/browserslist": {
+                       "version": "4.26.3",
+                       "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz",
+                       "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==",
+                       "dev": true,
+                       "funding": [
+                               {
+                                       "type": "opencollective",
+                                       "url": "https://opencollective.com/browserslist"
+                               },
+                               {
+                                       "type": "tidelift",
+                                       "url": "https://tidelift.com/funding/github/npm/browserslist"
+                               },
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/ai"
+                               }
+                       ],
+                       "license": "MIT",
+                       "dependencies": {
+                               "baseline-browser-mapping": "^2.8.9",
+                               "caniuse-lite": "^1.0.30001746",
+                               "electron-to-chromium": "^1.5.227",
+                               "node-releases": "^2.0.21",
+                               "update-browserslist-db": "^1.1.3"
+                       },
+                       "bin": {
+                               "browserslist": "cli.js"
+                       },
+                       "engines": {
+                               "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+                       }
+               },
+               "node_modules/buffer-from": {
+                       "version": "1.1.2",
+                       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+                       "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/call-bind": {
+                       "version": "1.0.8",
+                       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+                       "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind-apply-helpers": "^1.0.0",
+                               "es-define-property": "^1.0.0",
+                               "get-intrinsic": "^1.2.4",
+                               "set-function-length": "^1.2.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/call-bind-apply-helpers": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+                       "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-errors": "^1.3.0",
+                               "function-bind": "^1.1.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/call-bound": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+                       "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind-apply-helpers": "^1.0.2",
+                               "get-intrinsic": "^1.3.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/callsites": {
+                       "version": "3.1.0",
+                       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+                       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "node_modules/caniuse-lite": {
+                       "version": "1.0.30001747",
+                       "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001747.tgz",
+                       "integrity": "sha512-mzFa2DGIhuc5490Nd/G31xN1pnBnYMadtkyTjefPI7wzypqgCEpeWu9bJr0OnDsyKrW75zA9ZAt7pbQFmwLsQg==",
+                       "dev": true,
+                       "funding": [
+                               {
+                                       "type": "opencollective",
+                                       "url": "https://opencollective.com/browserslist"
+                               },
+                               {
+                                       "type": "tidelift",
+                                       "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+                               },
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/ai"
+                               }
+                       ],
+                       "license": "CC-BY-4.0"
+               },
+               "node_modules/canvas": {
+                       "version": "2.11.2",
+                       "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz",
+                       "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==",
+                       "hasInstallScript": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@mapbox/node-pre-gyp": "^1.0.0",
+                               "nan": "^2.17.0",
+                               "simple-get": "^3.0.3"
+                       },
+                       "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/chownr": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
+                       "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
+                       "license": "ISC",
+                       "engines": {
+                               "node": ">=10"
+                       }
+               },
+               "node_modules/chroma-js": {
+                       "version": "2.6.0",
+                       "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.6.0.tgz",
+                       "integrity": "sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A==",
+                       "license": "(BSD-3-Clause AND Apache-2.0)"
+               },
+               "node_modules/clsx": {
+                       "version": "2.1.1",
+                       "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+                       "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "node_modules/color-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/color-support": {
+                       "version": "1.1.3",
+                       "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+                       "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+                       "license": "ISC",
+                       "bin": {
+                               "color-support": "bin.js"
+                       }
+               },
+               "node_modules/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/commander": {
+                       "version": "2.20.3",
+                       "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+                       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/common-tags": {
+                       "version": "1.8.2",
+                       "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
+                       "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=4.0.0"
+                       }
+               },
+               "node_modules/concat-map": {
+                       "version": "0.0.1",
+                       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+                       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+                       "license": "MIT"
+               },
+               "node_modules/console-control-strings": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+                       "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+                       "license": "ISC"
+               },
+               "node_modules/convert-source-map": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+                       "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+                       "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/core-js": {
+                       "version": "3.39.0",
+                       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz",
+                       "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==",
+                       "hasInstallScript": true,
+                       "license": "MIT",
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/core-js"
+                       }
+               },
+               "node_modules/core-js-compat": {
+                       "version": "3.45.1",
+                       "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.1.tgz",
+                       "integrity": "sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "browserslist": "^4.25.3"
+                       },
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/core-js"
+                       }
+               },
+               "node_modules/cross-spawn": {
+                       "version": "7.0.6",
+                       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+                       "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "path-key": "^3.1.0",
+                               "shebang-command": "^2.0.0",
+                               "which": "^2.0.1"
+                       },
+                       "engines": {
+                               "node": ">= 8"
+                       }
+               },
+               "node_modules/crypto-random-string": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+                       "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/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/data-view-buffer": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+                       "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.3",
+                               "es-errors": "^1.3.0",
+                               "is-data-view": "^1.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/data-view-byte-length": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+                       "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.3",
+                               "es-errors": "^1.3.0",
+                               "is-data-view": "^1.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/inspect-js"
+                       }
+               },
+               "node_modules/data-view-byte-offset": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+                       "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.2",
+                               "es-errors": "^1.3.0",
+                               "is-data-view": "^1.0.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/dayjs": {
+                       "version": "1.11.13",
+                       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
+                       "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
+                       "license": "MIT"
+               },
+               "node_modules/debug": {
+                       "version": "4.4.3",
+                       "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+                       "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "ms": "^2.1.3"
+                       },
+                       "engines": {
+                               "node": ">=6.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "supports-color": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/decompress-response": {
+                       "version": "4.2.1",
+                       "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
+                       "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "mimic-response": "^2.0.0"
+                       },
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "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/define-data-property": {
+                       "version": "1.1.4",
+                       "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+                       "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-define-property": "^1.0.0",
+                               "es-errors": "^1.3.0",
+                               "gopd": "^1.0.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/define-properties": {
+                       "version": "1.2.1",
+                       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+                       "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "define-data-property": "^1.0.1",
+                               "has-property-descriptors": "^1.0.0",
+                               "object-keys": "^1.1.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/delaunator": {
+                       "version": "4.0.1",
+                       "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz",
+                       "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==",
+                       "license": "ISC"
+               },
+               "node_modules/delayed-stream": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+                       "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=0.4.0"
+                       }
+               },
+               "node_modules/delegates": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+                       "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
+                       "license": "MIT"
+               },
+               "node_modules/detect-libc": {
+                       "version": "2.0.3",
+                       "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+                       "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+                       "license": "Apache-2.0",
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/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/dunder-proto": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+                       "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind-apply-helpers": "^1.0.1",
+                               "es-errors": "^1.3.0",
+                               "gopd": "^1.2.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/ejs": {
+                       "version": "3.1.10",
+                       "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+                       "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "jake": "^10.8.5"
+                       },
+                       "bin": {
+                               "ejs": "bin/cli.js"
+                       },
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
+               "node_modules/electron-to-chromium": {
+                       "version": "1.5.230",
+                       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.230.tgz",
+                       "integrity": "sha512-A6A6Fd3+gMdaed9wX83CvHYJb4UuapPD5X5SLq72VZJzxHSY0/LUweGXRWmQlh2ln7KV7iw7jnwXK7dlPoOnHQ==",
+                       "dev": true,
+                       "license": "ISC"
+               },
+               "node_modules/emoji-mart": {
+                       "version": "5.6.0",
+                       "resolved": "https://registry.npmjs.org/emoji-mart/-/emoji-mart-5.6.0.tgz",
+                       "integrity": "sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==",
+                       "license": "MIT"
+               },
+               "node_modules/emoji-regex": {
+                       "version": "8.0.0",
+                       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+                       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+                       "license": "MIT"
+               },
+               "node_modules/es-abstract": {
+                       "version": "1.24.0",
+                       "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz",
+                       "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "array-buffer-byte-length": "^1.0.2",
+                               "arraybuffer.prototype.slice": "^1.0.4",
+                               "available-typed-arrays": "^1.0.7",
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.4",
+                               "data-view-buffer": "^1.0.2",
+                               "data-view-byte-length": "^1.0.2",
+                               "data-view-byte-offset": "^1.0.1",
+                               "es-define-property": "^1.0.1",
+                               "es-errors": "^1.3.0",
+                               "es-object-atoms": "^1.1.1",
+                               "es-set-tostringtag": "^2.1.0",
+                               "es-to-primitive": "^1.3.0",
+                               "function.prototype.name": "^1.1.8",
+                               "get-intrinsic": "^1.3.0",
+                               "get-proto": "^1.0.1",
+                               "get-symbol-description": "^1.1.0",
+                               "globalthis": "^1.0.4",
+                               "gopd": "^1.2.0",
+                               "has-property-descriptors": "^1.0.2",
+                               "has-proto": "^1.2.0",
+                               "has-symbols": "^1.1.0",
+                               "hasown": "^2.0.2",
+                               "internal-slot": "^1.1.0",
+                               "is-array-buffer": "^3.0.5",
+                               "is-callable": "^1.2.7",
+                               "is-data-view": "^1.0.2",
+                               "is-negative-zero": "^2.0.3",
+                               "is-regex": "^1.2.1",
+                               "is-set": "^2.0.3",
+                               "is-shared-array-buffer": "^1.0.4",
+                               "is-string": "^1.1.1",
+                               "is-typed-array": "^1.1.15",
+                               "is-weakref": "^1.1.1",
+                               "math-intrinsics": "^1.1.0",
+                               "object-inspect": "^1.13.4",
+                               "object-keys": "^1.1.1",
+                               "object.assign": "^4.1.7",
+                               "own-keys": "^1.0.1",
+                               "regexp.prototype.flags": "^1.5.4",
+                               "safe-array-concat": "^1.1.3",
+                               "safe-push-apply": "^1.0.0",
+                               "safe-regex-test": "^1.1.0",
+                               "set-proto": "^1.0.0",
+                               "stop-iteration-iterator": "^1.1.0",
+                               "string.prototype.trim": "^1.2.10",
+                               "string.prototype.trimend": "^1.0.9",
+                               "string.prototype.trimstart": "^1.0.8",
+                               "typed-array-buffer": "^1.0.3",
+                               "typed-array-byte-length": "^1.0.3",
+                               "typed-array-byte-offset": "^1.0.4",
+                               "typed-array-length": "^1.0.7",
+                               "unbox-primitive": "^1.1.0",
+                               "which-typed-array": "^1.1.19"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/es-define-property": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+                       "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/es-errors": {
+                       "version": "1.3.0",
+                       "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+                       "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/es-object-atoms": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+                       "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-errors": "^1.3.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/es-set-tostringtag": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+                       "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-errors": "^1.3.0",
+                               "get-intrinsic": "^1.2.6",
+                               "has-tostringtag": "^1.0.2",
+                               "hasown": "^2.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/es-to-primitive": {
+                       "version": "1.3.0",
+                       "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+                       "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "is-callable": "^1.2.7",
+                               "is-date-object": "^1.0.5",
+                               "is-symbol": "^1.0.4"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "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/escalade": {
+                       "version": "3.2.0",
+                       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+                       "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "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.17.0",
+                       "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz",
+                       "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==",
+                       "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.17.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.6",
+                               "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.1",
+                       "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz",
+                       "integrity": "sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==",
+                       "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.2.1",
+                       "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.1.tgz",
+                       "integrity": "sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==",
+                       "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.3.2",
+                       "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.3.2.tgz",
+                       "integrity": "sha512-C4PXusxYhFT98GjLSmb20k9PREuUdporer50dhzGuJu9IJXktbMddVCMLAERl5dAHyAi73GWWCE4FVHGP1794g==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@jridgewell/sourcemap-codec": "^1.4.15"
+                       }
+               },
+               "node_modules/esrecurse": {
+                       "version": "4.3.0",
+                       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+                       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "estraverse": "^5.2.0"
+                       },
+                       "engines": {
+                               "node": ">=4.0"
+                       }
+               },
+               "node_modules/estraverse": {
+                       "version": "5.3.0",
+                       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+                       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "engines": {
+                               "node": ">=4.0"
+                       }
+               },
+               "node_modules/estree-walker": {
+                       "version": "2.0.2",
+                       "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+                       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "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/fast-uri": {
+                       "version": "3.1.0",
+                       "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+                       "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+                       "dev": true,
+                       "funding": [
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/fastify"
+                               },
+                               {
+                                       "type": "opencollective",
+                                       "url": "https://opencollective.com/fastify"
+                               }
+                       ],
+                       "license": "BSD-3-Clause"
+               },
+               "node_modules/fastq": {
+                       "version": "1.18.0",
+                       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
+                       "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
+                       "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/filelist": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
+                       "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "minimatch": "^5.0.1"
+                       }
+               },
+               "node_modules/filelist/node_modules/brace-expansion": {
+                       "version": "2.0.2",
+                       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+                       "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "balanced-match": "^1.0.0"
+                       }
+               },
+               "node_modules/filelist/node_modules/minimatch": {
+                       "version": "5.1.6",
+                       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+                       "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+                       "dev": true,
+                       "license": "ISC",
                        "dependencies": {
-                               "@mapbox/node-pre-gyp": "^1.0.0",
-                               "nan": "^2.17.0",
-                               "simple-get": "^3.0.3"
+                               "brace-expansion": "^2.0.1"
                        },
                        "engines": {
-                               "node": ">=6"
+                               "node": ">=10"
                        }
                },
-               "node_modules/chalk": {
-                       "version": "4.1.2",
-                       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-                       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+               "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": {
-                               "ansi-styles": "^4.1.0",
-                               "supports-color": "^7.1.0"
+                               "to-regex-range": "^5.0.1"
                        },
                        "engines": {
-                               "node": ">=10"
-                       },
-                       "funding": {
-                               "url": "https://github.com/chalk/chalk?sponsor=1"
+                               "node": ">=8"
                        }
                },
-               "node_modules/chokidar": {
-                       "version": "3.6.0",
-                       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-                       "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+               "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": {
-                               "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"
+                               "locate-path": "^6.0.0",
+                               "path-exists": "^4.0.0"
                        },
                        "engines": {
-                               "node": ">= 8.10.0"
+                               "node": ">=10"
                        },
                        "funding": {
-                               "url": "https://paulmillr.com/funding/"
-                       },
-                       "optionalDependencies": {
-                               "fsevents": "~2.3.2"
+                               "url": "https://github.com/sponsors/sindresorhus"
                        }
                },
-               "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==",
+               "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": "ISC",
+                       "license": "MIT",
                        "dependencies": {
-                               "is-glob": "^4.0.1"
+                               "flatted": "^3.2.9",
+                               "keyv": "^4.5.4"
                        },
                        "engines": {
-                               "node": ">= 6"
+                               "node": ">=16"
                        }
                },
-               "node_modules/chownr": {
-                       "version": "2.0.0",
-                       "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
-                       "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
-                       "license": "ISC",
+               "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": ">=10"
+                               "node": ">=4.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "debug": {
+                                       "optional": true
+                               }
                        }
                },
-               "node_modules/chroma-js": {
-                       "version": "2.6.0",
-                       "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.6.0.tgz",
-                       "integrity": "sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A==",
-                       "license": "(BSD-3-Clause AND Apache-2.0)"
-               },
-               "node_modules/clsx": {
-                       "version": "2.1.1",
-                       "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
-                       "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+               "node_modules/for-each": {
+                       "version": "0.3.5",
+                       "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+                       "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+                       "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "is-callable": "^1.2.7"
+                       },
                        "engines": {
-                               "node": ">=6"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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,
+               "node_modules/form-data": {
+                       "version": "4.0.4",
+                       "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
+                       "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
                        "license": "MIT",
                        "dependencies": {
-                               "color-name": "~1.1.4"
+                               "asynckit": "^0.4.0",
+                               "combined-stream": "^1.0.8",
+                               "es-set-tostringtag": "^2.1.0",
+                               "hasown": "^2.0.2",
+                               "mime-types": "^2.1.12"
                        },
                        "engines": {
-                               "node": ">=7.0.0"
+                               "node": ">= 6"
                        }
                },
-               "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==",
+               "node_modules/fs-extra": {
+                       "version": "9.1.0",
+                       "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
+                       "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==",
                        "dev": true,
-                       "license": "MIT"
+                       "license": "MIT",
+                       "dependencies": {
+                               "at-least-node": "^1.0.0",
+                               "graceful-fs": "^4.2.0",
+                               "jsonfile": "^6.0.1",
+                               "universalify": "^2.0.0"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       }
                },
-               "node_modules/color-support": {
-                       "version": "1.1.3",
-                       "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
-                       "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
+               "node_modules/fs-minipass": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
+                       "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
                        "license": "ISC",
-                       "bin": {
-                               "color-support": "bin.js"
+                       "dependencies": {
+                               "minipass": "^3.0.0"
+                       },
+                       "engines": {
+                               "node": ">= 8"
                        }
                },
-               "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",
+               "node_modules/fs-minipass/node_modules/minipass": {
+                       "version": "3.3.6",
+                       "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
+                       "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+                       "license": "ISC",
                        "dependencies": {
-                               "delayed-stream": "~1.0.0"
+                               "yallist": "^4.0.0"
                        },
                        "engines": {
-                               "node": ">= 0.8"
+                               "node": ">=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==",
-                       "license": "MIT"
-               },
-               "node_modules/console-control-strings": {
-                       "version": "1.1.0",
-                       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
-                       "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
+               "node_modules/fs.realpath": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+                       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
                        "license": "ISC"
                },
-               "node_modules/cookie": {
-                       "version": "0.6.0",
-                       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
-                       "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+               "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": ">= 0.6"
+                               "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
                        }
                },
-               "node_modules/core-js": {
-                       "version": "3.39.0",
-                       "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz",
-                       "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==",
-                       "hasInstallScript": true,
+               "node_modules/function-bind": {
+                       "version": "1.1.2",
+                       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+                       "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
                        "license": "MIT",
                        "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/core-js"
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/cross-spawn": {
-                       "version": "7.0.6",
-                       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
-                       "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+               "node_modules/function.prototype.name": {
+                       "version": "1.1.8",
+                       "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+                       "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "path-key": "^3.1.0",
-                               "shebang-command": "^2.0.0",
-                               "which": "^2.0.1"
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.3",
+                               "define-properties": "^1.2.1",
+                               "functions-have-names": "^1.2.3",
+                               "hasown": "^2.0.2",
+                               "is-callable": "^1.2.7"
                        },
                        "engines": {
-                               "node": ">= 8"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/functions-have-names": {
+                       "version": "1.2.3",
+                       "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+                       "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
                        "dev": true,
                        "license": "MIT",
-                       "bin": {
-                               "cssesc": "bin/cssesc"
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/gauge": {
+                       "version": "3.0.2",
+                       "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
+                       "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
+                       "deprecated": "This package is no longer supported.",
+                       "license": "ISC",
+                       "dependencies": {
+                               "aproba": "^1.0.3 || ^2.0.0",
+                               "color-support": "^1.1.2",
+                               "console-control-strings": "^1.0.0",
+                               "has-unicode": "^2.0.1",
+                               "object-assign": "^4.1.1",
+                               "signal-exit": "^3.0.0",
+                               "string-width": "^4.2.3",
+                               "strip-ansi": "^6.0.1",
+                               "wide-align": "^1.1.2"
                        },
                        "engines": {
-                               "node": ">=4"
+                               "node": ">=10"
                        }
                },
-               "node_modules/dayjs": {
-                       "version": "1.11.13",
-                       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
-                       "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
-                       "license": "MIT"
+               "node_modules/generator-function": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
+                       "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
                },
-               "node_modules/debug": {
-                       "version": "4.4.0",
-                       "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
-                       "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+               "node_modules/gensync": {
+                       "version": "1.0.0-beta.2",
+                       "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+                       "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+                       "dev": true,
                        "license": "MIT",
-                       "dependencies": {
-                               "ms": "^2.1.3"
-                       },
                        "engines": {
-                               "node": ">=6.0"
-                       },
-                       "peerDependenciesMeta": {
-                               "supports-color": {
-                                       "optional": true
-                               }
+                               "node": ">=6.9.0"
                        }
                },
-               "node_modules/decompress-response": {
-                       "version": "4.2.1",
-                       "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
-                       "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
+               "node_modules/get-intrinsic": {
+                       "version": "1.3.0",
+                       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+                       "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
                        "license": "MIT",
                        "dependencies": {
-                               "mimic-response": "^2.0.0"
+                               "call-bind-apply-helpers": "^1.0.2",
+                               "es-define-property": "^1.0.1",
+                               "es-errors": "^1.3.0",
+                               "es-object-atoms": "^1.1.1",
+                               "function-bind": "^1.1.2",
+                               "get-proto": "^1.0.1",
+                               "gopd": "^1.2.0",
+                               "has-symbols": "^1.1.0",
+                               "hasown": "^2.0.2",
+                               "math-intrinsics": "^1.1.0"
                        },
                        "engines": {
-                               "node": ">=8"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/get-own-enumerable-property-symbols": {
+                       "version": "3.0.2",
+                       "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
+                       "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
                        "dev": true,
-                       "license": "MIT"
+                       "license": "ISC"
                },
-               "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,
+               "node_modules/get-proto": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+                       "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
                        "license": "MIT",
+                       "dependencies": {
+                               "dunder-proto": "^1.0.1",
+                               "es-object-atoms": "^1.0.0"
+                       },
                        "engines": {
-                               "node": ">=0.10.0"
+                               "node": ">= 0.4"
                        }
                },
-               "node_modules/delaunator": {
-                       "version": "4.0.1",
-                       "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz",
-                       "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==",
-                       "license": "ISC"
-               },
-               "node_modules/delayed-stream": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-                       "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+               "node_modules/get-symbol-description": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+                       "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
+                       "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.3",
+                               "es-errors": "^1.3.0",
+                               "get-intrinsic": "^1.2.6"
+                       },
                        "engines": {
-                               "node": ">=0.4.0"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/delegates": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
-                       "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
-                       "license": "MIT"
-               },
-               "node_modules/detect-libc": {
-                       "version": "2.0.3",
-                       "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
-                       "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
-                       "license": "Apache-2.0",
+               "node_modules/glob": {
+                       "version": "7.2.3",
+                       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+                       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+                       "deprecated": "Glob versions prior to v9 are no longer supported",
+                       "license": "ISC",
+                       "dependencies": {
+                               "fs.realpath": "^1.0.0",
+                               "inflight": "^1.0.4",
+                               "inherits": "2",
+                               "minimatch": "^3.1.1",
+                               "once": "^1.3.0",
+                               "path-is-absolute": "^1.0.0"
+                       },
                        "engines": {
-                               "node": ">=8"
+                               "node": "*"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/isaacs"
                        }
                },
-               "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/emoji-mart": {
-                       "version": "5.6.0",
-                       "resolved": "https://registry.npmjs.org/emoji-mart/-/emoji-mart-5.6.0.tgz",
-                       "integrity": "sha512-eJp3QRe79pjwa+duv+n7+5YsNhRcMl812EcFVwrnRvYKoNPoQb5qxU8DG6Bgwji0akHdp6D4Ln6tYLG58MFSow==",
-                       "license": "MIT"
-               },
-               "node_modules/emoji-regex": {
-                       "version": "8.0.0",
-                       "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-                       "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-                       "license": "MIT"
-               },
-               "node_modules/esbuild": {
-                       "version": "0.21.5",
-                       "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
-                       "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+               "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,
-                       "hasInstallScript": true,
-                       "license": "MIT",
-                       "bin": {
-                               "esbuild": "bin/esbuild"
+                       "license": "ISC",
+                       "dependencies": {
+                               "is-glob": "^4.0.3"
                        },
                        "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": ">=10.13.0"
                        }
                },
-               "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==",
+               "node_modules/globals": {
+                       "version": "15.14.0",
+                       "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz",
+                       "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
                        "dev": true,
                        "license": "MIT",
                        "engines": {
-                               "node": ">=10"
+                               "node": ">=18"
                        },
                        "funding": {
                                "url": "https://github.com/sponsors/sindresorhus"
                        }
                },
-               "node_modules/eslint": {
-                       "version": "9.17.0",
-                       "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz",
-                       "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==",
+               "node_modules/globalthis": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+                       "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
                        "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.17.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.6",
-                               "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"
+                               "define-properties": "^1.2.1",
+                               "gopd": "^1.0.1"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">= 0.4"
                        },
                        "funding": {
-                               "url": "https://eslint.org/donate"
-                       },
-                       "peerDependencies": {
-                               "jiti": "*"
-                       },
-                       "peerDependenciesMeta": {
-                               "jiti": {
-                                       "optional": true
-                               }
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "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/gopd": {
+                       "version": "1.2.0",
+                       "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+                       "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
                        "license": "MIT",
-                       "dependencies": {
-                               "semver": "^7.5.4"
+                       "engines": {
+                               "node": ">= 0.4"
                        },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/graceful-fs": {
+                       "version": "4.2.11",
+                       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+                       "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+                       "dev": true,
+                       "license": "ISC"
+               },
+               "node_modules/graphemer": {
+                       "version": "1.4.0",
+                       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+                       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/has-bigints": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+                       "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
+                       "dev": true,
+                       "license": "MIT",
                        "engines": {
-                               "node": ">=12"
+                               "node": ">= 0.4"
                        },
-                       "peerDependencies": {
-                               "eslint": ">=6.0.0"
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "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",
-                       "bin": {
-                               "eslint-config-prettier": "bin/cli.js"
-                       },
-                       "peerDependencies": {
-                               "eslint": ">=7.0.0"
+                       "engines": {
+                               "node": ">=8"
                        }
                },
-               "node_modules/eslint-plugin-svelte": {
-                       "version": "2.46.1",
-                       "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz",
-                       "integrity": "sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==",
+               "node_modules/has-property-descriptors": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+                       "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
                        "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"
+                               "es-define-property": "^1.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
-                               }
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/has-proto": {
+                       "version": "1.2.0",
+                       "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+                       "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
                        "dev": true,
-                       "license": "BSD-2-Clause",
+                       "license": "MIT",
                        "dependencies": {
-                               "esrecurse": "^4.3.0",
-                               "estraverse": "^5.2.0"
+                               "dunder-proto": "^1.0.0"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">= 0.4"
                        },
                        "funding": {
-                               "url": "https://opencollective.com/eslint"
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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",
+               "node_modules/has-symbols": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+                       "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+                       "license": "MIT",
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">= 0.4"
                        },
                        "funding": {
-                               "url": "https://opencollective.com/eslint"
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/esm-env": {
-                       "version": "1.2.1",
-                       "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.1.tgz",
-                       "integrity": "sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==",
-                       "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",
+               "node_modules/has-tostringtag": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+                       "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+                       "license": "MIT",
                        "dependencies": {
-                               "acorn": "^8.14.0",
-                               "acorn-jsx": "^5.3.2",
-                               "eslint-visitor-keys": "^4.2.0"
+                               "has-symbols": "^1.0.3"
                        },
                        "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "node": ">= 0.4"
                        },
                        "funding": {
-                               "url": "https://opencollective.com/eslint"
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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",
+               "node_modules/has-unicode": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+                       "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
+                       "license": "ISC"
+               },
+               "node_modules/hasown": {
+                       "version": "2.0.2",
+                       "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+                       "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+                       "license": "MIT",
                        "dependencies": {
-                               "estraverse": "^5.1.0"
+                               "function-bind": "^1.1.2"
                        },
                        "engines": {
-                               "node": ">=0.10"
+                               "node": ">= 0.4"
                        }
                },
-               "node_modules/esrap": {
-                       "version": "1.3.2",
-                       "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.3.2.tgz",
-                       "integrity": "sha512-C4PXusxYhFT98GjLSmb20k9PREuUdporer50dhzGuJu9IJXktbMddVCMLAERl5dAHyAi73GWWCE4FVHGP1794g==",
+               "node_modules/https-proxy-agent": {
+                       "version": "5.0.1",
+                       "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+                       "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
                        "license": "MIT",
                        "dependencies": {
-                               "@jridgewell/sourcemap-codec": "^1.4.15"
-                       }
-               },
-               "node_modules/esrecurse": {
-                       "version": "4.3.0",
-                       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
-                       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
-                       "dev": true,
-                       "license": "BSD-2-Clause",
-                       "dependencies": {
-                               "estraverse": "^5.2.0"
+                               "agent-base": "6",
+                               "debug": "4"
                        },
                        "engines": {
-                               "node": ">=4.0"
+                               "node": ">= 6"
                        }
                },
-               "node_modules/estraverse": {
-                       "version": "5.3.0",
-                       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
-                       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+               "node_modules/idb": {
+                       "version": "7.1.1",
+                       "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
+                       "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==",
                        "dev": true,
-                       "license": "BSD-2-Clause",
-                       "engines": {
-                               "node": ">=4.0"
-                       }
+                       "license": "ISC"
                },
-               "node_modules/esutils": {
-                       "version": "2.0.3",
-                       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-                       "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+               "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": "BSD-2-Clause",
+                       "license": "MIT",
                        "engines": {
-                               "node": ">=0.10.0"
+                               "node": ">= 4"
                        }
                },
-               "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==",
+               "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/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==",
+               "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": {
-                               "@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"
+                               "parent-module": "^1.0.0",
+                               "resolve-from": "^4.0.0"
                        },
                        "engines": {
-                               "node": ">=8.6.0"
+                               "node": ">=6"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
                        }
                },
-               "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==",
+               "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/inflight": {
+                       "version": "1.0.6",
+                       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+                       "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+                       "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
                        "license": "ISC",
                        "dependencies": {
-                               "is-glob": "^4.0.1"
-                       },
-                       "engines": {
-                               "node": ">= 6"
+                               "once": "^1.3.0",
+                               "wrappy": "1"
                        }
                },
-               "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/inherits": {
+                       "version": "2.0.4",
+                       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+                       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+                       "license": "ISC"
                },
-               "node_modules/fast-levenshtein": {
-                       "version": "2.0.6",
-                       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-                       "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+               "node_modules/internal-slot": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+                       "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
                        "dev": true,
-                       "license": "MIT"
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-errors": "^1.3.0",
+                               "hasown": "^2.0.2",
+                               "side-channel": "^1.1.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
                },
-               "node_modules/fastq": {
-                       "version": "1.18.0",
-                       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
-                       "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
+               "node_modules/is-array-buffer": {
+                       "version": "3.0.5",
+                       "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+                       "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
                        "dev": true,
-                       "license": "ISC",
+                       "license": "MIT",
                        "dependencies": {
-                               "reusify": "^1.0.4"
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.3",
+                               "get-intrinsic": "^1.2.6"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/is-async-function": {
+                       "version": "2.1.1",
+                       "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+                       "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "async-function": "^1.0.0",
+                               "call-bound": "^1.0.3",
+                               "get-proto": "^1.0.1",
+                               "has-tostringtag": "^1.0.2",
+                               "safe-regex-test": "^1.1.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/is-bigint": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+                       "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "flat-cache": "^4.0.0"
+                               "has-bigints": "^1.0.2"
                        },
                        "engines": {
-                               "node": ">=16.0.0"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "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": {
-                               "to-regex-range": "^5.0.1"
+                               "binary-extensions": "^2.0.0"
                        },
                        "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==",
+               "node_modules/is-boolean-object": {
+                       "version": "1.2.2",
+                       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
+                       "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "locate-path": "^6.0.0",
-                               "path-exists": "^4.0.0"
+                               "call-bound": "^1.0.3",
+                               "has-tostringtag": "^1.0.2"
                        },
                        "engines": {
-                               "node": ">=10"
+                               "node": ">= 0.4"
                        },
                        "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/is-callable": {
+                       "version": "1.2.7",
+                       "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+                       "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
                        "dev": true,
                        "license": "MIT",
-                       "dependencies": {
-                               "flatted": "^3.2.9",
-                               "keyv": "^4.5.4"
-                       },
                        "engines": {
-                               "node": ">=16"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/is-core-module": {
+                       "version": "2.16.1",
+                       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+                       "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
                        "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",
+                       "dependencies": {
+                               "hasown": "^2.0.2"
+                       },
                        "engines": {
-                               "node": ">=4.0"
+                               "node": ">= 0.4"
                        },
-                       "peerDependenciesMeta": {
-                               "debug": {
-                                       "optional": true
-                               }
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/is-data-view": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+                       "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+                       "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "asynckit": "^0.4.0",
-                               "combined-stream": "^1.0.8",
-                               "mime-types": "^2.1.12"
+                               "call-bound": "^1.0.2",
+                               "get-intrinsic": "^1.2.6",
+                               "is-typed-array": "^1.1.13"
                        },
                        "engines": {
-                               "node": ">= 6"
-                       }
-               },
-               "node_modules/fs-minipass": {
-                       "version": "2.1.0",
-                       "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
-                       "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
-                       "license": "ISC",
-                       "dependencies": {
-                               "minipass": "^3.0.0"
+                               "node": ">= 0.4"
                        },
-                       "engines": {
-                               "node": ">= 8"
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/fs-minipass/node_modules/minipass": {
-                       "version": "3.3.6",
-                       "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
-                       "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
-                       "license": "ISC",
+               "node_modules/is-date-object": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+                       "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
+                       "dev": true,
+                       "license": "MIT",
                        "dependencies": {
-                               "yallist": "^4.0.0"
+                               "call-bound": "^1.0.2",
+                               "has-tostringtag": "^1.0.2"
                        },
                        "engines": {
-                               "node": ">=8"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/fs.realpath": {
-                       "version": "1.0.0",
-                       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
-                       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
-                       "license": "ISC"
-               },
-               "node_modules/fsevents": {
-                       "version": "2.3.3",
-                       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
-                       "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+               "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,
-                       "hasInstallScript": true,
                        "license": "MIT",
-                       "optional": true,
-                       "os": [
-                               "darwin"
-                       ],
                        "engines": {
-                               "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+                               "node": ">=0.10.0"
                        }
                },
-               "node_modules/gauge": {
-                       "version": "3.0.2",
-                       "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
-                       "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
-                       "deprecated": "This package is no longer supported.",
-                       "license": "ISC",
+               "node_modules/is-finalizationregistry": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+                       "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
+                       "dev": true,
+                       "license": "MIT",
                        "dependencies": {
-                               "aproba": "^1.0.3 || ^2.0.0",
-                               "color-support": "^1.1.2",
-                               "console-control-strings": "^1.0.0",
-                               "has-unicode": "^2.0.1",
-                               "object-assign": "^4.1.1",
-                               "signal-exit": "^3.0.0",
-                               "string-width": "^4.2.3",
-                               "strip-ansi": "^6.0.1",
-                               "wide-align": "^1.1.2"
+                               "call-bound": "^1.0.3"
                        },
                        "engines": {
-                               "node": ">=10"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/glob": {
-                       "version": "7.2.3",
-                       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
-                       "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
-                       "deprecated": "Glob versions prior to v9 are no longer supported",
-                       "license": "ISC",
+               "node_modules/is-fullwidth-code-point": {
+                       "version": "3.0.0",
+                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+                       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/is-generator-function": {
+                       "version": "1.1.2",
+                       "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
+                       "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
+                       "dev": true,
+                       "license": "MIT",
                        "dependencies": {
-                               "fs.realpath": "^1.0.0",
-                               "inflight": "^1.0.4",
-                               "inherits": "2",
-                               "minimatch": "^3.1.1",
-                               "once": "^1.3.0",
-                               "path-is-absolute": "^1.0.0"
+                               "call-bound": "^1.0.4",
+                               "generator-function": "^2.0.0",
+                               "get-proto": "^1.0.1",
+                               "has-tostringtag": "^1.0.2",
+                               "safe-regex-test": "^1.1.0"
                        },
                        "engines": {
-                               "node": "*"
+                               "node": ">= 0.4"
                        },
                        "funding": {
-                               "url": "https://github.com/sponsors/isaacs"
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "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": "ISC",
+                       "license": "MIT",
                        "dependencies": {
-                               "is-glob": "^4.0.3"
+                               "is-extglob": "^2.1.1"
                        },
                        "engines": {
-                               "node": ">=10.13.0"
+                               "node": ">=0.10.0"
                        }
                },
-               "node_modules/globals": {
-                       "version": "15.14.0",
-                       "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz",
-                       "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
+               "node_modules/is-map": {
+                       "version": "2.0.3",
+                       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+                       "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
                        "dev": true,
                        "license": "MIT",
                        "engines": {
-                               "node": ">=18"
+                               "node": ">= 0.4"
                        },
                        "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/is-module": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+                       "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
                        "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==",
+               "node_modules/is-negative-zero": {
+                       "version": "2.0.3",
+                       "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+                       "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
                        "dev": true,
-                       "license": "MIT"
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
                },
-               "node_modules/graphemer": {
-                       "version": "1.4.0",
-                       "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
-                       "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+               "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"
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=0.12.0"
+                       }
                },
-               "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==",
+               "node_modules/is-number-object": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+                       "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.3",
+                               "has-tostringtag": "^1.0.2"
+                       },
                        "engines": {
-                               "node": ">=8"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/has-unicode": {
-                       "version": "2.0.1",
-                       "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
-                       "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
-                       "license": "ISC"
+               "node_modules/is-obj": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+                       "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
                },
-               "node_modules/https-proxy-agent": {
-                       "version": "5.0.1",
-                       "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
-                       "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+               "node_modules/is-reference": {
+                       "version": "3.0.3",
+                       "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
+                       "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
+                       "license": "MIT",
+                       "dependencies": {
+                               "@types/estree": "^1.0.6"
+                       }
+               },
+               "node_modules/is-regex": {
+                       "version": "1.2.1",
+                       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+                       "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+                       "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "agent-base": "6",
-                               "debug": "4"
+                               "call-bound": "^1.0.2",
+                               "gopd": "^1.2.0",
+                               "has-tostringtag": "^1.0.2",
+                               "hasown": "^2.0.2"
                        },
                        "engines": {
-                               "node": ">= 6"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/ignore": {
-                       "version": "5.3.2",
-                       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
-                       "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+               "node_modules/is-regexp": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+                       "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==",
                        "dev": true,
                        "license": "MIT",
                        "engines": {
-                               "node": ">= 4"
+                               "node": ">=0.10.0"
                        }
                },
-               "node_modules/immutable": {
-                       "version": "4.3.7",
-                       "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
-                       "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
+               "node_modules/is-set": {
+                       "version": "2.0.3",
+                       "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+                       "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
                        "dev": true,
-                       "license": "MIT"
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
                },
-               "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==",
+               "node_modules/is-shared-array-buffer": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+                       "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "parent-module": "^1.0.0",
-                               "resolve-from": "^4.0.0"
+                               "call-bound": "^1.0.3"
                        },
                        "engines": {
-                               "node": ">=6"
+                               "node": ">= 0.4"
                        },
                        "funding": {
-                               "url": "https://github.com/sponsors/sindresorhus"
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/is-stream": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+                       "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
                        "dev": true,
                        "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       },
                        "funding": {
-                               "type": "github",
-                               "url": "https://github.com/sponsors/wooorm"
+                               "url": "https://github.com/sponsors/sindresorhus"
                        }
                },
-               "node_modules/imurmurhash": {
-                       "version": "0.1.4",
-                       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-                       "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+               "node_modules/is-string": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+                       "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
                        "dev": true,
                        "license": "MIT",
-                       "engines": {
-                               "node": ">=0.8.19"
-                       }
-               },
-               "node_modules/inflight": {
-                       "version": "1.0.6",
-                       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
-                       "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
-                       "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
-                       "license": "ISC",
                        "dependencies": {
-                               "once": "^1.3.0",
-                               "wrappy": "1"
+                               "call-bound": "^1.0.3",
+                               "has-tostringtag": "^1.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/inherits": {
-                       "version": "2.0.4",
-                       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-                       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-                       "license": "ISC"
-               },
-               "node_modules/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==",
+               "node_modules/is-symbol": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+                       "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "binary-extensions": "^2.0.0"
+                               "call-bound": "^1.0.2",
+                               "has-symbols": "^1.1.0",
+                               "safe-regex-test": "^1.1.0"
                        },
                        "engines": {
-                               "node": ">=8"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/is-extglob": {
-                       "version": "2.1.1",
-                       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-                       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+               "node_modules/is-typed-array": {
+                       "version": "1.1.15",
+                       "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+                       "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "which-typed-array": "^1.1.16"
+                       },
                        "engines": {
-                               "node": ">=0.10.0"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/is-fullwidth-code-point": {
-                       "version": "3.0.0",
-                       "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-                       "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+               "node_modules/is-weakmap": {
+                       "version": "2.0.2",
+                       "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+                       "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+                       "dev": true,
                        "license": "MIT",
                        "engines": {
-                               "node": ">=8"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/is-weakref": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
+                       "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "is-extglob": "^2.1.1"
+                               "call-bound": "^1.0.3"
                        },
                        "engines": {
-                               "node": ">=0.10.0"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "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==",
+               "node_modules/is-weakset": {
+                       "version": "2.0.4",
+                       "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+                       "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
                        "dev": true,
                        "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.3",
+                               "get-intrinsic": "^1.2.6"
+                       },
                        "engines": {
-                               "node": ">=0.12.0"
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
-               "node_modules/is-reference": {
-                       "version": "3.0.3",
-                       "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
-                       "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
-                       "license": "MIT",
-                       "dependencies": {
-                               "@types/estree": "^1.0.6"
-                       }
+               "node_modules/isarray": {
+                       "version": "2.0.5",
+                       "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+                       "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+                       "dev": true,
+                       "license": "MIT"
                },
                "node_modules/isexe": {
                        "version": "2.0.0",
                        "dev": true,
                        "license": "ISC"
                },
+               "node_modules/jake": {
+                       "version": "10.9.4",
+                       "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz",
+                       "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==",
+                       "dev": true,
+                       "license": "Apache-2.0",
+                       "dependencies": {
+                               "async": "^3.2.6",
+                               "filelist": "^1.0.4",
+                               "picocolors": "^1.1.1"
+                       },
+                       "bin": {
+                               "jake": "bin/cli.js"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       }
+               },
+               "node_modules/js-tokens": {
+                       "version": "4.0.0",
+                       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+                       "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+                       "dev": true,
+                       "license": "MIT"
+               },
                "node_modules/js-yaml": {
                        "version": "4.1.0",
                        "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
                                "js-yaml": "bin/js-yaml.js"
                        }
                },
+               "node_modules/jsesc": {
+                       "version": "3.1.0",
+                       "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+                       "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "bin": {
+                               "jsesc": "bin/jsesc"
+                       },
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
                "node_modules/json-buffer": {
                        "version": "3.0.1",
                        "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
                        "dev": true,
                        "license": "MIT"
                },
+               "node_modules/json-schema": {
+                       "version": "0.4.0",
+                       "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+                       "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+                       "dev": true,
+                       "license": "(AFL-2.1 OR BSD-3-Clause)"
+               },
                "node_modules/json-schema-traverse": {
                        "version": "0.4.1",
                        "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
                        "dev": true,
                        "license": "MIT"
                },
+               "node_modules/json5": {
+                       "version": "2.2.3",
+                       "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+                       "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "bin": {
+                               "json5": "lib/cli.js"
+                       },
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
+               "node_modules/jsonfile": {
+                       "version": "6.2.0",
+                       "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
+                       "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "universalify": "^2.0.0"
+                       },
+                       "optionalDependencies": {
+                               "graceful-fs": "^4.1.6"
+                       }
+               },
+               "node_modules/jsonpointer": {
+                       "version": "5.0.1",
+                       "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
+                       "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
                "node_modules/keyv": {
                        "version": "4.5.4",
                        "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
                        "dev": true,
                        "license": "MIT"
                },
+               "node_modules/kolorist": {
+                       "version": "1.8.0",
+                       "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz",
+                       "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/leven": {
+                       "version": "3.1.0",
+                       "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+                       "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6"
+                       }
+               },
                "node_modules/levn": {
                        "version": "0.4.1",
                        "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
                                "url": "https://github.com/sponsors/sindresorhus"
                        }
                },
+               "node_modules/lodash": {
+                       "version": "4.17.21",
+                       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+                       "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/lodash.debounce": {
+                       "version": "4.0.8",
+                       "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+                       "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+                       "dev": true,
+                       "license": "MIT"
+               },
                "node_modules/lodash.merge": {
                        "version": "4.6.2",
                        "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
                        "dev": true,
                        "license": "MIT"
                },
+               "node_modules/lodash.sortby": {
+                       "version": "4.7.0",
+                       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+                       "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/lru-cache": {
+                       "version": "5.1.1",
+                       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+                       "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+                       "dev": true,
+                       "license": "ISC",
+                       "dependencies": {
+                               "yallist": "^3.0.2"
+                       }
+               },
+               "node_modules/lru-cache/node_modules/yallist": {
+                       "version": "3.1.1",
+                       "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+                       "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+                       "dev": true,
+                       "license": "ISC"
+               },
                "node_modules/magic-string": {
                        "version": "0.30.17",
                        "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
                                "node": ">= 18"
                        }
                },
+               "node_modules/math-intrinsics": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+                       "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
                "node_modules/merge2": {
                        "version": "1.4.1",
                        "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
                                }
                        }
                },
+               "node_modules/node-releases": {
+                       "version": "2.0.23",
+                       "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz",
+                       "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==",
+                       "dev": true,
+                       "license": "MIT"
+               },
                "node_modules/nopt": {
                        "version": "5.0.0",
                        "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
                                "node": ">=0.10.0"
                        }
                },
+               "node_modules/object-inspect": {
+                       "version": "1.13.4",
+                       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+                       "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/object-keys": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+                       "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/object.assign": {
+                       "version": "4.1.7",
+                       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+                       "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.3",
+                               "define-properties": "^1.2.1",
+                               "es-object-atoms": "^1.0.0",
+                               "has-symbols": "^1.1.0",
+                               "object-keys": "^1.1.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
                "node_modules/once": {
                        "version": "1.4.0",
                        "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
                                "word-wrap": "^1.2.5"
                        },
                        "engines": {
-                               "node": ">= 0.8.0"
+                               "node": ">= 0.8.0"
+                       }
+               },
+               "node_modules/own-keys": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+                       "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "get-intrinsic": "^1.2.6",
+                               "object-keys": "^1.1.1",
+                               "safe-push-apply": "^1.0.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
                        }
                },
                "node_modules/p-limit": {
                                "node": ">=8"
                        }
                },
+               "node_modules/path-parse": {
+                       "version": "1.0.7",
+                       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+                       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
                "node_modules/picocolors": {
                        "version": "1.1.1",
                        "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
                                "url": "https://github.com/sponsors/jonschlinkert"
                        }
                },
+               "node_modules/possible-typed-array-names": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+                       "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
                "node_modules/postcss": {
                        "version": "8.4.49",
                        "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
                                "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0"
                        }
                },
+               "node_modules/pretty-bytes": {
+                       "version": "6.1.1",
+                       "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz",
+                       "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": "^14.13.1 || >=16.0.0"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
                "node_modules/proxy-from-env": {
                        "version": "1.1.0",
                        "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
                        ],
                        "license": "MIT"
                },
+               "node_modules/randombytes": {
+                       "version": "2.1.0",
+                       "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+                       "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "safe-buffer": "^5.1.0"
+                       }
+               },
                "node_modules/readable-stream": {
                        "version": "3.6.2",
                        "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
                                "node": ">=8.10.0"
                        }
                },
+               "node_modules/reflect.getprototypeof": {
+                       "version": "1.0.10",
+                       "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+                       "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.8",
+                               "define-properties": "^1.2.1",
+                               "es-abstract": "^1.23.9",
+                               "es-errors": "^1.3.0",
+                               "es-object-atoms": "^1.0.0",
+                               "get-intrinsic": "^1.2.7",
+                               "get-proto": "^1.0.1",
+                               "which-builtin-type": "^1.2.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/regenerate": {
+                       "version": "1.4.2",
+                       "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
+                       "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/regenerate-unicode-properties": {
+                       "version": "10.2.2",
+                       "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz",
+                       "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "regenerate": "^1.4.2"
+                       },
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
+               "node_modules/regexp.prototype.flags": {
+                       "version": "1.5.4",
+                       "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+                       "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.8",
+                               "define-properties": "^1.2.1",
+                               "es-errors": "^1.3.0",
+                               "get-proto": "^1.0.1",
+                               "gopd": "^1.2.0",
+                               "set-function-name": "^2.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/regexpu-core": {
+                       "version": "6.4.0",
+                       "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
+                       "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "regenerate": "^1.4.2",
+                               "regenerate-unicode-properties": "^10.2.2",
+                               "regjsgen": "^0.8.0",
+                               "regjsparser": "^0.13.0",
+                               "unicode-match-property-ecmascript": "^2.0.0",
+                               "unicode-match-property-value-ecmascript": "^2.2.1"
+                       },
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
+               "node_modules/regjsgen": {
+                       "version": "0.8.0",
+                       "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
+                       "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/regjsparser": {
+                       "version": "0.13.0",
+                       "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz",
+                       "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "jsesc": "~3.1.0"
+                       },
+                       "bin": {
+                               "regjsparser": "bin/parser"
+                       }
+               },
+               "node_modules/require-from-string": {
+                       "version": "2.0.2",
+                       "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+                       "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
+               "node_modules/resolve": {
+                       "version": "1.22.10",
+                       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+                       "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "is-core-module": "^2.16.0",
+                               "path-parse": "^1.0.7",
+                               "supports-preserve-symlinks-flag": "^1.0.0"
+                       },
+                       "bin": {
+                               "resolve": "bin/resolve"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
                "node_modules/resolve-from": {
                        "version": "4.0.0",
                        "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
                                "node": ">=6"
                        }
                },
+               "node_modules/safe-array-concat": {
+                       "version": "1.1.3",
+                       "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+                       "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.2",
+                               "get-intrinsic": "^1.2.6",
+                               "has-symbols": "^1.1.0",
+                               "isarray": "^2.0.5"
+                       },
+                       "engines": {
+                               "node": ">=0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
                "node_modules/safe-buffer": {
                        "version": "5.2.1",
                        "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
                        ],
                        "license": "MIT"
                },
+               "node_modules/safe-push-apply": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+                       "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-errors": "^1.3.0",
+                               "isarray": "^2.0.5"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/safe-regex-test": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+                       "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.2",
+                               "es-errors": "^1.3.0",
+                               "is-regex": "^1.2.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
                "node_modules/sass": {
                        "version": "1.77.6",
                        "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz",
                                "node": ">=10"
                        }
                },
+               "node_modules/serialize-javascript": {
+                       "version": "6.0.2",
+                       "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+                       "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+                       "dev": true,
+                       "license": "BSD-3-Clause",
+                       "dependencies": {
+                               "randombytes": "^2.1.0"
+                       }
+               },
                "node_modules/set-blocking": {
                        "version": "2.0.0",
                        "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
                        "dev": true,
                        "license": "MIT"
                },
+               "node_modules/set-function-length": {
+                       "version": "1.2.2",
+                       "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+                       "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "define-data-property": "^1.1.4",
+                               "es-errors": "^1.3.0",
+                               "function-bind": "^1.1.2",
+                               "get-intrinsic": "^1.2.4",
+                               "gopd": "^1.0.1",
+                               "has-property-descriptors": "^1.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/set-function-name": {
+                       "version": "2.0.2",
+                       "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+                       "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "define-data-property": "^1.1.4",
+                               "es-errors": "^1.3.0",
+                               "functions-have-names": "^1.2.3",
+                               "has-property-descriptors": "^1.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/set-proto": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+                       "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "dunder-proto": "^1.0.1",
+                               "es-errors": "^1.3.0",
+                               "es-object-atoms": "^1.0.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
                "node_modules/shebang-command": {
                        "version": "2.0.0",
                        "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
                                "node": ">=8"
                        }
                },
+               "node_modules/side-channel": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+                       "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-errors": "^1.3.0",
+                               "object-inspect": "^1.13.3",
+                               "side-channel-list": "^1.0.0",
+                               "side-channel-map": "^1.0.1",
+                               "side-channel-weakmap": "^1.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/side-channel-list": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+                       "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-errors": "^1.3.0",
+                               "object-inspect": "^1.13.3"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/side-channel-map": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+                       "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.2",
+                               "es-errors": "^1.3.0",
+                               "get-intrinsic": "^1.2.5",
+                               "object-inspect": "^1.13.3"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/side-channel-weakmap": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+                       "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.2",
+                               "es-errors": "^1.3.0",
+                               "get-intrinsic": "^1.2.5",
+                               "object-inspect": "^1.13.3",
+                               "side-channel-map": "^1.0.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
                "node_modules/signal-exit": {
                        "version": "3.0.7",
                        "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
                                "node": ">=18"
                        }
                },
+               "node_modules/smob": {
+                       "version": "1.5.0",
+                       "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz",
+                       "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/source-map": {
+                       "version": "0.8.0-beta.0",
+                       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz",
+                       "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==",
+                       "deprecated": "The work that was done in this beta branch won't be included in future versions",
+                       "dev": true,
+                       "license": "BSD-3-Clause",
+                       "dependencies": {
+                               "whatwg-url": "^7.0.0"
+                       },
+                       "engines": {
+                               "node": ">= 8"
+                       }
+               },
                "node_modules/source-map-js": {
                        "version": "1.2.1",
                        "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
                                "node": ">=0.10.0"
                        }
                },
+               "node_modules/source-map-support": {
+                       "version": "0.5.21",
+                       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+                       "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "buffer-from": "^1.0.0",
+                               "source-map": "^0.6.0"
+                       }
+               },
+               "node_modules/source-map-support/node_modules/source-map": {
+                       "version": "0.6.1",
+                       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+                       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+                       "dev": true,
+                       "license": "BSD-3-Clause",
+                       "engines": {
+                               "node": ">=0.10.0"
+                       }
+               },
+               "node_modules/source-map/node_modules/tr46": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+                       "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "punycode": "^2.1.0"
+                       }
+               },
+               "node_modules/source-map/node_modules/webidl-conversions": {
+                       "version": "4.0.2",
+                       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+                       "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+                       "dev": true,
+                       "license": "BSD-2-Clause"
+               },
+               "node_modules/source-map/node_modules/whatwg-url": {
+                       "version": "7.1.0",
+                       "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
+                       "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "lodash.sortby": "^4.7.0",
+                               "tr46": "^1.0.1",
+                               "webidl-conversions": "^4.0.2"
+                       }
+               },
+               "node_modules/sourcemap-codec": {
+                       "version": "1.4.8",
+                       "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+                       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+                       "deprecated": "Please use @jridgewell/sourcemap-codec instead",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/stop-iteration-iterator": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+                       "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "es-errors": "^1.3.0",
+                               "internal-slot": "^1.1.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
                "node_modules/string_decoder": {
                        "version": "1.3.0",
                        "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
                                "node": ">=8"
                        }
                },
+               "node_modules/string.prototype.matchall": {
+                       "version": "4.0.12",
+                       "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
+                       "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.3",
+                               "define-properties": "^1.2.1",
+                               "es-abstract": "^1.23.6",
+                               "es-errors": "^1.3.0",
+                               "es-object-atoms": "^1.0.0",
+                               "get-intrinsic": "^1.2.6",
+                               "gopd": "^1.2.0",
+                               "has-symbols": "^1.1.0",
+                               "internal-slot": "^1.1.0",
+                               "regexp.prototype.flags": "^1.5.3",
+                               "set-function-name": "^2.0.2",
+                               "side-channel": "^1.1.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/string.prototype.trim": {
+                       "version": "1.2.10",
+                       "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+                       "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.2",
+                               "define-data-property": "^1.1.4",
+                               "define-properties": "^1.2.1",
+                               "es-abstract": "^1.23.5",
+                               "es-object-atoms": "^1.0.0",
+                               "has-property-descriptors": "^1.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/string.prototype.trimend": {
+                       "version": "1.0.9",
+                       "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+                       "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.2",
+                               "define-properties": "^1.2.1",
+                               "es-object-atoms": "^1.0.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/string.prototype.trimstart": {
+                       "version": "1.0.8",
+                       "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+                       "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.7",
+                               "define-properties": "^1.2.1",
+                               "es-object-atoms": "^1.0.0"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/stringify-object": {
+                       "version": "3.3.0",
+                       "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
+                       "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "get-own-enumerable-property-symbols": "^3.0.0",
+                               "is-obj": "^1.0.1",
+                               "is-regexp": "^1.0.0"
+                       },
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
                "node_modules/strip-ansi": {
                        "version": "6.0.1",
                        "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
                                "node": ">=8"
                        }
                },
+               "node_modules/strip-comments": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz",
+                       "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=10"
+                       }
+               },
                "node_modules/strip-json-comments": {
                        "version": "3.1.1",
                        "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
                                "node": ">=8"
                        }
                },
+               "node_modules/supports-preserve-symlinks-flag": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+                       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
                "node_modules/svelte": {
                        "version": "5.16.0",
                        "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.16.0.tgz",
                                "node": ">=10"
                        }
                },
+               "node_modules/temp-dir": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
+                       "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/tempy": {
+                       "version": "0.6.0",
+                       "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz",
+                       "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "is-stream": "^2.0.0",
+                               "temp-dir": "^2.0.0",
+                               "type-fest": "^0.16.0",
+                               "unique-string": "^2.0.0"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/terser": {
+                       "version": "5.44.0",
+                       "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz",
+                       "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==",
+                       "dev": true,
+                       "license": "BSD-2-Clause",
+                       "dependencies": {
+                               "@jridgewell/source-map": "^0.3.3",
+                               "acorn": "^8.15.0",
+                               "commander": "^2.20.0",
+                               "source-map-support": "~0.5.20"
+                       },
+                       "bin": {
+                               "terser": "bin/terser"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       }
+               },
                "node_modules/tiny-glob": {
                        "version": "0.2.9",
                        "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz",
                                "core-js": "^3.6.5"
                        }
                },
+               "node_modules/tinyglobby": {
+                       "version": "0.2.15",
+                       "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
+                       "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "fdir": "^6.5.0",
+                               "picomatch": "^4.0.3"
+                       },
+                       "engines": {
+                               "node": ">=12.0.0"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/SuperchupuDev"
+                       }
+               },
+               "node_modules/tinyglobby/node_modules/fdir": {
+                       "version": "6.5.0",
+                       "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+                       "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=12.0.0"
+                       },
+                       "peerDependencies": {
+                               "picomatch": "^3 || ^4"
+                       },
+                       "peerDependenciesMeta": {
+                               "picomatch": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/tinyglobby/node_modules/picomatch": {
+                       "version": "4.0.3",
+                       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+                       "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=12"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/jonschlinkert"
+                       }
+               },
                "node_modules/to-regex-range": {
                        "version": "5.0.1",
                        "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
                                "node": ">= 0.8.0"
                        }
                },
+               "node_modules/type-fest": {
+                       "version": "0.16.0",
+                       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
+                       "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
+                       "dev": true,
+                       "license": "(MIT OR CC0-1.0)",
+                       "engines": {
+                               "node": ">=10"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/typed-array-buffer": {
+                       "version": "1.0.3",
+                       "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+                       "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.3",
+                               "es-errors": "^1.3.0",
+                               "is-typed-array": "^1.1.14"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       }
+               },
+               "node_modules/typed-array-byte-length": {
+                       "version": "1.0.3",
+                       "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+                       "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.8",
+                               "for-each": "^0.3.3",
+                               "gopd": "^1.2.0",
+                               "has-proto": "^1.2.0",
+                               "is-typed-array": "^1.1.14"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/typed-array-byte-offset": {
+                       "version": "1.0.4",
+                       "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+                       "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "available-typed-arrays": "^1.0.7",
+                               "call-bind": "^1.0.8",
+                               "for-each": "^0.3.3",
+                               "gopd": "^1.2.0",
+                               "has-proto": "^1.2.0",
+                               "is-typed-array": "^1.1.15",
+                               "reflect.getprototypeof": "^1.0.9"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/typed-array-length": {
+                       "version": "1.0.7",
+                       "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+                       "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bind": "^1.0.7",
+                               "for-each": "^0.3.3",
+                               "gopd": "^1.0.1",
+                               "is-typed-array": "^1.1.13",
+                               "possible-typed-array-names": "^1.0.0",
+                               "reflect.getprototypeof": "^1.0.6"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
                "node_modules/typescript": {
                        "version": "5.7.2",
                        "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
                        "dev": true,
                        "license": "MIT",
                        "dependencies": {
-                               "@typescript-eslint/eslint-plugin": "8.18.2",
-                               "@typescript-eslint/parser": "8.18.2",
-                               "@typescript-eslint/utils": "8.18.2"
-                       },
-                       "engines": {
-                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                               "@typescript-eslint/eslint-plugin": "8.18.2",
+                               "@typescript-eslint/parser": "8.18.2",
+                               "@typescript-eslint/utils": "8.18.2"
+                       },
+                       "engines": {
+                               "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+                       },
+                       "funding": {
+                               "type": "opencollective",
+                               "url": "https://opencollective.com/typescript-eslint"
+                       },
+                       "peerDependencies": {
+                               "eslint": "^8.57.0 || ^9.0.0",
+                               "typescript": ">=4.8.4 <5.8.0"
+                       }
+               },
+               "node_modules/unbox-primitive": {
+                       "version": "1.1.0",
+                       "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+                       "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.3",
+                               "has-bigints": "^1.0.2",
+                               "has-symbols": "^1.1.0",
+                               "which-boxed-primitive": "^1.1.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/unicode-canonical-property-names-ecmascript": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
+                       "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
+               "node_modules/unicode-match-property-ecmascript": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+                       "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "unicode-canonical-property-names-ecmascript": "^2.0.0",
+                               "unicode-property-aliases-ecmascript": "^2.0.0"
+                       },
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
+               "node_modules/unicode-match-property-value-ecmascript": {
+                       "version": "2.2.1",
+                       "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz",
+                       "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
+               "node_modules/unicode-property-aliases-ecmascript": {
+                       "version": "2.2.0",
+                       "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz",
+                       "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=4"
+                       }
+               },
+               "node_modules/unique-string": {
+                       "version": "2.0.0",
+                       "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+                       "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "crypto-random-string": "^2.0.0"
+                       },
+                       "engines": {
+                               "node": ">=8"
+                       }
+               },
+               "node_modules/universalify": {
+                       "version": "2.0.1",
+                       "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+                       "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">= 10.0.0"
+                       }
+               },
+               "node_modules/upath": {
+                       "version": "1.2.0",
+                       "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+                       "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=4",
+                               "yarn": "*"
+                       }
+               },
+               "node_modules/update-browserslist-db": {
+                       "version": "1.1.3",
+                       "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+                       "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+                       "dev": true,
+                       "funding": [
+                               {
+                                       "type": "opencollective",
+                                       "url": "https://opencollective.com/browserslist"
+                               },
+                               {
+                                       "type": "tidelift",
+                                       "url": "https://tidelift.com/funding/github/npm/browserslist"
+                               },
+                               {
+                                       "type": "github",
+                                       "url": "https://github.com/sponsors/ai"
+                               }
+                       ],
+                       "license": "MIT",
+                       "dependencies": {
+                               "escalade": "^3.2.0",
+                               "picocolors": "^1.1.1"
                        },
-                       "funding": {
-                               "type": "opencollective",
-                               "url": "https://opencollective.com/typescript-eslint"
+                       "bin": {
+                               "update-browserslist-db": "cli.js"
                        },
                        "peerDependencies": {
-                               "eslint": "^8.57.0 || ^9.0.0",
-                               "typescript": ">=4.8.4 <5.8.0"
+                               "browserslist": ">= 4.21.0"
                        }
                },
                "node_modules/uri-js": {
                                }
                        }
                },
+               "node_modules/vite-plugin-mkcert": {
+                       "version": "1.17.8",
+                       "resolved": "https://registry.npmjs.org/vite-plugin-mkcert/-/vite-plugin-mkcert-1.17.8.tgz",
+                       "integrity": "sha512-S+4tNEyGqdZQ3RLAG54ETeO2qyURHWrVjUWKYikLAbmhh/iJ+36gDEja4OWwFyXNuvyXcZwNt5TZZR9itPeG5Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "axios": "^1.8.3",
+                               "debug": "^4.4.0",
+                               "picocolors": "^1.1.1"
+                       },
+                       "engines": {
+                               "node": ">=v16.7.0"
+                       },
+                       "peerDependencies": {
+                               "vite": ">=3"
+                       }
+               },
+               "node_modules/vite-plugin-pwa": {
+                       "version": "1.0.3",
+                       "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.0.3.tgz",
+                       "integrity": "sha512-/OpqIpUldALGxcsEnv/ekQiQ5xHkQ53wcoN5ewX4jiIDNGs3W+eNcI1WYZeyOLmzoEjg09D7aX0O89YGjen1aw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "debug": "^4.3.6",
+                               "pretty-bytes": "^6.1.1",
+                               "tinyglobby": "^0.2.10",
+                               "workbox-build": "^7.3.0",
+                               "workbox-window": "^7.3.0"
+                       },
+                       "engines": {
+                               "node": ">=16.0.0"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/antfu"
+                       },
+                       "peerDependencies": {
+                               "@vite-pwa/assets-generator": "^1.0.0",
+                               "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0",
+                               "workbox-build": "^7.3.0",
+                               "workbox-window": "^7.3.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "@vite-pwa/assets-generator": {
+                                       "optional": true
+                               }
+                       }
+               },
                "node_modules/vitefu": {
                        "version": "1.0.4",
                        "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.4.tgz",
                                "node": ">= 8"
                        }
                },
+               "node_modules/which-boxed-primitive": {
+                       "version": "1.1.1",
+                       "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+                       "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "is-bigint": "^1.1.0",
+                               "is-boolean-object": "^1.2.1",
+                               "is-number-object": "^1.1.1",
+                               "is-string": "^1.1.1",
+                               "is-symbol": "^1.1.1"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/which-builtin-type": {
+                       "version": "1.2.1",
+                       "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+                       "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "call-bound": "^1.0.2",
+                               "function.prototype.name": "^1.1.6",
+                               "has-tostringtag": "^1.0.2",
+                               "is-async-function": "^2.0.0",
+                               "is-date-object": "^1.1.0",
+                               "is-finalizationregistry": "^1.1.0",
+                               "is-generator-function": "^1.0.10",
+                               "is-regex": "^1.2.1",
+                               "is-weakref": "^1.0.2",
+                               "isarray": "^2.0.5",
+                               "which-boxed-primitive": "^1.1.0",
+                               "which-collection": "^1.0.2",
+                               "which-typed-array": "^1.1.16"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/which-collection": {
+                       "version": "1.0.2",
+                       "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+                       "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "is-map": "^2.0.3",
+                               "is-set": "^2.0.3",
+                               "is-weakmap": "^2.0.2",
+                               "is-weakset": "^2.0.3"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
+               "node_modules/which-typed-array": {
+                       "version": "1.1.19",
+                       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
+                       "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "available-typed-arrays": "^1.0.7",
+                               "call-bind": "^1.0.8",
+                               "call-bound": "^1.0.4",
+                               "for-each": "^0.3.5",
+                               "get-proto": "^1.0.1",
+                               "gopd": "^1.2.0",
+                               "has-tostringtag": "^1.0.2"
+                       },
+                       "engines": {
+                               "node": ">= 0.4"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/ljharb"
+                       }
+               },
                "node_modules/wide-align": {
                        "version": "1.1.5",
                        "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
                                "node": ">=0.10.0"
                        }
                },
+               "node_modules/workbox-background-sync": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.3.0.tgz",
+                       "integrity": "sha512-PCSk3eK7Mxeuyatb22pcSx9dlgWNv3+M8PqPaYDokks8Y5/FX4soaOqj3yhAZr5k6Q5JWTOMYgaJBpbw11G9Eg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "idb": "^7.0.1",
+                               "workbox-core": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-broadcast-update": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.3.0.tgz",
+                       "integrity": "sha512-T9/F5VEdJVhwmrIAE+E/kq5at2OY6+OXXgOWQevnubal6sO92Gjo24v6dCVwQiclAF5NS3hlmsifRrpQzZCdUA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-core": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-build": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.3.0.tgz",
+                       "integrity": "sha512-JGL6vZTPlxnlqZRhR/K/msqg3wKP+m0wfEUVosK7gsYzSgeIxvZLi1ViJJzVL7CEeI8r7rGFV973RiEqkP3lWQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@apideck/better-ajv-errors": "^0.3.1",
+                               "@babel/core": "^7.24.4",
+                               "@babel/preset-env": "^7.11.0",
+                               "@babel/runtime": "^7.11.2",
+                               "@rollup/plugin-babel": "^5.2.0",
+                               "@rollup/plugin-node-resolve": "^15.2.3",
+                               "@rollup/plugin-replace": "^2.4.1",
+                               "@rollup/plugin-terser": "^0.4.3",
+                               "@surma/rollup-plugin-off-main-thread": "^2.2.3",
+                               "ajv": "^8.6.0",
+                               "common-tags": "^1.8.0",
+                               "fast-json-stable-stringify": "^2.1.0",
+                               "fs-extra": "^9.0.1",
+                               "glob": "^7.1.6",
+                               "lodash": "^4.17.20",
+                               "pretty-bytes": "^5.3.0",
+                               "rollup": "^2.43.1",
+                               "source-map": "^0.8.0-beta.0",
+                               "stringify-object": "^3.3.0",
+                               "strip-comments": "^2.0.1",
+                               "tempy": "^0.6.0",
+                               "upath": "^1.2.0",
+                               "workbox-background-sync": "7.3.0",
+                               "workbox-broadcast-update": "7.3.0",
+                               "workbox-cacheable-response": "7.3.0",
+                               "workbox-core": "7.3.0",
+                               "workbox-expiration": "7.3.0",
+                               "workbox-google-analytics": "7.3.0",
+                               "workbox-navigation-preload": "7.3.0",
+                               "workbox-precaching": "7.3.0",
+                               "workbox-range-requests": "7.3.0",
+                               "workbox-recipes": "7.3.0",
+                               "workbox-routing": "7.3.0",
+                               "workbox-strategies": "7.3.0",
+                               "workbox-streams": "7.3.0",
+                               "workbox-sw": "7.3.0",
+                               "workbox-window": "7.3.0"
+                       },
+                       "engines": {
+                               "node": ">=16.0.0"
+                       }
+               },
+               "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": {
+                       "version": "0.3.6",
+                       "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz",
+                       "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "json-schema": "^0.4.0",
+                               "jsonpointer": "^5.0.0",
+                               "leven": "^3.1.0"
+                       },
+                       "engines": {
+                               "node": ">=10"
+                       },
+                       "peerDependencies": {
+                               "ajv": ">=8"
+                       }
+               },
+               "node_modules/workbox-build/node_modules/@rollup/plugin-babel": {
+                       "version": "5.3.1",
+                       "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz",
+                       "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@babel/helper-module-imports": "^7.10.4",
+                               "@rollup/pluginutils": "^3.1.0"
+                       },
+                       "engines": {
+                               "node": ">= 10.0.0"
+                       },
+                       "peerDependencies": {
+                               "@babel/core": "^7.0.0",
+                               "@types/babel__core": "^7.1.9",
+                               "rollup": "^1.20.0||^2.0.0"
+                       },
+                       "peerDependenciesMeta": {
+                               "@types/babel__core": {
+                                       "optional": true
+                               }
+                       }
+               },
+               "node_modules/workbox-build/node_modules/@rollup/plugin-replace": {
+                       "version": "2.4.2",
+                       "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz",
+                       "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@rollup/pluginutils": "^3.1.0",
+                               "magic-string": "^0.25.7"
+                       },
+                       "peerDependencies": {
+                               "rollup": "^1.20.0 || ^2.0.0"
+                       }
+               },
+               "node_modules/workbox-build/node_modules/@rollup/pluginutils": {
+                       "version": "3.1.0",
+                       "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
+                       "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@types/estree": "0.0.39",
+                               "estree-walker": "^1.0.1",
+                               "picomatch": "^2.2.2"
+                       },
+                       "engines": {
+                               "node": ">= 8.0.0"
+                       },
+                       "peerDependencies": {
+                               "rollup": "^1.20.0||^2.0.0"
+                       }
+               },
+               "node_modules/workbox-build/node_modules/@types/estree": {
+                       "version": "0.0.39",
+                       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
+                       "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/workbox-build/node_modules/ajv": {
+                       "version": "8.17.1",
+                       "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+                       "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "fast-deep-equal": "^3.1.3",
+                               "fast-uri": "^3.0.1",
+                               "json-schema-traverse": "^1.0.0",
+                               "require-from-string": "^2.0.2"
+                       },
+                       "funding": {
+                               "type": "github",
+                               "url": "https://github.com/sponsors/epoberezkin"
+                       }
+               },
+               "node_modules/workbox-build/node_modules/estree-walker": {
+                       "version": "1.0.1",
+                       "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
+                       "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/workbox-build/node_modules/json-schema-traverse": {
+                       "version": "1.0.0",
+                       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+                       "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/workbox-build/node_modules/magic-string": {
+                       "version": "0.25.9",
+                       "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+                       "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "sourcemap-codec": "^1.4.8"
+                       }
+               },
+               "node_modules/workbox-build/node_modules/pretty-bytes": {
+                       "version": "5.6.0",
+                       "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
+                       "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "engines": {
+                               "node": ">=6"
+                       },
+                       "funding": {
+                               "url": "https://github.com/sponsors/sindresorhus"
+                       }
+               },
+               "node_modules/workbox-build/node_modules/rollup": {
+                       "version": "2.79.2",
+                       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
+                       "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "bin": {
+                               "rollup": "dist/bin/rollup"
+                       },
+                       "engines": {
+                               "node": ">=10.0.0"
+                       },
+                       "optionalDependencies": {
+                               "fsevents": "~2.3.2"
+                       }
+               },
+               "node_modules/workbox-cacheable-response": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.3.0.tgz",
+                       "integrity": "sha512-eAFERIg6J2LuyELhLlmeRcJFa5e16Mj8kL2yCDbhWE+HUun9skRQrGIFVUagqWj4DMaaPSMWfAolM7XZZxNmxA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-core": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-core": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.3.0.tgz",
+                       "integrity": "sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/workbox-expiration": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.3.0.tgz",
+                       "integrity": "sha512-lpnSSLp2BM+K6bgFCWc5bS1LR5pAwDWbcKt1iL87/eTSJRdLdAwGQznZE+1czLgn/X05YChsrEegTNxjM067vQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "idb": "^7.0.1",
+                               "workbox-core": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-google-analytics": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.3.0.tgz",
+                       "integrity": "sha512-ii/tSfFdhjLHZ2BrYgFNTrb/yk04pw2hasgbM70jpZfLk0vdJAXgaiMAWsoE+wfJDNWoZmBYY0hMVI0v5wWDbg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-background-sync": "7.3.0",
+                               "workbox-core": "7.3.0",
+                               "workbox-routing": "7.3.0",
+                               "workbox-strategies": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-navigation-preload": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.3.0.tgz",
+                       "integrity": "sha512-fTJzogmFaTv4bShZ6aA7Bfj4Cewaq5rp30qcxl2iYM45YD79rKIhvzNHiFj1P+u5ZZldroqhASXwwoyusnr2cg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-core": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-precaching": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.3.0.tgz",
+                       "integrity": "sha512-ckp/3t0msgXclVAYaNndAGeAoWQUv7Rwc4fdhWL69CCAb2UHo3Cef0KIUctqfQj1p8h6aGyz3w8Cy3Ihq9OmIw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-core": "7.3.0",
+                               "workbox-routing": "7.3.0",
+                               "workbox-strategies": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-range-requests": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.3.0.tgz",
+                       "integrity": "sha512-EyFmM1KpDzzAouNF3+EWa15yDEenwxoeXu9bgxOEYnFfCxns7eAxA9WSSaVd8kujFFt3eIbShNqa4hLQNFvmVQ==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-core": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-recipes": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.3.0.tgz",
+                       "integrity": "sha512-BJro/MpuW35I/zjZQBcoxsctgeB+kyb2JAP5EB3EYzePg8wDGoQuUdyYQS+CheTb+GhqJeWmVs3QxLI8EBP1sg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-cacheable-response": "7.3.0",
+                               "workbox-core": "7.3.0",
+                               "workbox-expiration": "7.3.0",
+                               "workbox-precaching": "7.3.0",
+                               "workbox-routing": "7.3.0",
+                               "workbox-strategies": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-routing": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.3.0.tgz",
+                       "integrity": "sha512-ZUlysUVn5ZUzMOmQN3bqu+gK98vNfgX/gSTZ127izJg/pMMy4LryAthnYtjuqcjkN4HEAx1mdgxNiKJMZQM76A==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-core": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-strategies": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.3.0.tgz",
+                       "integrity": "sha512-tmZydug+qzDFATwX7QiEL5Hdf7FrkhjaF9db1CbB39sDmEZJg3l9ayDvPxy8Y18C3Y66Nrr9kkN1f/RlkDgllg==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-core": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-streams": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.3.0.tgz",
+                       "integrity": "sha512-SZnXucyg8x2Y61VGtDjKPO5EgPUG5NDn/v86WYHX+9ZqvAsGOytP0Jxp1bl663YUuMoXSAtsGLL+byHzEuMRpw==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "workbox-core": "7.3.0",
+                               "workbox-routing": "7.3.0"
+                       }
+               },
+               "node_modules/workbox-sw": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.3.0.tgz",
+                       "integrity": "sha512-aCUyoAZU9IZtH05mn0ACUpyHzPs0lMeJimAYkQkBsOWiqaJLgusfDCR+yllkPkFRxWpZKF8vSvgHYeG7LwhlmA==",
+                       "dev": true,
+                       "license": "MIT"
+               },
+               "node_modules/workbox-window": {
+                       "version": "7.3.0",
+                       "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.3.0.tgz",
+                       "integrity": "sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==",
+                       "dev": true,
+                       "license": "MIT",
+                       "dependencies": {
+                               "@types/trusted-types": "^2.0.2",
+                               "workbox-core": "7.3.0"
+                       }
+               },
                "node_modules/wrappy": {
                        "version": "1.0.2",
                        "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
index 525fbe0527bfe36010444b65467837be33a12a6b..0eab2e56efa76c1e84938a1ea9047d8b4d50da4f 100644 (file)
@@ -17,6 +17,7 @@
                "@sveltejs/kit": "^2.0.0",
                "@sveltejs/vite-plugin-svelte": "^4.0.0",
                "@types/bootstrap": "^5.2.10",
+               "@vite-pwa/sveltekit": "^1.0.0",
                "eslint": "^9.7.0",
                "eslint-config-prettier": "^9.1.0",
                "eslint-plugin-svelte": "^2.36.0",
@@ -29,7 +30,8 @@
                "svelte-fa": "^4.0.3",
                "typescript": "^5.0.0",
                "typescript-eslint": "^8.0.0",
-               "vite": "^5.0.3"
+               "vite": "^5.0.3",
+               "vite-plugin-mkcert": "^1.17.8"
        },
        "dependencies": {
                "@emoji-mart/data": "^1.2.1",
index 1391f884880d6f26b9914504d3dcfaf72bf21de7..6acca33e99f1b6cc59084996bc723b0b773244dd 100644 (file)
@@ -3,6 +3,11 @@
        <head>
                <meta charset="utf-8" />
                <link rel="icon" href="%sveltekit.assets%/favicon.svg" />
+               <link rel="manifest" href="/manifest.webmanifest" />
+               <link rel="apple-touch-icon" href="/icons/icon-180.png">
+               <meta name="theme-color" content="#0d6efd" />
+               <meta name="apple-mobile-web-app-capable" content="yes" />
+               <meta name="apple-mobile-web-app-status-bar-style" content="default" />
                <meta name="viewport" content="width=device-width, initial-scale=1" />
                %sveltekit.head%
        </head>
diff --git a/frontend/src/i18n/de.json b/frontend/src/i18n/de.json
new file mode 100644 (file)
index 0000000..3f24c42
--- /dev/null
@@ -0,0 +1,417 @@
+{
+  "aLookBack": {
+    "header_X_years_ago": "{years_old, plural, one {Vor {years_old} Jahr} other {Vor {years_old} Jahren}}",
+    "open": "Öffnen",
+    "Year_one_letter": "J"
+  },
+  "calendar": {
+    "button_bookmark": "Lesezeichen",
+    "button_today": "Heute",
+    "day_short": {
+      "friday": "Fr",
+      "monday": "Mo",
+      "saturday": "Sa",
+      "sunday": "So",
+      "thursday": "Do",
+      "tuesday": "Di",
+      "wednesday": "Mi"
+    },
+    "toast": {
+      "error_bookmarking": "Fehler beim Markieren des Tages!"
+    }
+  },
+  "export": {
+    "dateFormat": "%W, %D.%M.%Y",
+    "entriesCount": "Anzahl der Einträge",
+    "exportedOn": "Exportiert am",
+    "exportedOnFormat": "02.01.2006 15:04:05",
+    "files": "Dateien",
+    "images": "Bilder",
+    "tags": "Tags",
+    "title": "DailyTxT Export",
+    "user": "Benutzer"
+  },
+  "fileList": {
+    "change_filename": "Dateinamen ändern",
+    "delete_file": "Datei löschen"
+  },
+  "files": {
+    "decrypting": "Wird entschlüsselt...",
+    "download": "Download",
+    "drop": {
+      "ready_to_upload": "{count, plural, one {{count} Datei kann hochgeladen werden} other {{count} Dateien können hochgeladen werden}}",
+      "release_to_upload": "Ablegen zum Hochladen",
+      "title": "Dateien hier ablegen"
+    },
+    "encrypting": "Wird verschlüsselt...",
+    "toast": {
+      "error_deleting": "Fehler beim Löschen einer Datei!",
+      "error_loading": "Fehler beim Download einer Datei!",
+      "error_saving": "Fehler beim Speichern einer Datei!"
+    },
+    "upload": "Upload"
+  },
+  "imageViewer": {
+    "download": "Download"
+  },
+  "log": {
+    "dropdown": {
+      "deleteDay": "Eintrag löschen",
+      "history": "Verlauf"
+    },
+    "load_images": "{amount, plural, one {{amount} Bild laden} other {{amount} Bilder laden}}",
+    "toast": {
+      "error_deleting_day": "Fehler beim Löschen des Tages!",
+      "error_loading": "Fehler beim Laden des Textes!",
+      "error_renaming_file": "Fehler beim Umbenennen der Datei",
+      "error_reordering_files": "Fehler beim Ändern der Reihenfolge der Dateien",
+      "error_saving": "Fehler beim Speichern des Textes!"
+    },
+    "written_on": "Geschrieben am:"
+  },
+  "login": {
+    "alert": {
+      "empty_fields": "Eingabefelder dürfen nicht leer sein!",
+      "login_failed": "Login fehlgeschlagen!<br />\nBitte Eingabedaten überprüfen.",
+      "passwords_do_not_match": "Passwörter stimmen nicht überein!",
+      "registration_allowed_until": "Registrierung temporär geöffnet bis {date_and_time} (Serverzeit).",
+      "registration_failed": "Registrierung fehlgeschlagen - bitte Fehlermeldungen analysieren!",
+      "registration_failed_with_message": "Registrierung fehlgeschlagen!<br />\nFehlermeldung: <i>{message}</i>",
+      "registration_not_allowed": "Registrierung ist derzeit nicht möglich!",
+      "registration_success": "Registrierung erfolgreich - bitte einloggen!<br/>\nWirf danach am besten einen Blick in die <b><u>Einstellungen</u></b>!"
+    },
+    "confirm_password": "Passwort bestätigen",
+    "create_account": "Benutzerkonto erstellen",
+    "create_account_info": "Groß- und Kleinschreibung sind beim Benutzernamen irrelevant! Es empfieht sich daher, einen Namen normal zu schreiben (z. B. \"Tom\"), sodass er z. B. beim Export korrekt angezeigt wird. Dann kannst du im Login dennoch \"tom\" benutzen.",
+    "login": "Login",
+    "migration": {
+      "account_info": "Bei der Migration wurden Backup-Codes (sofern vorhanden) ungültig gemacht und müssen neu erstellt werden!<br/>\nMache dich außerdem mit den neuen <b><u>Einstellungen</u></b> für deinen Account vertraut!<br/><br/>\nWenn alle Accounts fehlerfrei migriert wurden, dann können die \"alten\" Daten im Admin-Panel manuel gelöscht werden.",
+      "create_account": "Benutzerkonto anlegen",
+      "migrate_files": "Dateien migrieren",
+      "migrate_logs": "Einträge migrieren",
+      "migrate_templates": "Vorlagen migrieren",
+      "progress": "Fortschritt:",
+      "start_message": "Daten-Migration wurde gestartet. Dies kann einige Momente dauern.",
+      "success_message": "Migration wurde ohne erkannte Fehler abgeschlossen! Bitte Login erneut starten. <br />\nPrüfe anschließend, ob alle Daten korrekt migriert wurden.",
+      "warning": "Währenddessen die Seite nicht neu laden und nicht neu einloggen!"
+    },
+    "migration_completed_with_errors": "{error_count, plural, one {Migration wurde mit {error_count} erkannten Fehler abgeschlossen! Prüfe die Server-Logs für Details!<br />\nFalls der Login nicht funktioniert, oder die Daten fehlerhaft sind, so müssen die migrierten Daten händisch entfernt werden.} other {Migration wurde mit {error_count} erkannten Fehlern abgeschlossen! Prüfe die Server-Logs für Details!<br />\nFalls der Login nicht funktioniert, oder die Daten fehlerhaft sind, so müssen die migrierten Daten händisch entfernt werden.}}",
+    "password": "Passwort",
+    "toast": {
+      "account_deleted": "Benutzerkonto erfolgreich gelöscht.",
+      "login_expired": "Der Login ist abgelaufen. Bitte neu anmelden.",
+      "login_invalid": "Authentifizierung fehlgeschlagen. Bitte neu anmelden."
+    },
+    "username": "Benutzername"
+  },
+  "modal": {
+    "close": "Schließen",
+    "deleteDay": {
+      "bookmark": "Lesezeichen",
+      "button_close": "Schließen",
+      "button_delete": "Löschen",
+      "description": "Du löschst <b><u>sämtliche Daten</u></b> vom <b> <u>{day}.{month}.{year}</u></b>!",
+      "files": "{files, plural, one {1 Datei} other {{files} Dateien}}",
+      "history": "Verlauf",
+      "logEntry": "Tagebucheintrag",
+      "tags": "{tags, plural, one {{tags} Tag} other {{tags} Tags}}",
+      "thisIncludes": "Dies beinhaltet:",
+      "title": "Tag vollständig löschen?"
+    },
+    "deleteFile": {
+      "body": "Datei <u><b> {file}</b></u> wirklich löschen?",
+      "delete": "Löschen",
+      "title": "Datei löschen?"
+    },
+    "history": {
+      "description": "Mit <b>Speichern</b> machst du den angezeigten älteren Text wieder zum aktuellen Haupttext.",
+      "newer": "Neuer",
+      "older": "Älter",
+      "title": "Verlauf"
+    },
+    "save": "Speichern",
+    "tag": {
+      "color": "Farbe",
+      "emoji": "Emoji",
+      "name": "Name",
+      "no_emoji": "Kein Emoji ausgewählt...",
+      "preview": "Vorschau",
+      "select_emoji": "Emoji auswählen",
+      "title_edit": "Tag bearbeiten",
+      "title_new": "Neues Tag erstellen"
+    }
+  },
+  "read": {
+    "load_images": "{count, plural, one {{count} Bild laden ({size})} other {Alle {count} Bilder des Monats laden ({size})}}",
+    "no_entries": "Keine Einträge"
+  },
+  "reauth": {
+    "authentication_error": "Fehler bei der Authentifizierung",
+    "confirmButton": "Bestätigen",
+    "description": "Aus Sicherheitsgründen musst du dein Passwort erneut eingeben.",
+    "title": "Passwort bestätigen",
+    "wrong_password": "Falsches Passwort"
+  },
+  "search": {
+    "description": "Mit <span>Ctrl</span> + <span>F</span> wird das Suchfeld fokussiert.<br>\nDu kannst nach <b>Text</b>, <b>Dateinamen</b> und <b>Tags</b> suchen:<br>\n<ul>\n  <li><b><u>Text</u></b>: Bei Verwendung von mehreren Suchbegriffen gelten folgende Regeln:\n    <ul>\n      <li><b>EXAKT</b>: Setze den kompletten Suchbegriff in <u>doppelte Anführungszeichen</u>, um die exakte Wortfolge     zu suchen.</li>\n\t  <li><b>ODER</b>: Trenne Suchbegriffe mit <b>|</b>, um Einträge zu finden, bei denen mindestens ein Begriff verwendet wurde.</li>\n\t  <li><b>UND</b>: Trenne Suchbegriffe mit <u>Leerzeichen</u>, um Einträge zu finden, bei denen alle Begriffe verwendet wurden. Die Reihenfolge der Begriffe ist dabei irrelevant, genauso wie die Distanz zwischen den Begriffen.</li>\n\t</ul>\n  </li>\n  <li><b><u>Dateinamen</u></b>: Wenn der Suchbegriff nur aus <u>einem Wort</u> besteht, dann wird nicht nur nach Text, sondern auch nach Dateinamen gesucht.</li>\n  <li><b><u>Tags</u></b>: Der Suchbegriff muss mit <b>#</b> beginnen. Es wird nach jedem Datum gesucht, das mit dem Tag markiert ist.</li>\n</ul>",
+    "no_results": "Keine Ergebnisse",
+    "search": "Suche",
+    "toast": {
+      "error": "Fehler beim Suchen!"
+    }
+  },
+  "settings": {
+    "abort": "Abbrechen",
+    "about": "Über",
+    "about.changelog": "Änderungsprotokoll",
+    "about.current_version": "Aktuelle Version",
+    "about.donate": "Dir gefällt DailyTxT? Dann würde ich mich sehr über eine kleine Spende freuen! ❤️<br/>Entwicklung und Wartung des Tools kosten sehr viel Zeit. Danke! \uD83E\uDD70",
+    "about.latest_version": "Neueste Version",
+    "about.made_by": "Mit ❤️ gemacht von {creator}",
+    "about.source_code": "Quellcode",
+    "about.update_available": "Update verfügbar",
+    "about.update_notification": "Update-Benachrichtigung",
+    "about.version_info": "Hinweis: Diese automatische Versionsermittlung ist womöglich nicht immer korrekt.",
+    "account": "Benutzerkonto",
+    "admin": {
+      "authorized": "Admin-Zugang autorisiert",
+      "button_open_5_minutes": "Für 5 Minuten öffnen",
+      "button_refresh_status": "Status neu laden",
+      "cancel": "Abbrechen",
+      "check_password": "Passwort prüfen",
+      "confirm_delete": "Benutzerkonto wirklich löschen?",
+      "confirm_delete_old_data": "Wirklich löschen?",
+      "current_status": "Aktueller Status",
+      "delete": "Löschen",
+      "delete_account": "Benutzerkonto löschen",
+      "delete_old_data": "Alte Daten löschen",
+      "delete_old_data_warning": "Ich empfehle dringend, manuell ein <b><u>Backup</u></b> der alten Daten zu erstellen!",
+      "delete_warning": "Das Benutzerkonto wird vollständig und unwiederbringlich gelöscht!",
+      "disk_usage": "Speicherplatz",
+      "environment_variables": "Umgebungsvariablen",
+      "environment_variables_description": "Dies sind die Umgebungsvariablen, die beim Start von DailyTxT definiert wurden. Sie stehen vermutlich in der docker-compose Datei.",
+      "free_disk_space": "Verfügbarer Speicherplatz",
+      "hidden_for_security": "Aus Sicherheitsgründen versteckt",
+      "id": "ID",
+      "invalid_password": "Passwort falsch!",
+      "loading_users": "Benutzer werden geladen",
+      "login_description": "Das Admin Passwort wird serverseitig als Umgebungsvariable definiert!",
+      "login_error": "Unbekannter Fehler beim Prüfen des Passworts.",
+      "login_required": "Admin Passwort benötigt",
+      "logout": "Admin ausloggen",
+      "me": "Ich",
+      "no_environment_variables": "Keine Umgebungsvariablen gefunden",
+      "no_users": "Keine Benutzerkonten gefunden",
+      "old_data": "Daten vor der Migration",
+      "old_data_description": "Die Daten der alten DailyTxT Version 1.x.x liegen aktuell im Verzeichnis <code>old</code>.<br/>\nDer Ordner belegt <b>zusätzlich</b> zu den aktuell vorhandenen / migrierten Daten Speicherplatz. Wenn du sicher bist, dass alle unten aufgeführten User ihre Daten fehlerfrei migriert haben (und in der oberen Auflistung auftauchen), dann kannst du diese alten Daten auch löschen!",
+      "old_data_size": "Speicherplatz des Ordners <code>old</code>",
+      "old_users": "Benutzer vor der Migration",
+      "password": "Admin Passwort",
+      "refresh_users": "Benutzer neu laden",
+      "registration": "Registrierung",
+      "registration_allowed": "Erlaubt",
+      "registration_allowed_until": "Registrierung temporär geöffnet bis <strong>{date_and_time}</strong>.",
+      "registration_blocked": "Blockiert",
+      "registration_description": "Die Erstellung neuer Accounts ist aktuell standardmäßig deaktiviert (via Umgebungsvariable). Mit diesem Menü kann die Registrierung für 5 Minuten freigeschaltet werden. Anschließend wird sie automatisch wieder deaktiviert. Die Umgebungsvariable bleibt davon unberührt.",
+      "registration_open_error": "Fehler beim temporären Öffnen der Registrierung.",
+      "registration_status_error": "Fehler beim Überprüfen, ob die Registrierung erlaubt ist.",
+      "title": "Admin",
+      "toast_error_old_data_delete": "Fehler beim Löschen der alten Daten",
+      "toast_success_old_data_delete": "Alte Daten (vor der Migration) wurden gelöscht",
+      "total_disk_usage": "Belegter Speicherplatz",
+      "total_users": "Anzahl Benutzer",
+      "user_management": "Benutzerverwaltung",
+      "username": "Benutzername",
+      "warning_delete_self": "Das eigene Benutzerkonto sollte nicht hier gelöscht werden, sondern am besten innerhalb der \"Einstellungen\"."
+    },
+    "aLookBack": "Ein Blick zurück",
+    "aLookBack.description": "<li>Lege fest, aus welchen vergangenen Jahren Tagebucheinträge desselben Kalendertags angezeigt werden sollen.</li>\n<li>Gilt nur für den Schreibmodus.</li>\n<li>Beispiel: <code>1,5,10</code> sorgt dafür, dass du unter dem Textfeld noch die Einträge von vor 1 Jahr, vor 5 Jahren und vor 10 Jahren angezeigt bekommst (sofern vorhanden).</li>",
+    "ALookBack": {
+      "help_text": "Trage hier alle vergangenen Jahre ein, die angezeigt werden sollen. Beispiel: <code>1,5,10</code>. Benutze Komma zur Trennung, verzichte auf Leerzeichen.",
+      "input_placeholder": "Jahre, mit Komma getrennt",
+      "invalid_input": "Bitte nur Zahlen eingeben, die durch Kommas getrennt sind.",
+      "useIt": "Einträge desselben Tags aus der Vergangenheit anzeigen"
+    },
+    "appearance": "Aussehen",
+    "background": "Hintergrund",
+    "background_gradient": "Farbverlauf (wird bei jedem Seitenaufruf neu generiert)",
+    "background_monochrome": "Einfarbig",
+    "backup_codes": "Backup Codes",
+    "backup_codes.copy_button": "Codes kopieren",
+    "backup_codes.description": "<li>Backup-Codes funktionieren wie Einmal-Passwörter. Sie können immer anstelle des Passworts verwendet werden, allerdings sind sie jeweils nur einmal gültig und werden anschließend gelöscht.</li>\n<li>Es werden immer 6 Codes generiert, welche die vorherigen Codes (sofern vorhanden) ersetzen.</li>\n<li>Du musst dir die Codes nach der Erstellung direkt notieren, sie können nicht erneut angezeigt werden!</li>",
+    "backup_codes.error": "Fehler beim Erstellen der Backup-Codes! Vielleicht stimmt das Passwort nicht?",
+    "backup_codes.generate_button": "Backup Codes generieren",
+    "backup_codes.success": "<h6>Deine Backup-Codes:</h6>\n<p>Notiere dir die Codes, sie können nach dem Schließen dieses Fenstern nicht erneut angezeigt werden!</p>",
+    "change_username": "Benutzernamen ändern",
+    "change_username.button": "Benutzernamen ändern",
+    "change_username.current_username": "Aktueller Benutzername",
+    "change_username.description": "Hinweis zur Verwendung des Benutzernamens:<br/>\nGroß- und Kleinschreibung werden bei der Verwendung im Login nicht beachtet. Allerdings sieht ein korrekt geschriebener Name (z. B. \"Tom\" anstatt \"tom\") im Export oder ähnlichen Fällen schöner aus.",
+    "change_username.error": "Unbekannter Fehler",
+    "change_username.new_username": "Neuer Benutzername",
+    "change_username.success": "Benutzername wurde geändert",
+    "change_username.username_taken": "Benutzername wird bereits verwendet",
+    "close": "Schließen",
+    "dark_mode": "Dark",
+    "data": "Daten",
+    "delete": "Löschen",
+    "delete_account": "Benutzerkonto löschen",
+    "delete_account.confirm": "Bist du dir sicher, dass du dein Konto löschen möchtest? Dies kann nicht rückgängig gemacht werden!",
+    "delete_account.confirm_button": "Löschen bestätigen",
+    "delete_account.delete_button": "Benutzerkonto löschen",
+    "delete_account.description": "Dies löscht dein Konto und alle damit verbundenen Daten. Dies kann nicht rückgängig gemacht werden!",
+    "delete_account.password_incorrect": "Das eingegebene Passwort ist falsch!",
+    "delete_account.success": "Dein Konto wurde erfolgreich gelöscht!<br />\nDu solltest jetzt eigentlich automatisch ausgeloggt werden. Falls nicht, dann logge dich bitte sebst aus.",
+    "export": "Export",
+    "export.description": "Exportiere deine Einträge in einer formatierten HTML-Datei. Bilder werden wahlweise in der HTML eingebunden. Alle Dateien werden außerdem in einer Zip-Datei bereitgestellt.",
+    "export.end_date": "Bis:",
+    "export.export_button": "Exportieren",
+    "export.help_text": "<u>Hinweise:</u>\n<ul>\n\t<li>Die HTML wird keinen Verlauf der einzelnen Tage enthalten.</li>\n\t<li>Ein Re-Import ist nicht möglich. Diese Funktion dient nicht dem Backup, sondern rein dem Export, um eine einfach lesbare HTML-Datei zu erhalten.</li>\n</ul>",
+    "export.period": "Zeitraum",
+    "export.period_all": "Gesamter Zeitraum",
+    "export.period_invalid": "Das Startdatum muss vor dem Enddatum liegen!",
+    "export.period_variable": "Variabler Zeitraum",
+    "export.show_images": "Bilder in HTML anzeigen",
+    "export.show_images_description": "Bilder direkt unter dem Text anzeigen <em>(werden zudem immer als Link bereitgestellt)</em> ",
+    "export.show_tags": "Tags anzeigen",
+    "export.show_tags_description": "Tags in der HTML anzeigen",
+    "export.split": "Anzahl der HTML-Dokumente",
+    "export.split_aio": "Eine einzige HTML",
+    "export.split_month": "Eine HTML pro Monat",
+    "export.split_year": "Eine HTML pro Jahr",
+    "export.start_date": "Von:",
+    "functions": "Funktionen",
+    "images_description": "<ul>\n\t<li>\n\t\tBeim Laden eines Textes können hochgeladene Bilder (sofern vorhanden) automatisch geladen werden. <em>Erhöhter Datenverbrauch!</em>\n\t</li>\n\t<li>Alternativ wird ein Button zum Nachladen aller Bilder angezeigt.</li>\n</ul>",
+    "images_loading_default": "Bilder standardmäßig (auf jedem Gerät) automatisch laden",
+    "images_loading_per_device": "Für jedes Gerät einzeln festlegen, ob die Bilder automatisch geladen werden sollen",
+    "images_loading_this_device": "Bilder auf <b>diesem Gerät</b> automatisch laden",
+    "images_title": "Bilder automatisch laden",
+    "language": "Sprache",
+    "language_auto_detect": "Sprache anhand des Browsers ermitteln. Aktuell:",
+    "language_not_available": "Die Sprache <code>{browserLanguage}</code> ist nicht verfügbar. Es wird die Standardsprache <code>{defaultLanguage}</code> verwendet.",
+    "language.reload_info": "Manche Änderungen werden erst nach einem Neuladen der Seite sichtbar.",
+    "language_X_used": "wird verwendet",
+    "light_dark_auto_detect": "Modus automatisch erkennen. Aktuell:",
+    "light_dark_manual": "Modus manuell festlegen",
+    "light_dark_mode": "Light-/Dark-Modus",
+    "light_mode": "Light",
+    "password": {
+      "change_error": "Fehler beim Ändern des Passworts!",
+      "change_password_button": "Passwort ändern",
+      "confirm_new_password": "Neues Passwort bestätigen",
+      "confirm_password": "Passwort bestätigen",
+      "current_password": "Aktuelles Passwort",
+      "current_password_incorrect": "Aktuelles Passwort inkorrekt!",
+      "new_password": "Neues Passwort",
+      "passwords_dont_match": "Die neuen Passwörter stimmen nicht überein!",
+      "success": "Das Passwort wurde erfolgreich geändert!",
+      "success_backup_codes_warning": "Achtung: Backup-Codes wurden ungültig gemacht (sofern vorhanden), und müssen neu erstellt werden."
+    },
+    "reauth": {
+      "description": "Um die Sicherheit zu erhöhen, kann das Passwort bei jedem Seitenladen erneut abgefragt werden.",
+      "label": "Passwort bei jedem Seitenladen abfragen",
+      "title": "Passwort bei Seitenladen"
+    },
+    "save": "Speichern",
+    "security": "Sicherheit",
+    "security.change_password": "Passwort ändern",
+    "selectTimezone": "Zeitzone wählen",
+    "set_language_manually": "Sprache dauerhaft festlegen",
+    "statistics": {
+      "activityRate": "Du nutzt DailyTxT an {percent}% aller Tage seit dem ersten Eintrag",
+      "averageWordsPerLog": "{wordCount, plural, one {Durchschnittlich {wordCount} Wort pro Eintrag} other {Durchschnittlich {wordCount} Wörter pro Eintrag}}",
+      "bookmarked": "Markiert",
+      "bookmarkedDays": "{days, plural, one {<b>{days}</b> markierter Tag} other {<b>{days}</b> markierte Tage}}",
+      "bookpages": "{pages, plural, one {Du hast bereits {pages} Buchseite geschrieben (bei 300 Wörtern pro Seite)} other {Du hast bereits {pages} Buchseiten geschrieben (bei 300 Wörtern pro Seite)}}",
+      "dayCount": "{dayCount, plural, one {{dayCount} Tag} other {{dayCount} Tage}}",
+      "daysWithActivity": "{days, plural, one {<b>{days}</b> Tag mit Aktivität} other {<b>{days}</b> Tage mit Aktivität}}",
+      "error_loading_data": "Unbekannter Fehler beim Laden der Statistik",
+      "favoriteWritingDay": "Lieblings-Wochentag zum Schreiben",
+      "fileCount": "{fileCount, plural, one {{fileCount} Datei} other {{fileCount} Dateien}}",
+      "fileCountWithDiskUsage": "{fileCount, plural, one {<b>{fileCount}</b> Datei, die <b>{diskUsage}</b> belegt} other {<b>{fileCount}</b> Dateien, die <b>{diskUsage}</b> belegen}}",
+      "funFacts": "Fun Facts",
+      "legend": "Legende",
+      "loading_data": "Daten werden geladen",
+      "longestWritingStreak": "Längste Schreibserie",
+      "mostProductiveDay": "Produktivster Tag",
+      "no_data": "Noch keine Daten vorhanden",
+      "open": "Öffnen",
+      "tagUsedCount": "<b>{count}x</b> verwendet",
+      "title": "Statistik",
+      "toast_error_user_delete": "Fehler beim Löschen des Users",
+      "toast_success_user_delete": "Benutzer wurde gelöscht",
+      "total": "Insgesamt",
+      "wordCount": "{wordCount, plural, one {{wordCount} Wort} other {{wordCount} Wörter}}",
+      "wordCountTotal": "{wordCount, plural, one {<b>{wordCount}</b> Wort} other {<b>{wordCount}</b> Wörter}}",
+      "words": "Wörter"
+    },
+    "tags": "Tags",
+    "tags.delete_confirmation": "<b>Tag dauerhaft löschen?</b><br/>Dies kann einen Moment dauern, da jeder Eintrag nach potenziellen Verlinkungen durchsucht werden muss. Änderungen werden zudem u. U. erst nach einem Neuladen im Browser angezeigt.",
+    "tags.description": "Hier können Tags bearbeitet oder auch vollständig aus DailyTxT gelöscht werden.",
+    "tags.no_tags": "Es sind noch keine Tags vorhanden. Erstelle ein neues Tag im Schreibmodus.",
+    "template": {
+      "content_of_template": "Inhalt der Vorlage",
+      "name_of_template": "Name der Vorlage",
+      "save_template": "Vorlage speichern"
+    },
+    "templates": "Vorlagen",
+    "templates.create_new": "Neue Vorlage erstellen...",
+    "templates.delete_confirmation": "Vorlage <b>{template}</b> wirklich löschen?",
+    "timezone": "Zeitzone",
+    "timezone.auto_detect": "Zeitzone automatisch anhand des Browsers ermitteln.<br/>Aktuell: ",
+    "timezone.description": "Stelle die Zeitzone ein, die für den Timestamp (\"{written_on}\") genutzt werden soll.",
+    "timezone.help_text": "Wenn man auf Reisen ist, kann es sinnvoll sein, die Zeitzone anhand des Browsers zu ermitteln. Dann werden Datum und Uhrzeit am Zielort vorraussichtlich besser erkannt.<br />Wenn man hingegen zuhause im privaten Browser teils andere Zeitzonen (z. B. immer UTC) verwendet, kann es sinnvoll sein, hier eine bestimmte Zeitzone festzulegen.",
+    "timezone.manual": "Für dieses Benutzerkonto immer die folgende Zeitzone verwenden:",
+    "timezone.selected": "Ausgewählt:",
+    "title": "Einstellungen",
+    "toast": {
+      "delete_tag_error": "Fehler beim Löschen des Tags!",
+      "delete_template_error": "Fehler beim Löschen der Vorlage",
+      "delete_template_success": "Vorlage gelöscht",
+      "export_data_error": "Fehler beim Exportieren!",
+      "invalid_template_double": "Name der Vorlage existiert bereits!",
+      "invalid_template_empty": "Name oder Inhalt einer Vorlage dürfen nicht leer sein!",
+      "logout_error": "Fehler beim Logout",
+      "saved_edit_tag_error": "Fehler beim Speichern der Änderungen!",
+      "saved_edit_tag_success": "Änderungen wurden gespeichert!",
+      "saved_settings_error": "Fehler beim Speichern der Einstellungen!",
+      "saved_settings_success": "Einstellungen gespeichert",
+      "saved_template_success": "Vorlage gespeichert"
+    },
+    "unsaved_changes": "Ungespeicherte Änderungen",
+    "updates": {
+      "check_for_updates": "Benachrichtige mich über neue Versionen",
+      "include_test_versions": "Benachrichtige mich auch über neue Test-Versionen, die \"testing\" im Versions-Namen tragen. Diese können potenziell fehlerhaft sein - unbedingt davor ein Backup machen!"
+    }
+  },
+  "tags": {
+    "description": "Hier kannst du Tags zum ausgewählten Datum hinzufügen und entfernen, um deine Einträge zu kategorisieren. Ebenso kannst du hier neue Tags erstellen.<br/><br/>Mit <span>Ctrl</span> + <span>G</span> wird das Suchfeld fokussiert (nur am Desktop).<br/><br/>Um ein Tag zu ändern oder auch vollständig zu löschen, musst du in die Einstellungen wechseln.",
+    "hide_selector": "Tagauswahl schließen",
+    "input": "Tag...",
+    "new_tag": "Neu",
+    "no_tags_found": "Keine Tags gefunden...",
+    "tags": "Tags",
+    "toast": {
+      "error_adding": "Fehler beim Hinzufügen des Tags zum ausgewählten Datum!",
+      "error_removing": "Fehler beim Enfternen des Tags!",
+      "error_saving": "Fehler beim Erstellen des Tags!",
+      "error_saving_exists": "Tag-Name existiert bereits"
+    }
+  },
+  "template": {
+    "dropdown_insert": "Vorlage einfügen..."
+  },
+  "toast": {
+    "password": {
+      "available_backup_codes": "{count, plural, one {Noch {count} Backup-Code verfügbar!} other {Noch {count} Backup-Codes verfügbar!}}"
+    }
+  },
+  "weekdays": {
+    "friday": "Freitag",
+    "monday": "Montag",
+    "saturday": "Samstag",
+    "sunday": "Sonntag",
+    "thursday": "Donnerstag",
+    "tuesday": "Dienstag",
+    "wednesday": "Mittwoch"
+  }
+}
\ No newline at end of file
diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json
new file mode 100644 (file)
index 0000000..33b836c
--- /dev/null
@@ -0,0 +1,417 @@
+{
+  "aLookBack": {
+    "header_X_years_ago": "{years_old, plural, one {{years_old} year ago} other {{years_old} years ago}}",
+    "open": "Open",
+    "Year_one_letter": "Y"
+  },
+  "calendar": {
+    "button_bookmark": "Bookmark",
+    "button_today": "Today",
+    "day_short": {
+      "friday": "Fri",
+      "monday": "Mon",
+      "saturday": "Sat",
+      "sunday": "Sun",
+      "thursday": "Thu",
+      "tuesday": "Tue",
+      "wednesday": "Wed"
+    },
+    "toast": {
+      "error_bookmarking": "Error bookmarking the day!"
+    }
+  },
+  "export": {
+    "dateFormat": "%W, %M/%D/%Y",
+    "entriesCount": "Count of entries",
+    "exportedOn": "Exported on",
+    "exportedOnFormat": "01/02/2006 15:04:05",
+    "files": "Files",
+    "images": "Images",
+    "tags": "Tags",
+    "title": "DailyTxT Export",
+    "user": "User"
+  },
+  "fileList": {
+    "change_filename": "Rename file",
+    "delete_file": "Delete file"
+  },
+  "files": {
+    "decrypting": "Decrypting...",
+    "download": "Download",
+    "drop": {
+      "ready_to_upload": "{count, plural, one {{count} file can be uploaded} other {{count} files can be uploaded}}",
+      "release_to_upload": "Drop to upload",
+      "title": "Drop files here"
+    },
+    "encrypting": "Encrypting...",
+    "toast": {
+      "error_deleting": "Error deleting a file!",
+      "error_loading": "Error downloading a file!",
+      "error_saving": "Error saving a file!"
+    },
+    "upload": "Upload"
+  },
+  "imageViewer": {
+    "download": "Download"
+  },
+  "log": {
+    "dropdown": {
+      "deleteDay": "Delete log",
+      "history": "History"
+    },
+    "load_images": "{amount, plural, one {{amount} load image} other {{amount} load images}}",
+    "toast": {
+      "error_deleting_day": "Error deleting the day!",
+      "error_loading": "Error loading the text!",
+      "error_renaming_file": "Error renaming the file",
+      "error_reordering_files": "Error changing the order of files",
+      "error_saving": "Error saving the text!"
+    },
+    "written_on": "Written on:"
+  },
+  "login": {
+    "alert": {
+      "empty_fields": "Fields must not be empty!",
+      "login_failed": "Login failed!<br />\nPlease check your input data.",
+      "passwords_do_not_match": "Passwords do not match!",
+      "registration_allowed_until": "Registration temporarily open until {date_and_time} (Server time).",
+      "registration_failed": "Registration failed - please analyze the error messages!",
+      "registration_failed_with_message": "Registration failed!<br />\nError message: <i>{message}</i>",
+      "registration_not_allowed": "Registration is currently not possible!",
+      "registration_success": "Registration successful - please log in!<br/>\nAfterwards, it's best to check out the <b><u>Settings</u></b>!"
+    },
+    "confirm_password": "Confirm Password",
+    "create_account": "Create Account",
+    "create_account_info": "Usernames are case-insensitive during login. It's recommended to write a name normally (e.g., \"Tom\") so it looks correct in exports. You can still log in with \"tom\".",
+    "login": "Login",
+    "migration": {
+      "account_info": "During the migration, backup codes (if available) were invalidated and need to be recreated!<br/>\nAdditionally, familiarize yourself with the new <b><u>settings</u></b> for your account!<br/><br/>\nOnce all accounts have been migrated without errors, the \"old\" data can be manually deleted in the admin panel.",
+      "create_account": "Create user account",
+      "migrate_files": "Migrate files",
+      "migrate_logs": "Migrate entries",
+      "migrate_templates": "Migrate templates",
+      "progress": "Progress:",
+      "start_message": "Data migration has started. This may take a few moments.",
+      "success_message": "Migration completed without any detected errors! Please restart the login. <br />\nThen check if all data has been migrated correctly.",
+      "warning": "In the meantime, do not reload the page and do not log in again!"
+    },
+    "migration_completed_with_errors": "{error_count, plural, one {Migration completed with {error_count} detected error! Please check the server logs for details!<br />If the login doesn't work, or the data is incorrect, the migrated data must be manually removed.} other {Migration completed with {error_count} detected errors! Please check the server logs for details!<br />If the login doesn't work, or the data is incorrect, the migrated data must be manually removed.}}",
+    "password": "Password",
+    "toast": {
+      "account_deleted": "Account successfully deleted.",
+      "login_expired": "Login has expired. Please log in again.",
+      "login_invalid": "Authentication failed. Please log in again."
+    },
+    "username": "Username"
+  },
+  "modal": {
+    "close": "Close",
+    "deleteDay": {
+      "bookmark": "Bookmark",
+      "button_close": "Close",
+      "button_delete": "Delete",
+      "description": "You delete <b><u>all data</u></b> of <b><u>{month}/{day}/{year}</u></b>!",
+      "files": "{files, plural, one {1 File} other {{files} Files}}",
+      "history": "History",
+      "logEntry": "Diary entry",
+      "tags": "{tags, plural, one {{tags} Tag} other {{tags} Tags}}",
+      "thisIncludes": "This includes:",
+      "title": "Delete day completely?"
+    },
+    "deleteFile": {
+      "body": "Really delete file <u><b> {file}</b></u>?",
+      "delete": "Delete",
+      "title": "Delete file?"
+    },
+    "history": {
+      "description": "By clicking <b>Save</b>, you make the shown older text the current main text.",
+      "newer": "Newer",
+      "older": "Older",
+      "title": "History"
+    },
+    "save": "Save",
+    "tag": {
+      "color": "Color",
+      "emoji": "Emoji",
+      "name": "Name",
+      "no_emoji": "No emoji selected...",
+      "preview": "Preview",
+      "select_emoji": "Select emoji",
+      "title_edit": "Edit tag",
+      "title_new": "Create new tag"
+    }
+  },
+  "read": {
+    "load_images": "{count, plural, one {Load {count} image of the month ({size})} other {Load all {count} images of the month ({size})}}",
+    "no_entries": "No entries"
+  },
+  "reauth": {
+    "authentication_error": "Authentication error",
+    "confirmButton": "Confirm",
+    "description": "For security reasons, you must enter your password again.",
+    "title": "Confirm Password",
+    "wrong_password": "Wrong password"
+  },
+  "search": {
+    "description": "With <span>Ctrl</span> + <span>F</span> the search field is focused.<br>\nYou can search for <b>text</b>, <b>file names</b>, and <b>tags</b>:<br>\n<ul>\n  <li><b><u>Text</u></b>: When using multiple search terms, the following rules apply:\n    <ul>\n      <li><b>EXACT</b>: Put the complete search term in <u>double quotation marks</u> to search for the exact sequence of words.</li>\n\t  <li><b>OR</b>: Separate search terms with <b>|</b> to find entries where at least one term is used.</li>\n\t  <li><b>AND</b>: Separate search terms with <u>spaces</u> to find entries where all terms are used. The order of the terms is irrelevant, as is the distance between them.</li>\n\t</ul>\n  </li>\n  <li><b><u>File names</u></b>: If the search term consists of <u>one word</u>, then it will search not only for text, but also for file names.</li>\n  <li><b><u>Tags</u></b>: The search term must start with <b>#</b>. It will search for every item tagged with the tag.</li>\n</ul>",
+    "no_results": "No results",
+    "search": "Search",
+    "toast": {
+      "error": "Error during search!"
+    }
+  },
+  "settings": {
+    "abort": "Cancel",
+    "about": "About",
+    "about.changelog": "Changelog",
+    "about.current_version": "Current version",
+    "about.donate": "Do you enjoy DailyTxT? Then I would be very happy with a little donation! ❤️<br/>Development and maintenance of the tool take a lot of time. Thank you! \uD83E\uDD70",
+    "about.latest_version": "Latest version",
+    "about.made_by": "Made with ❤️ by {creator}",
+    "about.source_code": "Source code",
+    "about.update_available": "Update available",
+    "about.update_notification": "Update notification",
+    "about.version_info": "Note: This automatic version detection may not always be correct.",
+    "account": "User account",
+    "admin": {
+      "authorized": "Admin access authorized",
+      "button_open_5_minutes": "Open for 5 minutes",
+      "button_refresh_status": "Refresh status",
+      "cancel": "Cancel",
+      "check_password": "Check password",
+      "confirm_delete": "Really delete user account?",
+      "confirm_delete_old_data": "Really delete?",
+      "current_status": "Current status",
+      "delete": "Delete",
+      "delete_account": "Delete user account",
+      "delete_old_data": "Delete old data",
+      "delete_old_data_warning": "I strongly recommend creating a <b><u>backup</u></b> of the old data manually!",
+      "delete_warning": "The user account will be completely and permanently deleted!",
+      "disk_usage": "Disk usage",
+      "environment_variables": "Environment variables",
+      "environment_variables_description": "These are the environment variables that were defined when DailyTxT started. They are probably found in the docker-compose file.",
+      "free_disk_space": "Free disk space",
+      "hidden_for_security": "Hidden for security reasons",
+      "id": "ID",
+      "invalid_password": "Invalid password!",
+      "loading_users": "Loading users",
+      "login_description": "The admin password is defined server-side as an environment variable!",
+      "login_error": "Unknown error when checking the password.",
+      "login_required": "Admin password required",
+      "logout": "Log out admin",
+      "me": "Me",
+      "no_environment_variables": "No environment variables found",
+      "no_users": "No user accounts found",
+      "old_data": "Data before migration",
+      "old_data_description": "The data of the old DailyTxT version 1.x.x is currently located in the <code>old</code> directory.<br/>\nThe folder occupies storage space <b>in addition</b> to the currently available/migrated data. If you are sure that all users listed below have migrated their data without errors (and appear in the list above), then you can delete this old data as well!",
+      "old_data_size": "Disk usage of folder <code>old</code>",
+      "old_users": "Users before migration",
+      "password": "Admin password",
+      "refresh_users": "Reload users",
+      "registration": "Registration",
+      "registration_allowed": "Allowed",
+      "registration_allowed_until": "Registration temporarily open until <strong>{date_and_time}</strong>.",
+      "registration_blocked": "Blocked",
+      "registration_description": "The creation of new accounts is currently disabled by default (via environment variable). With this menu, registration can be enabled for 5 minutes. Afterwards, it will automatically be disabled again. The environment variable remains unchanged.",
+      "registration_open_error": "Error when temporarily opening the registration.",
+      "registration_status_error": "Error checking if registration is allowed.",
+      "title": "Admin",
+      "toast_error_old_data_delete": "Error deleting old data",
+      "toast_success_old_data_delete": "Old data (before migration) has been deleted",
+      "total_disk_usage": "Used disk space",
+      "total_users": "Total users",
+      "user_management": "User management",
+      "username": "Username",
+      "warning_delete_self": "Your own user account should not be deleted here, but preferably within the \"Settings\"."
+    },
+    "aLookBack": "A look back",
+    "aLookBack.description": "<li>Decide from which past years diary entries of the same calendar day should be displayed.</li>\n<li>Only applies to write mode.</li>\n<li>Example: <code>1,5,10</code> shows entries from 1 year ago, 5 years ago, and 10 years ago below the text field (if available).</li>",
+    "ALookBack": {
+      "help_text": "Enter all past years to be displayed here. Example: <code>1,5,10</code>. Use commas to separate, avoid spaces.",
+      "input_placeholder": "Years, separated by commas",
+      "invalid_input": "Please enter only numbers separated by commas.",
+      "useIt": "Show entries of the same day from the past"
+    },
+    "appearance": "Appearance",
+    "background": "Background",
+    "background_gradient": "Gradient (is newly generated on each page load)",
+    "background_monochrome": "Monochrome",
+    "backup_codes": "Backup codes",
+    "backup_codes.copy_button": "Copy codes",
+    "backup_codes.description": "<li>Backup codes work like one-time passwords. They can always be used instead of the password, but they are only valid once and are then deleted.</li>\n<li>6 codes are always generated, which replace the previous codes (if available).</li>\n<li>You must write down the codes immediately after creation; they cannot be shown again!</li>",
+    "backup_codes.error": "Error creating backup codes! Maybe the password is incorrect?",
+    "backup_codes.generate_button": "Generate backup codes",
+    "backup_codes.success": "<h6>Your backup codes:</h6>\n<p>Write down the codes; they cannot be displayed again after closing this window!</p>",
+    "change_username": "Change username",
+    "change_username.button": "Change username",
+    "change_username.current_username": "Current username",
+    "change_username.description": "Note about the username:<br/>\nCase is not considered when using it for login. However, a correctly written name (e.g., \"Tom\" instead of \"tom\") looks nicer in the export or similar situations.",
+    "change_username.error": "Unknown error",
+    "change_username.new_username": "New username",
+    "change_username.success": "Username has been changed",
+    "change_username.username_taken": "Username is already taken",
+    "close": "Close",
+    "dark_mode": "Dark",
+    "data": "Data",
+    "delete": "Delete",
+    "delete_account": "Delete user account",
+    "delete_account.confirm": "Are you sure you want to delete your account? This cannot be undone!",
+    "delete_account.confirm_button": "Confirm deletion",
+    "delete_account.delete_button": "Delete user account",
+    "delete_account.description": "This deletes your account and all associated data. This cannot be undone!",
+    "delete_account.password_incorrect": "The entered password is incorrect!",
+    "delete_account.success": "Your account has been deleted successfully!<br />\nYou should be logged out automatically. If not, please log out manually.",
+    "export": "Export",
+    "export.description": "Export your entries as a formatted HTML file. Images can optionally be embedded into the HTML. All files are also provided in a ZIP file.",
+    "export.end_date": "To:",
+    "export.export_button": "Export",
+    "export.help_text": "<u>Notes:</u>\n<ul>\n\t<li>The HTML will not include the history of individual days.</li>\n\t<li>Re-import is not possible. This function is not a backup but purely for export to obtain an easily readable HTML file.</li>\n</ul>",
+    "export.period": "Period",
+    "export.period_all": "Entire period",
+    "export.period_invalid": "The start date must be before the end date!",
+    "export.period_variable": "Variable period",
+    "export.show_images": "Show images in HTML",
+    "export.show_images_description": "Show images directly below the text <em>(they are also always provided as links)</em>",
+    "export.show_tags": "Show tags",
+    "export.show_tags_description": "Show tags in the HTML",
+    "export.split": "Number of HTML documents",
+    "export.split_aio": "Single HTML",
+    "export.split_month": "One HTML per month",
+    "export.split_year": "One HTML per year",
+    "export.start_date": "From:",
+    "functions": "Functions",
+    "images_description": "<ul>\n\t<li>\n\t\tWhen loading a text, uploaded images (if available) can be loaded automatically. <em>Increased data usage!</em>\n\t</li>\n\t<li>Alternatively, a button is displayed to load all images.</li>\n</ul>",
+    "images_loading_default": "Automatically load images by default (on every device)",
+    "images_loading_per_device": "Decide for each device whether images should be loaded automatically",
+    "images_loading_this_device": "Automatically load images on <b>this device</b>",
+    "images_title": "Automatically load images",
+    "language": "Language",
+    "language_auto_detect": "Determine language based on the browser. Currently:",
+    "language_not_available": "The language <code>{browserLanguage}</code> is not available. The default language <code>{defaultLanguage}</code> is used.",
+    "language.reload_info": "Some changes only become visible after reloading the page.",
+    "language_X_used": "is used",
+    "light_dark_auto_detect": "Detect mode automatically. Currently:",
+    "light_dark_manual": "Set mode manually",
+    "light_dark_mode": "Light/Dark mode",
+    "light_mode": "Light",
+    "password": {
+      "change_error": "Error changing the password!",
+      "change_password_button": "Change password",
+      "confirm_new_password": "Confirm new password",
+      "confirm_password": "Confirm Password",
+      "current_password": "Current password",
+      "current_password_incorrect": "Current password incorrect!",
+      "new_password": "New password",
+      "passwords_dont_match": "The new passwords do not match!",
+      "success": "Password changed successfully!",
+      "success_backup_codes_warning": "Attention: Backup codes were invalidated (if available) and must be recreated."
+    },
+    "reauth": {
+      "description": "To enhance security, the password may be requested again on each page load.",
+      "label": "Request password on each page load",
+      "title": "Password on page load"
+    },
+    "save": "Save",
+    "security": "Security",
+    "security.change_password": "Change password",
+    "selectTimezone": "Select timezone",
+    "set_language_manually": "Set language permanently",
+    "statistics": {
+      "activityRate": "You use DailyTxT on {percent}% of all days since the first entry",
+      "averageWordsPerLog": "{wordCount, plural, one {On average {wordCount} word per entry} other {On average {wordCount} words per entry}}",
+      "bookmarked": "Bookmarked",
+      "bookmarkedDays": "{days, plural, one {<b>{days}</b> bookmarked day} other {<b>{days}</b> bookmarked days}}",
+      "bookpages": "{pages, plural, one {You've already written {pages} book page (at 300 words per page)} other {You've already written {pages} book pages (at 300 words per page)}}",
+      "dayCount": "{dayCount, plural, one {{dayCount} day} other {{dayCount} days}}",
+      "daysWithActivity": "{days, plural, one {<b>{days}</b> day with activity} other {<b>{days}</b> days with activity}}",
+      "error_loading_data": "Unknown error while loading statistics",
+      "favoriteWritingDay": "Favorite weekday for writing",
+      "fileCount": "{fileCount, plural, one {{fileCount} File} other {{fileCount} Files}}",
+      "fileCountWithDiskUsage": "{fileCount, plural, one {<b>{fileCount}</b> file occupying <b>{diskUsage}</b>} other {<b>{fileCount}</b> files occupying <b>{diskUsage}</b>}}",
+      "funFacts": "Fun facts",
+      "legend": "Legend",
+      "loading_data": "Loading data",
+      "longestWritingStreak": "Longest writing streak",
+      "mostProductiveDay": "Most productive day",
+      "no_data": "No data yet",
+      "open": "Open",
+      "tagUsedCount": "Used <b>{count}x</b>",
+      "title": "Statistics",
+      "toast_error_user_delete": "Error deleting user",
+      "toast_success_user_delete": "User deleted",
+      "total": "Total",
+      "wordCount": "{wordCount, plural, one {{wordCount} Word} other {{wordCount} Words}}",
+      "wordCountTotal": "{wordCount, plural, one {<b>{wordCount}</b> word} other {<b>{wordCount}</b> words}}",
+      "words": "Words"
+    },
+    "tags": "Tags",
+    "tags.delete_confirmation": "<b>Delete tag permanently?</b><br/>This may take a moment because each entry must be searched for potential links. Changes may only become visible after a page reload.",
+    "tags.description": "Here you can edit tags or delete them completely from DailyTxT.",
+    "tags.no_tags": "No tags are available yet. Create a new tag in write mode.",
+    "template": {
+      "content_of_template": "Content of the template",
+      "name_of_template": "Name of the template",
+      "save_template": "Save template"
+    },
+    "templates": "Templates",
+    "templates.create_new": "Create new template...",
+    "templates.delete_confirmation": "Really delete template <b>{template}</b>?",
+    "timezone": "Timezone",
+    "timezone.auto_detect": "Automatically determine timezone based on the browser.<br/>Currently: ",
+    "timezone.description": "Set the timezone to be used for the timestamp (\"{written_on}\").",
+    "timezone.help_text": "When traveling, it can be useful to determine the timezone based on the browser. Then the date and time at the destination will likely be recognized better.<br />If, on the other hand, you use different timezones at home in a private browser (e.g., always UTC), it can be useful to set a specific timezone here.",
+    "timezone.manual": "Always use the following timezone for this user account:",
+    "timezone.selected": "Selected:",
+    "title": "Settings",
+    "toast": {
+      "delete_tag_error": "Error deleting the tag!",
+      "delete_template_error": "Error deleting the template",
+      "delete_template_success": "Template deleted",
+      "export_data_error": "Error exporting!",
+      "invalid_template_double": "Template name already exists!",
+      "invalid_template_empty": "Name or content of a template must not be empty!",
+      "logout_error": "Error during logout",
+      "saved_edit_tag_error": "Error saving changes!",
+      "saved_edit_tag_success": "Changes have been saved!",
+      "saved_settings_error": "Error saving the settings!",
+      "saved_settings_success": "Settings saved",
+      "saved_template_success": "Template saved"
+    },
+    "unsaved_changes": "Unsaved changes",
+    "updates": {
+      "check_for_updates": "Notify me about new versions",
+      "include_test_versions": "Also notify me about new test versions that contain \"testing\" in the version name. These may be faulty — be sure to make a backup first!"
+    }
+  },
+  "tags": {
+    "description": "Here you can add and remove tags for the selected date to categorize your entries. You can also create new tags here.<br/><br/>With <span>Ctrl</span> + <span>G</span> the search field is focused (desktop only).<br/><br/> To change a tag or delete it entirely, you must switch to the settings.",
+    "hide_selector": "Close tag selector",
+    "input": "Tag...",
+    "new_tag": "New",
+    "no_tags_found": "No tags found...",
+    "tags": "Tags",
+    "toast": {
+      "error_adding": "Error adding the tag to the selected date!",
+      "error_removing": "Error removing the tag!",
+      "error_saving": "Error creating the tag!",
+      "error_saving_exists": "Tag name already exists"
+    }
+  },
+  "template": {
+    "dropdown_insert": "Insert template..."
+  },
+  "toast": {
+    "password": {
+      "available_backup_codes": "{count, plural, one {Still {count} backup code available!} other {Still {count} backup codes available!}}"
+    }
+  },
+  "weekdays": {
+    "friday": "Friday",
+    "monday": "Monday",
+    "saturday": "Saturday",
+    "sunday": "Sunday",
+    "thursday": "Thursday",
+    "tuesday": "Tuesday",
+    "wednesday": "Wednesday"
+  }
+}
\ No newline at end of file
diff --git a/frontend/src/i18n/fr.json b/frontend/src/i18n/fr.json
new file mode 100644 (file)
index 0000000..6cd7e02
--- /dev/null
@@ -0,0 +1,167 @@
+{
+  "aLookBack": {
+    "header_X_years_ago": "{years_old, plural, one {Il y a {years_old} an} other {Il y a {years_old} ans}}",
+    "open": "Ouvrir",
+    "Year_one_letter": "A"
+  },
+  "calendar": {
+    "button_bookmark": "Marque-page",
+    "button_today": "Aujourd'hui",
+    "day_short": {
+      "friday": "Ven",
+      "monday": "Lun",
+      "saturday": "Sam",
+      "sunday": "Dim",
+      "thursday": "Jeu",
+      "tuesday": "Mar",
+      "wednesday": "Mer"
+    },
+    "toast": {
+      "error_bookmarking": "Erreur lors du marquage du jour!"
+    }
+  },
+  "export": {
+    "tags": "Tags"
+  },
+  "files": {
+    "encrypting": "Cryptage en cours...",
+    "toast": {
+      "error_deleting": "Erreur lors de la suppression d'un fichier !",
+      "error_loading": "Erreur lors du téléchargement d'un fichier !",
+      "error_saving": "Erreur lors de l'enregistrement d'un fichier !"
+    },
+    "upload": "Téléverser"
+  },
+  "log": {
+    "dropdown": {
+      "deleteDay": "Supprimer l'entrée",
+      "history": "Historique"
+    },
+    "load_images": "{amount, plural, one {# image charger} other {# images charger} }",
+    "toast": {
+      "error_deleting_day": "Erreur lors de la suppression du jour!",
+      "error_loading": "Erreur lors du chargement du texte !",
+      "error_saving": "Erreur lors de l'enregistrement du texte !"
+    },
+    "written_on": "Écrit le :"
+  },
+  "login": {
+    "alert": {
+      "empty_fields": "Les champs de saisie ne doivent pas être vides !",
+      "login_failed": "Échec de la connexion !<br />\nVeuillez vérifier les données saisies.",
+      "passwords_do_not_match": "Les mots de passe ne correspondent pas !",
+      "registration_allowed_until": "Enregistrement temporairement ouvert jusqu'à {date_and_time} (heure du serveur).",
+      "registration_failed": "Échec de l'enregistrement - veuillez analyser les messages d'erreur!",
+      "registration_failed_with_message": "Échec de l'enregistrement!<br />\nMessage d'erreur: <i>{message}</i>",
+      "registration_not_allowed": "L'enregistrement n'est pas possible actuellement!",
+      "registration_success": "Inscription réussie - veuillez vous connecter !<br/>\nEnsuite, jetez un coup d'œil aux <b><u>Paramètres</u></b> !"
+    },
+    "confirm_password": "Confirmez le mot de passe",
+    "create_account": "Créer un compte utilisateur",
+    "login": "Connexion",
+    "migration": {
+      "account_info": "Lors de la migration, les codes de secours (le cas échéant) ont été invalidés et doivent être recréés !<br/>\nEn outre, familiarisez-vous avec les nouvelles <b><u>paramètres</u></b> de votre compte !<br/><br/>\nSi tous les comptes ont été migrés sans erreur, les \"anciennes\" données peuvent être supprimées manuellement dans le panneau d'administration.",
+      "create_account": "Créer un compte utilisateur",
+      "migrate_files": "Migrer les fichiers",
+      "migrate_logs": "Migrer les entrées",
+      "migrate_templates": "Migrer les modèles",
+      "progress": "Progrès:",
+      "start_message": "La migration des données a commencé. Cela peut prendre quelques instants.",
+      "success_message": "La migration a été effectuée avec succès sans erreurs détectées ! Veuillez relancer la connexion. <br />\nEnsuite, vérifiez que toutes les données ont été migrées correctement.",
+      "warning": "Pendant ce temps, ne rechargez pas la page et ne vous reconnectez pas !"
+    },
+    "migration_completed_with_errors": "{error_count, plural, one {\"La migration s'est terminée avec {error_count} erreur détectée ! Vérifiez les journaux du serveur pour plus de détails !<br />\nSi la connexion ne fonctionne pas, ou si les données sont incorrectes, les données migrées doivent être supprimées manuellement.\"} other {\"La migration s'est terminée avec {error_count} erreurs détectées ! Vérifiez les journaux du serveur pour plus de détails !<br />\nSi la connexion ne fonctionne pas, ou si les données sont incorrectes, les données migrées doivent être supprimées manuellement.\"} }",
+    "password": "Mot de passe",
+    "toast": {
+      "account_deleted": "Compte utilisateur supprimé avec succès.",
+      "login_expired": "La session a expiré. Veuillez vous reconnecter.",
+      "login_invalid": "Authentification échouée. Veuillez vous reconnecter."
+    },
+    "username": "Nom d'utilisateur"
+  },
+  "modal": {
+    "close": "Fermer",
+    "deleteFile": {
+      "body": "Supprimer vraiment le fichier <u><b> {file}</b></u>?",
+      "delete": "Supprimer",
+      "title": "Supprimer le fichier ?"
+    }
+  },
+  "read": {
+    "load_images": "{count, plural, one {Charger # image du mois ({size})} other {Charger toutes les # images du mois ({size})} }",
+    "no_entries": "Aucune entrée"
+  },
+  "reauth": {
+    "title": "Confirmez le mot de passe"
+  },
+  "search": {
+    "description": "Avec <span>Ctrl</span> + <span>F</span>, le champ de recherche est focalisé.<br>\nVous pouvez chercher par <b>texte</b>, <b>nom de fichier</b> et <b>tags</b> :<br>\n<ul>\n  <li><b><u>Texte</u></b> : Lors de l'utilisation de plusieurs termes de recherche, les règles suivantes s'appliquent :\n    <ul>\n      <li><b>EXACT</b> : Mettez le terme de recherche complet entre <u>guillemets doubles</u> pour rechercher la séquence exacte de mots.</li>\n\t  <li><b>OU</b> : Séparez les termes de recherche avec <b>|</b> pour trouver les entrées contenant au moins un des termes.</li>\n\t  <li><b>ET</b> : Séparez les termes de recherche avec un <u>espace</u> pour trouver les entrées contenant tous les termes. L'ordre des termes est sans importance, de même que la distance entre les termes.</li>\n\t</ul>\n  </li>\n  <li><b><u>Nom de fichier</u></b> : Si le terme de recherche ne comprend qu'<u>un seul mot</u>, la recherche porte à la fois sur le texte et sur le nom du fichier.</li>\n  <li><b><u>Tags</u></b> : Le terme de recherche doit commencer par <b>#</b>. La recherche porte sur chaque entrée marquée par le tag.</li>\n</ul>",
+    "no_results": "Aucun résultat",
+    "search": "Rechercher",
+    "toast": {
+      "error": "Erreur lors de la recherche!"
+    }
+  },
+  "settings": {
+    "about": {
+      "donate": "Le DailyTxT vous plaît ? Alors, je serais ravi d'un petit don ! ❤️<br/>Le développement et la maintenance de cet outil demandent beaucoup de temps. Merci ! \uD83E\uDD70"
+    },
+    "account": "Compte utilisateur",
+    "admin": {
+      "authorized": "Accès administrateur autorisé",
+      "button_open_5_minutes": "Ouvrir pour 5 minutes",
+      "button_refresh_status": "Actualiser le statut",
+      "confirm_delete": "Supprimer le compte utilisateur vraiment ?",
+      "current_status": "Statut actuel",
+      "delete": "Supprimer",
+      "delete_account": "Supprimer le compte utilisateur",
+      "delete_warning": "Le compte utilisateur sera supprimé complètement et de manière irréversible !",
+      "environment_variables_description": "Voici les variables d'environnement définies lors du démarrage de DailyTxT. Elles se trouvent probablement dans le fichier docker-compose.",
+      "no_users": "Aucun compte utilisateur trouvé",
+      "registration": "Inscription",
+      "registration_allowed": "Autorisé",
+      "registration_allowed_until": "Enregistrement temporairement ouvert jusqu'à <strong>{date_and_time}</strong>.",
+      "registration_blocked": "Bloqué",
+      "registration_description": "La création de nouveaux comptes est actuellement désactivée par défaut (via variable d'environnement). Ce menu permet de débloquer l'enregistrement pendant 5 minutes. Ensuite, elle sera automatiquement désactivée à nouveau. La variable d'environnement reste inchangée.",
+      "registration_open_error": "Erreur lors de l'ouverture temporaire de l'enregistrement.",
+      "registration_status_error": "Erreur lors de la vérification si l'inscription est autorisée.",
+      "username": "Nom d'utilisateur",
+      "warning_delete_self": "Le compte utilisateur ne doit pas être supprimé ici, mais de préférence dans les \"paramètres\"."
+    },
+    "close": "Fermer",
+    "delete": "Supprimer",
+    "delete_account": "Supprimer le compte utilisateur",
+    "delete_account.delete_button": "Supprimer le compte utilisateur",
+    "language": {
+      "reload_info": "Certaines modifications ne seront visibles qu'après rechargement de la page."
+    },
+    "password": {
+      "confirm_password": "Confirmez le mot de passe"
+    },
+    "reauth": {
+      "description": "Pour renforcer la sécurité, le mot de passe peut être à nouveau demandé à chaque chargement de page."
+    },
+    "statistics": {
+      "open": "Ouvrir"
+    },
+    "tags": "Tags",
+    "tags.no_tags": "Il n'existe pas encore de tags. Crée un nouveau tag en mode écriture.",
+    "timezone": {
+      "manual": "Utiliser toujours le fuseau horaire suivant pour ce compte utilisateur :"
+    }
+  },
+  "tags": {
+    "description": "Ici, tu peux ajouter et supprimer des tags pour la date sélectionnée afin de catégoriser tes entrées. Tu peux également créer de nouveaux tags ici.<br/><br/>Avec <span>Ctrl</span> + <span>G</span>, le champ de recherche est focalisé (uniquement sur le bureau).<br/><br/>Pour modifier ou supprimer complètement un tag, tu dois changer dans les paramètres",
+    "hide_selector": "Fermer la sélection des tags",
+    "input": "Étiquette...",
+    "new_tag": "Nouveau",
+    "no_tags_found": "Aucun tag trouvé...",
+    "tags": "Tags",
+    "toast": {
+      "error_adding": "Erreur lors de l'ajout du tag à la date sélectionnée !",
+      "error_removing": "Erreur lors de la suppression du tag!",
+      "error_saving": "Erreur lors de la création du tag!",
+      "error_saving_exists": "\"Le nom du tag existe déjà\""
+    }
+  }
+}
\ No newline at end of file
index 10ee6181e1f031319ae0a10c1cf3288b399b9eaf..3c0f2f003846ca476145bf9a4c077b5b751c8226 100644 (file)
@@ -1,5 +1,13 @@
-import { dev } from '$app/environment';
+import { dev, browser } from '$app/environment';
+import { base } from '$app/paths';
 
-export let API_URL = dev
-               ? `${window.location.origin.replace(/:5173.*$/gm, '')}:8000`
-               : window.location.pathname.replace(/\/+$/, '');
\ No newline at end of file
+// Base-aware API root:
+// - Dev: talk to backend on port 8000 at same host
+// - Prod: prefix with SvelteKit base (works for subpath deployments like /dailytxt)
+const apiPath = `${base}`.replace(/\/$/, '') + '/api';
+
+export const API_URL = browser
+  ? (dev
+      ? `${window.location.protocol}//${window.location.hostname}:8000/api`
+      : apiPath)
+  : apiPath;
\ No newline at end of file
index ad37747dbd6650868bacedea0ba8a365c847879c..801d8d84b51c359d1dd763fd36369a71d88ea23b 100644 (file)
@@ -42,7 +42,6 @@ function needsReauthentication() {
 }
 
 function generateNeonMesh(dark) {
-       /* const baseColors = ['#ff00ff', '#00ffff', '#ffea00', '#ff0080', '#00ff80', '#ff4500']; */
        const baseColors = ["#ff00ff", "#00ffff", "#ffea00", "#ff0080", "#00ff80", "#ff4500",
     "#ff1493", "#00ffcc", "#ff3333", "#66ff66", "#3399ff", "#ffcc00",
     "#ff6666", "#00ccff", "#cc33ff", "#33ffcc", "#ffff99", "#ff99ff",
index cc24e3d7c50a535b6f6abc9623aae7cf881d9486..ca8f0f1270ccbf9517ec8f25d8b93b4f02f7fa98 100644 (file)
                if ($settings.background === 'monochrome') {
                        document.querySelector('.background').style.background = '';
                        document.body.style.backgroundColor = $settings.monochromeBackgroundColor;
+                       document
+                               .querySelector('meta[name="theme-color"]')
+                               .setAttribute('content', $settings.monochromeBackgroundColor);
                } else if ($settings.background === 'gradient') {
                        document.body.style.backgroundColor = '';
                        generateNeonMesh($darkMode);
+                       document
+                               .querySelector('meta[name="theme-color"]')
+                               .setAttribute('content', $darkMode ? '#171717' : '#ffffff');
                }
        }
 
 
                                                                        <hr />
 
-                                                                       <span class="d-table mx-auto">{@html $t('settings.about.donate')}</span>
+                                                                       <span class="d-table mx-auto text-center"
+                                                                               >{@html $t('settings.about.donate')}</span
+                                                                       >
                                                                        <a
                                                                                class="d-block mx-auto mt-2"
                                                                                href="https://www.buymeacoffee.com/PhiTux"
        .mobile-settings-dropdown {
                box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
                border-radius: 0.5rem;
-               z-index: 6;
+               z-index: 20;
                backdrop-filter: blur(8px);
                background: rgba(255, 255, 255, 0.85);
        }
index b81889ad13c9f30a8e70d898f7ee178bf5b71c07..0bd38e510c5b745b3481805ef44c12b1a51caeb0 100644 (file)
@@ -1,5 +1,4 @@
 export const ssr = false;
-//export const prerender = false;
 
 export const load = ({ url }) => {
   const { pathname } = url
index ec3d8391ba6072316d1d0ab3dd64a6cbc8efa059..9090e38de1fdd2ae018bb7530a0f4c49ea19d26f 100644 (file)
@@ -11,6 +11,8 @@
        import { TolgeeProvider, Tolgee, DevTools, LanguageStorage } from '@tolgee/svelte';
        import { FormatIcu } from '@tolgee/format-icu';
        import { darkMode } from '$lib/settingsStore.js';
+       import { registerSW } from 'virtual:pwa-register';
+       import { base } from '$app/paths';
 
        const tolgee = Tolgee()
                .use(DevTools())
                .init({
                        availableLanguages: ['en', 'de', 'fr'],
                        defaultLanguage: 'en',
+                       staticData: {
+                               en: () => import('../i18n/en.json'),
+                               de: () => import('../i18n/de.json'),
+                               fr: () => import('../i18n/fr.json')
+                       },
 
                        // for development
                        apiUrl: import.meta.env.VITE_TOLGEE_API_URL,
        let inDuration = 150;
        let outDuration = 150;
 
+       // PWA install prompt state
+       let deferredInstallPrompt = $state(null);
+       let showInstallToast = $state(false);
+
        axios.interceptors.request.use((config) => {
                config.withCredentials = true;
                return config;
                if (page.url.pathname === '/login') {
                        generateNeonMesh($darkMode);
                }
+
+               // PWA auto-update with user prompt
+               const updateSW = registerSW({
+                       onNeedRefresh() {
+                               const toastEl = document.getElementById('toastPwaUpdate');
+                               if (!toastEl) return;
+                               toastEl.classList.remove('d-none');
+                               const toast = new bootstrap.Toast(toastEl, { autohide: false });
+                               toast.show();
+                               const btn = document.getElementById('btnPwaReload');
+                               btn?.addEventListener('click', () => updateSW(true));
+                       },
+                       onOfflineReady() {
+                               // not needed, we don't aim offline, skip toast
+                       }
+               });
+
+               // Detect standalone (already installed) and platforms where auto prompt won't show
+               const isStandalone =
+                       window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone;
+
+               // Capture the install prompt event (Android/Chrome etc.)
+               window.addEventListener('beforeinstallprompt', (e) => {
+                       // Prevent the mini-infobar and save for triggering later
+                       e.preventDefault();
+                       deferredInstallPrompt = e;
+                       if (!isStandalone) {
+                               showInstallToast = true;
+                               const toastEl = document.getElementById('toastPwaInstall');
+                               if (toastEl) {
+                                       const toast = new bootstrap.Toast(toastEl, { autohide: false });
+                                       toast.show();
+                               }
+                       }
+               });
+
+               // Hide install banner when app gets installed
+               window.addEventListener('appinstalled', () => {
+                       deferredInstallPrompt = null;
+                       showInstallToast = false;
+                       const toastEl = document.getElementById('toastPwaInstall');
+                       toastEl?.classList.add('d-none');
+               });
        });
 
+       async function installPWA() {
+               if (!deferredInstallPrompt) return;
+               deferredInstallPrompt.prompt();
+               try {
+                       await deferredInstallPrompt.userChoice;
+               } finally {
+                       // Only allow prompting once
+                       deferredInstallPrompt = null;
+                       showInstallToast = false;
+               }
+       }
+
        $effect(() => {
                if ($darkMode !== undefined) {
                        document.body.setAttribute('data-bs-theme', $darkMode ? 'dark' : 'light');
                </div>
 
                <div class="toast-container position-fixed bottom-0 end-0 p-3">
+                       {#if showInstallToast}
+                               <div
+                                       id="toastPwaInstall"
+                                       class="toast text-bg-primary"
+                                       role="alert"
+                                       aria-live="assertive"
+                                       aria-atomic="true"
+                               >
+                                       <div class="d-flex align-items-center">
+                                               <div class="toast-body">Install DailyTxT for a better app-like experience.</div>
+                                               <button
+                                                       id="btnPwaInstall"
+                                                       type="button"
+                                                       class="btn btn-light btn-sm me-2 m-2"
+                                                       onclick={installPWA}
+                                               >
+                                                       Install
+                                               </button>
+                                               <button
+                                                       type="button"
+                                                       class="btn-close me-2 m-auto"
+                                                       data-bs-dismiss="toast"
+                                                       aria-label="Close"
+                                                       onclick={() => (showInstallToast = false)}
+                                               ></button>
+                                       </div>
+                               </div>
+                       {/if}
+                       <div
+                               id="toastPwaUpdate"
+                               class="toast text-bg-info d-none"
+                               role="alert"
+                               aria-live="assertive"
+                               aria-atomic="true"
+                       >
+                               <div class="d-flex align-items-center">
+                                       <div class="toast-body">A new version is available.</div>
+                                       <button id="btnPwaReload" type="button" class="btn btn-light btn-sm me-2 m-2">
+                                               Reload
+                                       </button>
+                                       <button
+                                               type="button"
+                                               class="btn-close me-2 m-auto"
+                                               data-bs-dismiss="toast"
+                                               aria-label="Close"
+                                       ></button>
+                               </div>
+                       </div>
                        <div
                                id="toastAvailableBackupCodesWarning"
                                class="toast align-items-center {available_backup_codes > 3
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte
new file mode 100644 (file)
index 0000000..c911c3a
--- /dev/null
@@ -0,0 +1,10 @@
+<script>
+       import { onMount } from 'svelte';
+       import { goto } from '$app/navigation';
+       import { base } from '$app/paths';
+
+       onMount(() => {
+               // Redirect root to login, honoring the app base path (e.g., /dailytxt)
+               goto(`${base}/login`, { replaceState: true });
+       });
+</script>
diff --git a/frontend/src/routes/[...missing]/+page.svelte b/frontend/src/routes/[...missing]/+page.svelte
new file mode 100644 (file)
index 0000000..8ed2198
--- /dev/null
@@ -0,0 +1,12 @@
+<script>
+       import { goto } from '$app/navigation';
+       import { onMount } from 'svelte';
+       import { base } from '$app/paths';
+       onMount(() => {
+               // Catch-all: redirect to login (or change to `${base}/write` if desired)
+               goto(`${base}/login`, { replaceState: true });
+       });
+</script>
+
+<!-- Optionally show a brief message -->
+<div style="display:none"></div>
index 61166472f0e19f02fba1a9dc3bc4e5669f3cf929..645d30f184f1dcb271c4704b882770abf4595794 100644 (file)
                                                        <div class="alert alert-danger" role="alert">
                                                                {$t('login.alert.registration_not_allowed')}
                                                        </div>
-                                               {:else if until !== ''}
+                                               {:else if registration_allowed_temporary && until !== ''}
                                                        <div class="alert alert-warning" role="alert">
                                                                {@html $t('login.alert.registration_allowed_until', {
                                                                        date_and_time: new Date(until).toLocaleDateString($tolgee.getLanguage(), {
diff --git a/frontend/static/icons/icon-180.png b/frontend/static/icons/icon-180.png
new file mode 100644 (file)
index 0000000..3ddd384
Binary files /dev/null and b/frontend/static/icons/icon-180.png differ
diff --git a/frontend/static/icons/icon-192.png b/frontend/static/icons/icon-192.png
new file mode 100644 (file)
index 0000000..e824bf1
Binary files /dev/null and b/frontend/static/icons/icon-192.png differ
diff --git a/frontend/static/icons/icon-512.png b/frontend/static/icons/icon-512.png
new file mode 100644 (file)
index 0000000..0216067
Binary files /dev/null and b/frontend/static/icons/icon-512.png differ
diff --git a/frontend/static/manifest.webmanifest b/frontend/static/manifest.webmanifest
new file mode 100644 (file)
index 0000000..e216963
--- /dev/null
@@ -0,0 +1,12 @@
+{
+  "name": "DailyTxT",
+  "short_name": "DailyTxT",
+  "start_url": "/",
+  "display": "standalone",
+  "background_color": "#ffffff",
+  "theme_color": "#0d6efd",
+  "icons": [
+    { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any maskable" },
+    { "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any maskable" }
+  ]
+}
index 2eb02354543cdaeb268589de86b6fc777e39adae..875840f6cdf27fd85997a372ae60d64d55ec0ccd 100644 (file)
@@ -20,10 +20,14 @@ const config = {
                        // these options are set automatically — see below
                        pages: 'build',
                        assets: 'build',
-                       fallback: undefined,
+                       fallback: 'index.html',
                        precompress: false,
                        strict: true
-               })
+               }),
+               // Only prerender the SPA entry; all other routes are handled at runtime with the fallback
+               prerender: {
+                       entries: [] // SPA-only: don't prerender routes; serve single fallback index.html
+               }
        }
 };
 
index bbf8c7da43f0080dc6b9fb275f9583b7c17f1506..ce6fbd07a52713e6d01292c4a4da1ef8ac529f65 100644 (file)
@@ -1,6 +1,46 @@
 import { sveltekit } from '@sveltejs/kit/vite';
 import { defineConfig } from 'vite';
+import { SvelteKitPWA } from '@vite-pwa/sveltekit';
+import mkcert from 'vite-plugin-mkcert';
 
 export default defineConfig({
-       plugins: [sveltekit()]
+       plugins: [
+               sveltekit(),
+               mkcert(),
+               SvelteKitPWA({
+                       registerType: 'autoUpdate',
+                       scope: '/',
+                       manifest: {
+                               name: 'DailyTxT',
+                               short_name: 'DailyTxT',
+                               start_url: '/',
+                               display: 'standalone',
+                               background_color: '#ffffff',
+                               theme_color: '#0d6efd',
+                               icons: [
+                                       { src: '/icons/icon-192.png', sizes: '192x192', type: 'image/png', purpose: 'any maskable' },
+                                       { src: '/icons/icon-512.png', sizes: '512x512', type: 'image/png', purpose: 'any maskable' }
+                               ]
+                       },
+                       workbox: {
+                               // Don’t cache API calls; only precache built assets
+                               navigateFallbackDenylist: [/^\/users\//, /^\/logs\//, /^\/api\//],
+                               runtimeCaching: [
+                                       {
+                                               urlPattern: ({ url }) => url.origin === self.origin && url.pathname.startsWith('/build/'),
+                                               handler: 'CacheFirst',
+                                               options: {
+                                                       cacheName: 'app-assets',
+                                                       expiration: { maxEntries: 100, maxAgeSeconds: 60 * 60 * 24 * 30 },
+                                               }
+                                       }
+                               ]
+                       },
+                       devOptions: { enabled: true }
+               })
+       ],
+       server: {
+               port: 5173,
+               https: false
+       }
 });
diff --git a/nginx/default.conf b/nginx/default.conf
new file mode 100644 (file)
index 0000000..76e64c2
--- /dev/null
@@ -0,0 +1,40 @@
+# Nginx config to serve Svelte static site and proxy /api to Go backend
+
+server {
+    listen 80;
+    server_name _;
+
+    # Serve static frontend
+    root /usr/share/nginx/html;
+    index index.html;
+
+    # Gzip basic assets
+    gzip on;
+    gzip_types text/plain text/css application/javascript application/json image/svg+xml;
+    gzip_min_length 1024;
+
+    # Proxy API to backend
+    location /api/ {
+        proxy_pass http://127.0.0.1:8000$request_uri;
+        proxy_http_version 1.1;
+        proxy_set_header Host $host;
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header X-Forwarded-Proto $scheme;
+        proxy_read_timeout 600s; # allow long-running exports/uploads
+    }
+
+    # Service worker, manifest and assets should be served as-is
+    location = /manifest.webmanifest { try_files $uri =404; }
+
+    # Cache immutable client assets (SvelteKit outputs to /_app/ in the built site)
+    location /_app/ {
+        try_files $uri =404;
+        add_header Cache-Control "public, max-age=31536000, immutable";
+    }
+
+    # Everything else -> SPA fallback to index.html
+    location / {
+        try_files $uri /index.html;
+    }
+}
git clone https://git.99rst.org/PROJECT