feat(vcs): add support for jujutsu repositories
29 files changed,  +3101, -3628
M .gitignore
+11, -0
 1@@ -24,3 +24,14 @@ Thumbs.db
 2 # Vite
 3 vite.config.js.timestamp-*
 4 vite.config.ts.timestamp-*
 5+
 6+# Devenv
 7+.devenv*
 8+devenv.local.nix
 9+devenv.local.yaml
10+
11+# direnv
12+.direnv
13+
14+# pre-commit
15+.pre-commit-config.yaml
M README.md
+14, -11
 1@@ -1,6 +1,6 @@
 2 # Local Code Review (lcr)
 3 
 4-Local code review tool for AI-assisted development. Review uncommitted changes with a GitHub PR-like interface — inline comments, suggestions, questions — then approve & commit or send feedback to AI for another round.
 5+Local code review tool for AI-assisted development. Review uncommitted changes with a GitHub PR-like interface — inline comments, suggestions, questions — then approve (and commit in git, or simply approve in jj) or send feedback to AI for another round. Works with git and Jujutsu (jj) repositories.
 6 
 7 <p align="center">
 8   <img src="assets/preview.gif" alt="Local Code Review demo" width="800">
 9@@ -17,7 +17,7 @@ When developing with AI (vibe-coding), AI makes many changes at once. There's no
10 - **Submit a structured review** with all your feedback at once
11 - **Send to AI** — export review as JSON/Markdown, copy to clipboard, or send directly to Claude Code via built-in terminal
12 - **Outdated detection** — comments are automatically flagged when the underlying code changes
13-- **Approve & commit** when you're satisfied
14+- **Approve & commit** when you're satisfied (in jj repos, just approve — changes are autocommitted)
15 
16 ## Install
17 
18@@ -40,13 +40,15 @@ Opens a web UI at `http://localhost:5678` showing all uncommitted changes.
19 
20 ### Reviewing a project
21 
22-Run from inside any git repository:
23+Run from inside any git or jj repository:
24 
25 ```sh
26 lcr                    # Review current directory
27 lcr /path/to/project   # Review a different project
28 ```
29 
30+The repository type is auto-detected: if a `.jj/` directory is present (and the `jj` CLI is available), the Jujutsu client is used; otherwise git is used. This works for colocated repos too.
31+
32 ### Running multiple instances
33 
34 Each instance needs its own port:
35@@ -62,20 +64,20 @@ PORT=5679 lcr /path/to/other # Second project on port 5679
36 2. Click the `+` button on any line to add a comment
37 3. Choose comment type: **comment**, **suggestion**, or **question**
38 4. Add comments across multiple files
39-5. Approve individual files (checkbox in sidebar) — approved files are staged for git
40+5. Approve individual files (checkbox in sidebar) — in git repos approved files are staged; in jj repos approval is tracked by the tool
41 6. When done, click **Review** and choose:
42    - **Request Changes** — sends your review to Claude Code for another iteration
43-   - **Approve & Commit** — opens commit dialog with approved/all file options
44+   - **Approve & Commit** (git) / **Approve** (jj) — in git, opens the commit dialog; in jj, changes are autocommitted so the review is simply marked approved
45 
46 ### Diff scope
47 
48-- **Uncommitted** (default) — shows uncommitted changes vs HEAD
49-- **Worktree** — shows the full branch diff (all commits since the branch diverged from main/master/development, plus uncommitted changes)
50+- **Uncommitted** (default) — git: uncommitted changes vs HEAD; jj: changes in the working-copy commit `@` vs its parent (`jj diff -r @`). If `@` is a merge, jj diffs against the auto-merge of all parents.
51+- **Worktree** — git: the full branch diff (all commits since the branch diverged from main/master/development, plus uncommitted changes); jj: the diff from `trunk()` to `@`
52 
53 ### Diff modes
54 
55 - **Full Diff** — shows all changes in the current scope (staged + unstaged, or full branch)
56-- **Needs Review** — shows only unstaged changes, so you can focus on what hasn't been approved yet
57+- **Needs Review** — git: shows only unstaged changes; jj: shows only files that haven't been approved yet
58 
59 ### Export options
60 
61@@ -99,7 +101,7 @@ When AI makes changes after you've submitted a review, comments on lines that ch
62 ### File approval
63 
64 Click the checkbox next to any file in the sidebar to approve it. Approved files are:
65-- Staged in git (`git add`)
66+- git: staged (`git add`); jj: tracked as approved in memory (jj has no staging area)
67 - Shown with a strikethrough in the sidebar
68 - Excluded from the "Needs Review" diff mode
69 
70@@ -121,7 +123,7 @@ If an approved file is modified again, its approval status is reset.
71 | Variable | Default | Description |
72 |----------|---------|-------------|
73 | `PORT` | `5678` | HTTP server port |
74-| `LCR_REPO_DIR` | Current directory | Path to the git repository to review |
75+| `LCR_REPO_DIR` | Current directory | Path to the git or jj repository to review |
76 | `VITE_LCR_WS_PORT` | `PORT + 1000` | WebSocket port for the terminal (dev mode only) |
77 
78 ### Claude Code integration
79@@ -183,7 +185,7 @@ node bin/lcr.js /path/to/project
80 src/
81   lib/
82     components/    # Svelte UI components (DiffView, FileTree, Terminal, etc.)
83-    server/        # Server-side code (git operations, review store, terminal)
84+    server/        # Server-side code (VCS abstraction, git/jj clients, review store, terminal)
85     stores/        # Svelte stores (files, review, UI state)
86     types/         # TypeScript interfaces
87   routes/
88@@ -195,6 +197,7 @@ bin/
89 
90 ## Notes
91 
92+- Jujutsu repos are auto-detected by the presence of a `.jj/` directory and require the `jj` CLI on `PATH`. In jj repos there is no commit step: the working copy is autocommitted, so the review action is simply **Approve**
93 - Comments are stored in memory and reset when the server restarts
94 - The `.lcr-review.json` and `.lcr-review.md` export files are created in the project root — add them to `.gitignore` if needed
95 - Syntax highlighting is powered by [Shiki](https://shiki.matsu.io/) (same engine as VS Code)
M bin/lcr.js
+7, -4
 1@@ -8,11 +8,14 @@ import { fileURLToPath } from 'url';
 2 const args = process.argv.slice(2);
 3 const repoDir = resolve(args[0] || process.cwd());
 4 
 5-// Check if directory is a git repo
 6-if (!existsSync(join(repoDir, '.git'))) {
 7-	console.error('Error: Not a git repository. Run this command from within a git repo.');
 8+// Check if directory is a git or jj repo
 9+const isGit = existsSync(join(repoDir, '.git'));
10+const isJj = existsSync(join(repoDir, '.jj'));
11+if (!isGit && !isJj) {
12+	console.error('Error: Not a git or jj repository. Run this command from within a git or jj repo.');
13 	process.exit(1);
14 }
15+const vcs = isJj ? 'jj' : 'git';
16 
17 // Set repo dir for the server
18 process.env.LCR_REPO_DIR = repoDir;
19@@ -45,7 +48,7 @@ try {
20 server.listen(port, '127.0.0.1', async () => {
21 	const url = `http://localhost:${port}`;
22 	console.log(`\n  Local Code Review`);
23-	console.log(`  Reviewing: ${repoDir}`);
24+	console.log(`  Reviewing: ${repoDir} (${vcs})`);
25 	console.log(`  Server:    ${url}\n`);
26 
27 	// Open browser
A devenv.lock
+65, -0
 1@@ -0,0 +1,65 @@
 2+{
 3+  "nodes": {
 4+    "devenv": {
 5+      "locked": {
 6+        "dir": "src/modules",
 7+        "lastModified": 1790415795,
 8+        "narHash": "sha256-nvpxhuC///gvHzRj9/8A+3+2frKEP8kaabBuQDRO4G4=",
 9+        "owner": "cachix",
10+        "repo": "devenv",
11+        "rev": "6d76db3889deba50ba7d906ec710d59fcd86354a",
12+        "type": "github"
13+      },
14+      "original": {
15+        "dir": "src/modules",
16+        "owner": "cachix",
17+        "repo": "devenv",
18+        "type": "github"
19+      }
20+    },
21+    "nixpkgs": {
22+      "inputs": {
23+        "nixpkgs-src": "nixpkgs-src"
24+      },
25+      "locked": {
26+        "lastModified": 1789506231,
27+        "narHash": "sha256-vNkJbtmqyBfFhn/HnzQo4ROuoyYWuy/allqTfJb4kMY=",
28+        "owner": "cachix",
29+        "repo": "devenv-nixpkgs",
30+        "rev": "c2f38fe7f9e04d9aadd354d380f2bd40531d9737",
31+        "type": "github"
32+      },
33+      "original": {
34+        "owner": "cachix",
35+        "ref": "rolling",
36+        "repo": "devenv-nixpkgs",
37+        "type": "github"
38+      }
39+    },
40+    "nixpkgs-src": {
41+      "flake": false,
42+      "locked": {
43+        "lastModified": 1789370336,
44+        "narHash": "sha256-6RSEDHIWQtesQKWSu5qRai8L2h4KgCgMEfJHstW99G4=",
45+        "owner": "NixOS",
46+        "repo": "nixpkgs",
47+        "rev": "c7def046b9a883d46974757852106483d741586f",
48+        "type": "github"
49+      },
50+      "original": {
51+        "owner": "NixOS",
52+        "ref": "nixpkgs-unstable",
53+        "repo": "nixpkgs",
54+        "type": "github"
55+      }
56+    },
57+    "root": {
58+      "inputs": {
59+        "devenv": "devenv",
60+        "nixpkgs": "nixpkgs"
61+      }
62+    }
63+  },
64+  "root": "root",
65+  "version": 7
66+}
A devenv.nix
+46, -0
 1@@ -0,0 +1,46 @@
 2+{ pkgs, lib, config, inputs, ... }:
 3+
 4+{
 5+  # https://devenv.sh/basics/
 6+  env.GREET = "devenv";
 7+
 8+  # https://devenv.sh/packages/
 9+  packages = [
10+    pkgs.git
11+    pkgs.jujutsu
12+  ];
13+
14+  # https://devenv.sh/languages/
15+  languages.javascript.enable = true;
16+  languages.javascript.corepack.enable = true;
17+  languages.javascript.pnpm.enable = true;
18+
19+  # https://devenv.sh/processes/
20+  # processes.dev.exec = "${lib.getExe pkgs.watchexec} -n -- ls -la";
21+
22+  # https://devenv.sh/services/
23+  # services.postgres.enable = true;
24+
25+  # https://devenv.sh/scripts/
26+  scripts.hello.exec = ''
27+  '';
28+
29+  # https://devenv.sh/basics/
30+  enterShell = ''
31+  '';
32+
33+  # https://devenv.sh/tasks/
34+  # tasks = {
35+  #   "myproj:setup".exec = "mytool build";
36+  #   "devenv:enterShell".after = [ "myproj:setup" ];
37+  # };
38+
39+  # https://devenv.sh/tests/
40+  enterTest = ''
41+  '';
42+
43+  # https://devenv.sh/git-hooks/
44+  # git-hooks.hooks.shellcheck.enable = true;
45+
46+  # See full reference at https://devenv.sh/reference/options/
47+}
A devenv.yaml
+18, -0
 1@@ -0,0 +1,18 @@
 2+# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json
 3+inputs:
 4+  nixpkgs:
 5+    url: github:cachix/devenv-nixpkgs/rolling
 6+
 7+# If you're using non-OSS software, you can set allow_unfree to true.
 8+# allow_unfree: true
 9+
10+# If you're not willing to allow unsupported packages:
11+# allow_unsupported_system: false
12+
13+# If you're willing to use a package that's vulnerable
14+# permitted_insecure_packages:
15+#  - "openssl-1.1.1w"
16+
17+# If you have more than one devenv you can merge them
18+#imports:
19+# - ./backend
D package-lock.json
+0, -3396
   1@@ -1,3396 +0,0 @@
   2-{
   3-	"name": "local-code-review",
   4-	"version": "0.1.1",
   5-	"lockfileVersion": 3,
   6-	"requires": true,
   7-	"packages": {
   8-		"": {
   9-			"name": "local-code-review",
  10-			"version": "0.1.1",
  11-			"license": "MIT",
  12-			"dependencies": {
  13-				"@xterm/addon-fit": "^0.11.0",
  14-				"@xterm/xterm": "^6.0.0",
  15-				"diff2html": "^3.4.56",
  16-				"node-pty": "^1.2.0-beta.12",
  17-				"open": "^11.0.0",
  18-				"shiki": "^4.0.2",
  19-				"simple-git": "^3.33.0",
  20-				"ws": "^8.20.0"
  21-			},
  22-			"bin": {
  23-				"lcr": "bin/lcr.js",
  24-				"local-code-review": "bin/lcr.js"
  25-			},
  26-			"devDependencies": {
  27-				"@sveltejs/adapter-node": "^5.5.2",
  28-				"@sveltejs/kit": "^2.50.2",
  29-				"@sveltejs/vite-plugin-svelte": "^6.2.4",
  30-				"@tailwindcss/vite": "^4.1.18",
  31-				"@types/ws": "^8.18.1",
  32-				"svelte": "^5.54.0",
  33-				"svelte-check": "^4.4.2",
  34-				"tailwindcss": "^4.1.18",
  35-				"typescript": "^5.9.3",
  36-				"vite": "^7.3.1"
  37-			},
  38-			"engines": {
  39-				"node": ">=18"
  40-			}
  41-		},
  42-		"node_modules/@esbuild/aix-ppc64": {
  43-			"version": "0.27.4",
  44-			"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz",
  45-			"integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==",
  46-			"cpu": [
  47-				"ppc64"
  48-			],
  49-			"dev": true,
  50-			"license": "MIT",
  51-			"optional": true,
  52-			"os": [
  53-				"aix"
  54-			],
  55-			"engines": {
  56-				"node": ">=18"
  57-			}
  58-		},
  59-		"node_modules/@esbuild/android-arm": {
  60-			"version": "0.27.4",
  61-			"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz",
  62-			"integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==",
  63-			"cpu": [
  64-				"arm"
  65-			],
  66-			"dev": true,
  67-			"license": "MIT",
  68-			"optional": true,
  69-			"os": [
  70-				"android"
  71-			],
  72-			"engines": {
  73-				"node": ">=18"
  74-			}
  75-		},
  76-		"node_modules/@esbuild/android-arm64": {
  77-			"version": "0.27.4",
  78-			"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz",
  79-			"integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==",
  80-			"cpu": [
  81-				"arm64"
  82-			],
  83-			"dev": true,
  84-			"license": "MIT",
  85-			"optional": true,
  86-			"os": [
  87-				"android"
  88-			],
  89-			"engines": {
  90-				"node": ">=18"
  91-			}
  92-		},
  93-		"node_modules/@esbuild/android-x64": {
  94-			"version": "0.27.4",
  95-			"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz",
  96-			"integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==",
  97-			"cpu": [
  98-				"x64"
  99-			],
 100-			"dev": true,
 101-			"license": "MIT",
 102-			"optional": true,
 103-			"os": [
 104-				"android"
 105-			],
 106-			"engines": {
 107-				"node": ">=18"
 108-			}
 109-		},
 110-		"node_modules/@esbuild/darwin-arm64": {
 111-			"version": "0.27.4",
 112-			"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz",
 113-			"integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==",
 114-			"cpu": [
 115-				"arm64"
 116-			],
 117-			"dev": true,
 118-			"license": "MIT",
 119-			"optional": true,
 120-			"os": [
 121-				"darwin"
 122-			],
 123-			"engines": {
 124-				"node": ">=18"
 125-			}
 126-		},
 127-		"node_modules/@esbuild/darwin-x64": {
 128-			"version": "0.27.4",
 129-			"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz",
 130-			"integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==",
 131-			"cpu": [
 132-				"x64"
 133-			],
 134-			"dev": true,
 135-			"license": "MIT",
 136-			"optional": true,
 137-			"os": [
 138-				"darwin"
 139-			],
 140-			"engines": {
 141-				"node": ">=18"
 142-			}
 143-		},
 144-		"node_modules/@esbuild/freebsd-arm64": {
 145-			"version": "0.27.4",
 146-			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz",
 147-			"integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==",
 148-			"cpu": [
 149-				"arm64"
 150-			],
 151-			"dev": true,
 152-			"license": "MIT",
 153-			"optional": true,
 154-			"os": [
 155-				"freebsd"
 156-			],
 157-			"engines": {
 158-				"node": ">=18"
 159-			}
 160-		},
 161-		"node_modules/@esbuild/freebsd-x64": {
 162-			"version": "0.27.4",
 163-			"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz",
 164-			"integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==",
 165-			"cpu": [
 166-				"x64"
 167-			],
 168-			"dev": true,
 169-			"license": "MIT",
 170-			"optional": true,
 171-			"os": [
 172-				"freebsd"
 173-			],
 174-			"engines": {
 175-				"node": ">=18"
 176-			}
 177-		},
 178-		"node_modules/@esbuild/linux-arm": {
 179-			"version": "0.27.4",
 180-			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz",
 181-			"integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==",
 182-			"cpu": [
 183-				"arm"
 184-			],
 185-			"dev": true,
 186-			"license": "MIT",
 187-			"optional": true,
 188-			"os": [
 189-				"linux"
 190-			],
 191-			"engines": {
 192-				"node": ">=18"
 193-			}
 194-		},
 195-		"node_modules/@esbuild/linux-arm64": {
 196-			"version": "0.27.4",
 197-			"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz",
 198-			"integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==",
 199-			"cpu": [
 200-				"arm64"
 201-			],
 202-			"dev": true,
 203-			"license": "MIT",
 204-			"optional": true,
 205-			"os": [
 206-				"linux"
 207-			],
 208-			"engines": {
 209-				"node": ">=18"
 210-			}
 211-		},
 212-		"node_modules/@esbuild/linux-ia32": {
 213-			"version": "0.27.4",
 214-			"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz",
 215-			"integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==",
 216-			"cpu": [
 217-				"ia32"
 218-			],
 219-			"dev": true,
 220-			"license": "MIT",
 221-			"optional": true,
 222-			"os": [
 223-				"linux"
 224-			],
 225-			"engines": {
 226-				"node": ">=18"
 227-			}
 228-		},
 229-		"node_modules/@esbuild/linux-loong64": {
 230-			"version": "0.27.4",
 231-			"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz",
 232-			"integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==",
 233-			"cpu": [
 234-				"loong64"
 235-			],
 236-			"dev": true,
 237-			"license": "MIT",
 238-			"optional": true,
 239-			"os": [
 240-				"linux"
 241-			],
 242-			"engines": {
 243-				"node": ">=18"
 244-			}
 245-		},
 246-		"node_modules/@esbuild/linux-mips64el": {
 247-			"version": "0.27.4",
 248-			"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz",
 249-			"integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==",
 250-			"cpu": [
 251-				"mips64el"
 252-			],
 253-			"dev": true,
 254-			"license": "MIT",
 255-			"optional": true,
 256-			"os": [
 257-				"linux"
 258-			],
 259-			"engines": {
 260-				"node": ">=18"
 261-			}
 262-		},
 263-		"node_modules/@esbuild/linux-ppc64": {
 264-			"version": "0.27.4",
 265-			"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz",
 266-			"integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==",
 267-			"cpu": [
 268-				"ppc64"
 269-			],
 270-			"dev": true,
 271-			"license": "MIT",
 272-			"optional": true,
 273-			"os": [
 274-				"linux"
 275-			],
 276-			"engines": {
 277-				"node": ">=18"
 278-			}
 279-		},
 280-		"node_modules/@esbuild/linux-riscv64": {
 281-			"version": "0.27.4",
 282-			"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz",
 283-			"integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==",
 284-			"cpu": [
 285-				"riscv64"
 286-			],
 287-			"dev": true,
 288-			"license": "MIT",
 289-			"optional": true,
 290-			"os": [
 291-				"linux"
 292-			],
 293-			"engines": {
 294-				"node": ">=18"
 295-			}
 296-		},
 297-		"node_modules/@esbuild/linux-s390x": {
 298-			"version": "0.27.4",
 299-			"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz",
 300-			"integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==",
 301-			"cpu": [
 302-				"s390x"
 303-			],
 304-			"dev": true,
 305-			"license": "MIT",
 306-			"optional": true,
 307-			"os": [
 308-				"linux"
 309-			],
 310-			"engines": {
 311-				"node": ">=18"
 312-			}
 313-		},
 314-		"node_modules/@esbuild/linux-x64": {
 315-			"version": "0.27.4",
 316-			"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz",
 317-			"integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==",
 318-			"cpu": [
 319-				"x64"
 320-			],
 321-			"dev": true,
 322-			"license": "MIT",
 323-			"optional": true,
 324-			"os": [
 325-				"linux"
 326-			],
 327-			"engines": {
 328-				"node": ">=18"
 329-			}
 330-		},
 331-		"node_modules/@esbuild/netbsd-arm64": {
 332-			"version": "0.27.4",
 333-			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz",
 334-			"integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==",
 335-			"cpu": [
 336-				"arm64"
 337-			],
 338-			"dev": true,
 339-			"license": "MIT",
 340-			"optional": true,
 341-			"os": [
 342-				"netbsd"
 343-			],
 344-			"engines": {
 345-				"node": ">=18"
 346-			}
 347-		},
 348-		"node_modules/@esbuild/netbsd-x64": {
 349-			"version": "0.27.4",
 350-			"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz",
 351-			"integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==",
 352-			"cpu": [
 353-				"x64"
 354-			],
 355-			"dev": true,
 356-			"license": "MIT",
 357-			"optional": true,
 358-			"os": [
 359-				"netbsd"
 360-			],
 361-			"engines": {
 362-				"node": ">=18"
 363-			}
 364-		},
 365-		"node_modules/@esbuild/openbsd-arm64": {
 366-			"version": "0.27.4",
 367-			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz",
 368-			"integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==",
 369-			"cpu": [
 370-				"arm64"
 371-			],
 372-			"dev": true,
 373-			"license": "MIT",
 374-			"optional": true,
 375-			"os": [
 376-				"openbsd"
 377-			],
 378-			"engines": {
 379-				"node": ">=18"
 380-			}
 381-		},
 382-		"node_modules/@esbuild/openbsd-x64": {
 383-			"version": "0.27.4",
 384-			"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz",
 385-			"integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==",
 386-			"cpu": [
 387-				"x64"
 388-			],
 389-			"dev": true,
 390-			"license": "MIT",
 391-			"optional": true,
 392-			"os": [
 393-				"openbsd"
 394-			],
 395-			"engines": {
 396-				"node": ">=18"
 397-			}
 398-		},
 399-		"node_modules/@esbuild/openharmony-arm64": {
 400-			"version": "0.27.4",
 401-			"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz",
 402-			"integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==",
 403-			"cpu": [
 404-				"arm64"
 405-			],
 406-			"dev": true,
 407-			"license": "MIT",
 408-			"optional": true,
 409-			"os": [
 410-				"openharmony"
 411-			],
 412-			"engines": {
 413-				"node": ">=18"
 414-			}
 415-		},
 416-		"node_modules/@esbuild/sunos-x64": {
 417-			"version": "0.27.4",
 418-			"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz",
 419-			"integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==",
 420-			"cpu": [
 421-				"x64"
 422-			],
 423-			"dev": true,
 424-			"license": "MIT",
 425-			"optional": true,
 426-			"os": [
 427-				"sunos"
 428-			],
 429-			"engines": {
 430-				"node": ">=18"
 431-			}
 432-		},
 433-		"node_modules/@esbuild/win32-arm64": {
 434-			"version": "0.27.4",
 435-			"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz",
 436-			"integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==",
 437-			"cpu": [
 438-				"arm64"
 439-			],
 440-			"dev": true,
 441-			"license": "MIT",
 442-			"optional": true,
 443-			"os": [
 444-				"win32"
 445-			],
 446-			"engines": {
 447-				"node": ">=18"
 448-			}
 449-		},
 450-		"node_modules/@esbuild/win32-ia32": {
 451-			"version": "0.27.4",
 452-			"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz",
 453-			"integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==",
 454-			"cpu": [
 455-				"ia32"
 456-			],
 457-			"dev": true,
 458-			"license": "MIT",
 459-			"optional": true,
 460-			"os": [
 461-				"win32"
 462-			],
 463-			"engines": {
 464-				"node": ">=18"
 465-			}
 466-		},
 467-		"node_modules/@esbuild/win32-x64": {
 468-			"version": "0.27.4",
 469-			"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz",
 470-			"integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==",
 471-			"cpu": [
 472-				"x64"
 473-			],
 474-			"dev": true,
 475-			"license": "MIT",
 476-			"optional": true,
 477-			"os": [
 478-				"win32"
 479-			],
 480-			"engines": {
 481-				"node": ">=18"
 482-			}
 483-		},
 484-		"node_modules/@jridgewell/gen-mapping": {
 485-			"version": "0.3.13",
 486-			"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
 487-			"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
 488-			"dev": true,
 489-			"license": "MIT",
 490-			"dependencies": {
 491-				"@jridgewell/sourcemap-codec": "^1.5.0",
 492-				"@jridgewell/trace-mapping": "^0.3.24"
 493-			}
 494-		},
 495-		"node_modules/@jridgewell/remapping": {
 496-			"version": "2.3.5",
 497-			"resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
 498-			"integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
 499-			"dev": true,
 500-			"license": "MIT",
 501-			"dependencies": {
 502-				"@jridgewell/gen-mapping": "^0.3.5",
 503-				"@jridgewell/trace-mapping": "^0.3.24"
 504-			}
 505-		},
 506-		"node_modules/@jridgewell/resolve-uri": {
 507-			"version": "3.1.2",
 508-			"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
 509-			"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
 510-			"dev": true,
 511-			"license": "MIT",
 512-			"engines": {
 513-				"node": ">=6.0.0"
 514-			}
 515-		},
 516-		"node_modules/@jridgewell/sourcemap-codec": {
 517-			"version": "1.5.5",
 518-			"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
 519-			"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
 520-			"dev": true,
 521-			"license": "MIT"
 522-		},
 523-		"node_modules/@jridgewell/trace-mapping": {
 524-			"version": "0.3.31",
 525-			"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
 526-			"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
 527-			"dev": true,
 528-			"license": "MIT",
 529-			"dependencies": {
 530-				"@jridgewell/resolve-uri": "^3.1.0",
 531-				"@jridgewell/sourcemap-codec": "^1.4.14"
 532-			}
 533-		},
 534-		"node_modules/@kwsites/file-exists": {
 535-			"version": "1.1.1",
 536-			"resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
 537-			"integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
 538-			"license": "MIT",
 539-			"dependencies": {
 540-				"debug": "^4.1.1"
 541-			}
 542-		},
 543-		"node_modules/@kwsites/promise-deferred": {
 544-			"version": "1.1.1",
 545-			"resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
 546-			"integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==",
 547-			"license": "MIT"
 548-		},
 549-		"node_modules/@polka/url": {
 550-			"version": "1.0.0-next.29",
 551-			"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz",
 552-			"integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==",
 553-			"dev": true,
 554-			"license": "MIT"
 555-		},
 556-		"node_modules/@profoundlogic/hogan": {
 557-			"version": "3.0.4",
 558-			"resolved": "https://registry.npmjs.org/@profoundlogic/hogan/-/hogan-3.0.4.tgz",
 559-			"integrity": "sha512-pmNVGuooS30Mm7YbZd5T7E5zYVO6D5Ct91sn4T39mUvMUc3sCGridcnhAufL1/Bz2QzAtzEn0agNrdk3+5yWzw==",
 560-			"license": "Apache-2.0",
 561-			"dependencies": {
 562-				"nopt": "1.0.10"
 563-			},
 564-			"bin": {
 565-				"hulk": "bin/hulk"
 566-			}
 567-		},
 568-		"node_modules/@rollup/plugin-commonjs": {
 569-			"version": "29.0.2",
 570-			"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-29.0.2.tgz",
 571-			"integrity": "sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg==",
 572-			"dev": true,
 573-			"license": "MIT",
 574-			"dependencies": {
 575-				"@rollup/pluginutils": "^5.0.1",
 576-				"commondir": "^1.0.1",
 577-				"estree-walker": "^2.0.2",
 578-				"fdir": "^6.2.0",
 579-				"is-reference": "1.2.1",
 580-				"magic-string": "^0.30.3",
 581-				"picomatch": "^4.0.2"
 582-			},
 583-			"engines": {
 584-				"node": ">=16.0.0 || 14 >= 14.17"
 585-			},
 586-			"peerDependencies": {
 587-				"rollup": "^2.68.0||^3.0.0||^4.0.0"
 588-			},
 589-			"peerDependenciesMeta": {
 590-				"rollup": {
 591-					"optional": true
 592-				}
 593-			}
 594-		},
 595-		"node_modules/@rollup/plugin-json": {
 596-			"version": "6.1.0",
 597-			"resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz",
 598-			"integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==",
 599-			"dev": true,
 600-			"license": "MIT",
 601-			"dependencies": {
 602-				"@rollup/pluginutils": "^5.1.0"
 603-			},
 604-			"engines": {
 605-				"node": ">=14.0.0"
 606-			},
 607-			"peerDependencies": {
 608-				"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
 609-			},
 610-			"peerDependenciesMeta": {
 611-				"rollup": {
 612-					"optional": true
 613-				}
 614-			}
 615-		},
 616-		"node_modules/@rollup/plugin-node-resolve": {
 617-			"version": "16.0.3",
 618-			"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz",
 619-			"integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==",
 620-			"dev": true,
 621-			"license": "MIT",
 622-			"dependencies": {
 623-				"@rollup/pluginutils": "^5.0.1",
 624-				"@types/resolve": "1.20.2",
 625-				"deepmerge": "^4.2.2",
 626-				"is-module": "^1.0.0",
 627-				"resolve": "^1.22.1"
 628-			},
 629-			"engines": {
 630-				"node": ">=14.0.0"
 631-			},
 632-			"peerDependencies": {
 633-				"rollup": "^2.78.0||^3.0.0||^4.0.0"
 634-			},
 635-			"peerDependenciesMeta": {
 636-				"rollup": {
 637-					"optional": true
 638-				}
 639-			}
 640-		},
 641-		"node_modules/@rollup/pluginutils": {
 642-			"version": "5.3.0",
 643-			"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
 644-			"integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
 645-			"dev": true,
 646-			"license": "MIT",
 647-			"dependencies": {
 648-				"@types/estree": "^1.0.0",
 649-				"estree-walker": "^2.0.2",
 650-				"picomatch": "^4.0.2"
 651-			},
 652-			"engines": {
 653-				"node": ">=14.0.0"
 654-			},
 655-			"peerDependencies": {
 656-				"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
 657-			},
 658-			"peerDependenciesMeta": {
 659-				"rollup": {
 660-					"optional": true
 661-				}
 662-			}
 663-		},
 664-		"node_modules/@rollup/rollup-android-arm-eabi": {
 665-			"version": "4.60.0",
 666-			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz",
 667-			"integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==",
 668-			"cpu": [
 669-				"arm"
 670-			],
 671-			"dev": true,
 672-			"license": "MIT",
 673-			"optional": true,
 674-			"os": [
 675-				"android"
 676-			]
 677-		},
 678-		"node_modules/@rollup/rollup-android-arm64": {
 679-			"version": "4.60.0",
 680-			"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz",
 681-			"integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==",
 682-			"cpu": [
 683-				"arm64"
 684-			],
 685-			"dev": true,
 686-			"license": "MIT",
 687-			"optional": true,
 688-			"os": [
 689-				"android"
 690-			]
 691-		},
 692-		"node_modules/@rollup/rollup-darwin-arm64": {
 693-			"version": "4.60.0",
 694-			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz",
 695-			"integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==",
 696-			"cpu": [
 697-				"arm64"
 698-			],
 699-			"dev": true,
 700-			"license": "MIT",
 701-			"optional": true,
 702-			"os": [
 703-				"darwin"
 704-			]
 705-		},
 706-		"node_modules/@rollup/rollup-darwin-x64": {
 707-			"version": "4.60.0",
 708-			"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz",
 709-			"integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==",
 710-			"cpu": [
 711-				"x64"
 712-			],
 713-			"dev": true,
 714-			"license": "MIT",
 715-			"optional": true,
 716-			"os": [
 717-				"darwin"
 718-			]
 719-		},
 720-		"node_modules/@rollup/rollup-freebsd-arm64": {
 721-			"version": "4.60.0",
 722-			"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz",
 723-			"integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==",
 724-			"cpu": [
 725-				"arm64"
 726-			],
 727-			"dev": true,
 728-			"license": "MIT",
 729-			"optional": true,
 730-			"os": [
 731-				"freebsd"
 732-			]
 733-		},
 734-		"node_modules/@rollup/rollup-freebsd-x64": {
 735-			"version": "4.60.0",
 736-			"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz",
 737-			"integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==",
 738-			"cpu": [
 739-				"x64"
 740-			],
 741-			"dev": true,
 742-			"license": "MIT",
 743-			"optional": true,
 744-			"os": [
 745-				"freebsd"
 746-			]
 747-		},
 748-		"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
 749-			"version": "4.60.0",
 750-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz",
 751-			"integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==",
 752-			"cpu": [
 753-				"arm"
 754-			],
 755-			"dev": true,
 756-			"license": "MIT",
 757-			"optional": true,
 758-			"os": [
 759-				"linux"
 760-			]
 761-		},
 762-		"node_modules/@rollup/rollup-linux-arm-musleabihf": {
 763-			"version": "4.60.0",
 764-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz",
 765-			"integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==",
 766-			"cpu": [
 767-				"arm"
 768-			],
 769-			"dev": true,
 770-			"license": "MIT",
 771-			"optional": true,
 772-			"os": [
 773-				"linux"
 774-			]
 775-		},
 776-		"node_modules/@rollup/rollup-linux-arm64-gnu": {
 777-			"version": "4.60.0",
 778-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz",
 779-			"integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==",
 780-			"cpu": [
 781-				"arm64"
 782-			],
 783-			"dev": true,
 784-			"license": "MIT",
 785-			"optional": true,
 786-			"os": [
 787-				"linux"
 788-			]
 789-		},
 790-		"node_modules/@rollup/rollup-linux-arm64-musl": {
 791-			"version": "4.60.0",
 792-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz",
 793-			"integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==",
 794-			"cpu": [
 795-				"arm64"
 796-			],
 797-			"dev": true,
 798-			"license": "MIT",
 799-			"optional": true,
 800-			"os": [
 801-				"linux"
 802-			]
 803-		},
 804-		"node_modules/@rollup/rollup-linux-loong64-gnu": {
 805-			"version": "4.60.0",
 806-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz",
 807-			"integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==",
 808-			"cpu": [
 809-				"loong64"
 810-			],
 811-			"dev": true,
 812-			"license": "MIT",
 813-			"optional": true,
 814-			"os": [
 815-				"linux"
 816-			]
 817-		},
 818-		"node_modules/@rollup/rollup-linux-loong64-musl": {
 819-			"version": "4.60.0",
 820-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz",
 821-			"integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==",
 822-			"cpu": [
 823-				"loong64"
 824-			],
 825-			"dev": true,
 826-			"license": "MIT",
 827-			"optional": true,
 828-			"os": [
 829-				"linux"
 830-			]
 831-		},
 832-		"node_modules/@rollup/rollup-linux-ppc64-gnu": {
 833-			"version": "4.60.0",
 834-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz",
 835-			"integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==",
 836-			"cpu": [
 837-				"ppc64"
 838-			],
 839-			"dev": true,
 840-			"license": "MIT",
 841-			"optional": true,
 842-			"os": [
 843-				"linux"
 844-			]
 845-		},
 846-		"node_modules/@rollup/rollup-linux-ppc64-musl": {
 847-			"version": "4.60.0",
 848-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz",
 849-			"integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==",
 850-			"cpu": [
 851-				"ppc64"
 852-			],
 853-			"dev": true,
 854-			"license": "MIT",
 855-			"optional": true,
 856-			"os": [
 857-				"linux"
 858-			]
 859-		},
 860-		"node_modules/@rollup/rollup-linux-riscv64-gnu": {
 861-			"version": "4.60.0",
 862-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz",
 863-			"integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==",
 864-			"cpu": [
 865-				"riscv64"
 866-			],
 867-			"dev": true,
 868-			"license": "MIT",
 869-			"optional": true,
 870-			"os": [
 871-				"linux"
 872-			]
 873-		},
 874-		"node_modules/@rollup/rollup-linux-riscv64-musl": {
 875-			"version": "4.60.0",
 876-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz",
 877-			"integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==",
 878-			"cpu": [
 879-				"riscv64"
 880-			],
 881-			"dev": true,
 882-			"license": "MIT",
 883-			"optional": true,
 884-			"os": [
 885-				"linux"
 886-			]
 887-		},
 888-		"node_modules/@rollup/rollup-linux-s390x-gnu": {
 889-			"version": "4.60.0",
 890-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz",
 891-			"integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==",
 892-			"cpu": [
 893-				"s390x"
 894-			],
 895-			"dev": true,
 896-			"license": "MIT",
 897-			"optional": true,
 898-			"os": [
 899-				"linux"
 900-			]
 901-		},
 902-		"node_modules/@rollup/rollup-linux-x64-gnu": {
 903-			"version": "4.60.0",
 904-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz",
 905-			"integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==",
 906-			"cpu": [
 907-				"x64"
 908-			],
 909-			"dev": true,
 910-			"license": "MIT",
 911-			"optional": true,
 912-			"os": [
 913-				"linux"
 914-			]
 915-		},
 916-		"node_modules/@rollup/rollup-linux-x64-musl": {
 917-			"version": "4.60.0",
 918-			"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz",
 919-			"integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==",
 920-			"cpu": [
 921-				"x64"
 922-			],
 923-			"dev": true,
 924-			"license": "MIT",
 925-			"optional": true,
 926-			"os": [
 927-				"linux"
 928-			]
 929-		},
 930-		"node_modules/@rollup/rollup-openbsd-x64": {
 931-			"version": "4.60.0",
 932-			"resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz",
 933-			"integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==",
 934-			"cpu": [
 935-				"x64"
 936-			],
 937-			"dev": true,
 938-			"license": "MIT",
 939-			"optional": true,
 940-			"os": [
 941-				"openbsd"
 942-			]
 943-		},
 944-		"node_modules/@rollup/rollup-openharmony-arm64": {
 945-			"version": "4.60.0",
 946-			"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz",
 947-			"integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==",
 948-			"cpu": [
 949-				"arm64"
 950-			],
 951-			"dev": true,
 952-			"license": "MIT",
 953-			"optional": true,
 954-			"os": [
 955-				"openharmony"
 956-			]
 957-		},
 958-		"node_modules/@rollup/rollup-win32-arm64-msvc": {
 959-			"version": "4.60.0",
 960-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz",
 961-			"integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==",
 962-			"cpu": [
 963-				"arm64"
 964-			],
 965-			"dev": true,
 966-			"license": "MIT",
 967-			"optional": true,
 968-			"os": [
 969-				"win32"
 970-			]
 971-		},
 972-		"node_modules/@rollup/rollup-win32-ia32-msvc": {
 973-			"version": "4.60.0",
 974-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz",
 975-			"integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==",
 976-			"cpu": [
 977-				"ia32"
 978-			],
 979-			"dev": true,
 980-			"license": "MIT",
 981-			"optional": true,
 982-			"os": [
 983-				"win32"
 984-			]
 985-		},
 986-		"node_modules/@rollup/rollup-win32-x64-gnu": {
 987-			"version": "4.60.0",
 988-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz",
 989-			"integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==",
 990-			"cpu": [
 991-				"x64"
 992-			],
 993-			"dev": true,
 994-			"license": "MIT",
 995-			"optional": true,
 996-			"os": [
 997-				"win32"
 998-			]
 999-		},
1000-		"node_modules/@rollup/rollup-win32-x64-msvc": {
1001-			"version": "4.60.0",
1002-			"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz",
1003-			"integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==",
1004-			"cpu": [
1005-				"x64"
1006-			],
1007-			"dev": true,
1008-			"license": "MIT",
1009-			"optional": true,
1010-			"os": [
1011-				"win32"
1012-			]
1013-		},
1014-		"node_modules/@shikijs/core": {
1015-			"version": "4.0.2",
1016-			"resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.0.2.tgz",
1017-			"integrity": "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==",
1018-			"license": "MIT",
1019-			"dependencies": {
1020-				"@shikijs/primitive": "4.0.2",
1021-				"@shikijs/types": "4.0.2",
1022-				"@shikijs/vscode-textmate": "^10.0.2",
1023-				"@types/hast": "^3.0.4",
1024-				"hast-util-to-html": "^9.0.5"
1025-			},
1026-			"engines": {
1027-				"node": ">=20"
1028-			}
1029-		},
1030-		"node_modules/@shikijs/engine-javascript": {
1031-			"version": "4.0.2",
1032-			"resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.0.2.tgz",
1033-			"integrity": "sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==",
1034-			"license": "MIT",
1035-			"dependencies": {
1036-				"@shikijs/types": "4.0.2",
1037-				"@shikijs/vscode-textmate": "^10.0.2",
1038-				"oniguruma-to-es": "^4.3.4"
1039-			},
1040-			"engines": {
1041-				"node": ">=20"
1042-			}
1043-		},
1044-		"node_modules/@shikijs/engine-oniguruma": {
1045-			"version": "4.0.2",
1046-			"resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.0.2.tgz",
1047-			"integrity": "sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==",
1048-			"license": "MIT",
1049-			"dependencies": {
1050-				"@shikijs/types": "4.0.2",
1051-				"@shikijs/vscode-textmate": "^10.0.2"
1052-			},
1053-			"engines": {
1054-				"node": ">=20"
1055-			}
1056-		},
1057-		"node_modules/@shikijs/langs": {
1058-			"version": "4.0.2",
1059-			"resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.0.2.tgz",
1060-			"integrity": "sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==",
1061-			"license": "MIT",
1062-			"dependencies": {
1063-				"@shikijs/types": "4.0.2"
1064-			},
1065-			"engines": {
1066-				"node": ">=20"
1067-			}
1068-		},
1069-		"node_modules/@shikijs/primitive": {
1070-			"version": "4.0.2",
1071-			"resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.0.2.tgz",
1072-			"integrity": "sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==",
1073-			"license": "MIT",
1074-			"dependencies": {
1075-				"@shikijs/types": "4.0.2",
1076-				"@shikijs/vscode-textmate": "^10.0.2",
1077-				"@types/hast": "^3.0.4"
1078-			},
1079-			"engines": {
1080-				"node": ">=20"
1081-			}
1082-		},
1083-		"node_modules/@shikijs/themes": {
1084-			"version": "4.0.2",
1085-			"resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.0.2.tgz",
1086-			"integrity": "sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==",
1087-			"license": "MIT",
1088-			"dependencies": {
1089-				"@shikijs/types": "4.0.2"
1090-			},
1091-			"engines": {
1092-				"node": ">=20"
1093-			}
1094-		},
1095-		"node_modules/@shikijs/types": {
1096-			"version": "4.0.2",
1097-			"resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.0.2.tgz",
1098-			"integrity": "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==",
1099-			"license": "MIT",
1100-			"dependencies": {
1101-				"@shikijs/vscode-textmate": "^10.0.2",
1102-				"@types/hast": "^3.0.4"
1103-			},
1104-			"engines": {
1105-				"node": ">=20"
1106-			}
1107-		},
1108-		"node_modules/@shikijs/vscode-textmate": {
1109-			"version": "10.0.2",
1110-			"resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz",
1111-			"integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
1112-			"license": "MIT"
1113-		},
1114-		"node_modules/@standard-schema/spec": {
1115-			"version": "1.1.0",
1116-			"resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
1117-			"integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
1118-			"dev": true,
1119-			"license": "MIT"
1120-		},
1121-		"node_modules/@sveltejs/acorn-typescript": {
1122-			"version": "1.0.9",
1123-			"resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.9.tgz",
1124-			"integrity": "sha512-lVJX6qEgs/4DOcRTpo56tmKzVPtoWAaVbL4hfO7t7NVwl9AAXzQR6cihesW1BmNMPl+bK6dreu2sOKBP2Q9CIA==",
1125-			"dev": true,
1126-			"license": "MIT",
1127-			"peerDependencies": {
1128-				"acorn": "^8.9.0"
1129-			}
1130-		},
1131-		"node_modules/@sveltejs/adapter-node": {
1132-			"version": "5.5.4",
1133-			"resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-5.5.4.tgz",
1134-			"integrity": "sha512-45X92CXW+2J8ZUzPv3eLlKWEzINKiiGeFWTjyER4ZN4sGgNoaoeSkCY/QYNxHpPXy71QPsctwccBo9jJs0ySPQ==",
1135-			"dev": true,
1136-			"license": "MIT",
1137-			"dependencies": {
1138-				"@rollup/plugin-commonjs": "^29.0.0",
1139-				"@rollup/plugin-json": "^6.1.0",
1140-				"@rollup/plugin-node-resolve": "^16.0.0",
1141-				"rollup": "^4.59.0"
1142-			},
1143-			"peerDependencies": {
1144-				"@sveltejs/kit": "^2.4.0"
1145-			}
1146-		},
1147-		"node_modules/@sveltejs/kit": {
1148-			"version": "2.55.0",
1149-			"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.55.0.tgz",
1150-			"integrity": "sha512-MdFRjevVxmAknf2NbaUkDF16jSIzXMWd4Nfah0Qp8TtQVoSp3bV4jKt8mX7z7qTUTWvgSaxtR0EG5WJf53gcuA==",
1151-			"dev": true,
1152-			"license": "MIT",
1153-			"dependencies": {
1154-				"@standard-schema/spec": "^1.0.0",
1155-				"@sveltejs/acorn-typescript": "^1.0.5",
1156-				"@types/cookie": "^0.6.0",
1157-				"acorn": "^8.14.1",
1158-				"cookie": "^0.6.0",
1159-				"devalue": "^5.6.4",
1160-				"esm-env": "^1.2.2",
1161-				"kleur": "^4.1.5",
1162-				"magic-string": "^0.30.5",
1163-				"mrmime": "^2.0.0",
1164-				"set-cookie-parser": "^3.0.0",
1165-				"sirv": "^3.0.0"
1166-			},
1167-			"bin": {
1168-				"svelte-kit": "svelte-kit.js"
1169-			},
1170-			"engines": {
1171-				"node": ">=18.13"
1172-			},
1173-			"peerDependencies": {
1174-				"@opentelemetry/api": "^1.0.0",
1175-				"@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0",
1176-				"svelte": "^4.0.0 || ^5.0.0-next.0",
1177-				"typescript": "^5.3.3",
1178-				"vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0"
1179-			},
1180-			"peerDependenciesMeta": {
1181-				"@opentelemetry/api": {
1182-					"optional": true
1183-				},
1184-				"typescript": {
1185-					"optional": true
1186-				}
1187-			}
1188-		},
1189-		"node_modules/@sveltejs/vite-plugin-svelte": {
1190-			"version": "6.2.4",
1191-			"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.4.tgz",
1192-			"integrity": "sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==",
1193-			"dev": true,
1194-			"license": "MIT",
1195-			"dependencies": {
1196-				"@sveltejs/vite-plugin-svelte-inspector": "^5.0.0",
1197-				"deepmerge": "^4.3.1",
1198-				"magic-string": "^0.30.21",
1199-				"obug": "^2.1.0",
1200-				"vitefu": "^1.1.1"
1201-			},
1202-			"engines": {
1203-				"node": "^20.19 || ^22.12 || >=24"
1204-			},
1205-			"peerDependencies": {
1206-				"svelte": "^5.0.0",
1207-				"vite": "^6.3.0 || ^7.0.0"
1208-			}
1209-		},
1210-		"node_modules/@sveltejs/vite-plugin-svelte-inspector": {
1211-			"version": "5.0.2",
1212-			"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.2.tgz",
1213-			"integrity": "sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==",
1214-			"dev": true,
1215-			"license": "MIT",
1216-			"dependencies": {
1217-				"obug": "^2.1.0"
1218-			},
1219-			"engines": {
1220-				"node": "^20.19 || ^22.12 || >=24"
1221-			},
1222-			"peerDependencies": {
1223-				"@sveltejs/vite-plugin-svelte": "^6.0.0-next.0",
1224-				"svelte": "^5.0.0",
1225-				"vite": "^6.3.0 || ^7.0.0"
1226-			}
1227-		},
1228-		"node_modules/@tailwindcss/node": {
1229-			"version": "4.2.2",
1230-			"resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz",
1231-			"integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==",
1232-			"dev": true,
1233-			"license": "MIT",
1234-			"dependencies": {
1235-				"@jridgewell/remapping": "^2.3.5",
1236-				"enhanced-resolve": "^5.19.0",
1237-				"jiti": "^2.6.1",
1238-				"lightningcss": "1.32.0",
1239-				"magic-string": "^0.30.21",
1240-				"source-map-js": "^1.2.1",
1241-				"tailwindcss": "4.2.2"
1242-			}
1243-		},
1244-		"node_modules/@tailwindcss/oxide": {
1245-			"version": "4.2.2",
1246-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz",
1247-			"integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==",
1248-			"dev": true,
1249-			"license": "MIT",
1250-			"engines": {
1251-				"node": ">= 20"
1252-			},
1253-			"optionalDependencies": {
1254-				"@tailwindcss/oxide-android-arm64": "4.2.2",
1255-				"@tailwindcss/oxide-darwin-arm64": "4.2.2",
1256-				"@tailwindcss/oxide-darwin-x64": "4.2.2",
1257-				"@tailwindcss/oxide-freebsd-x64": "4.2.2",
1258-				"@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2",
1259-				"@tailwindcss/oxide-linux-arm64-gnu": "4.2.2",
1260-				"@tailwindcss/oxide-linux-arm64-musl": "4.2.2",
1261-				"@tailwindcss/oxide-linux-x64-gnu": "4.2.2",
1262-				"@tailwindcss/oxide-linux-x64-musl": "4.2.2",
1263-				"@tailwindcss/oxide-wasm32-wasi": "4.2.2",
1264-				"@tailwindcss/oxide-win32-arm64-msvc": "4.2.2",
1265-				"@tailwindcss/oxide-win32-x64-msvc": "4.2.2"
1266-			}
1267-		},
1268-		"node_modules/@tailwindcss/oxide-android-arm64": {
1269-			"version": "4.2.2",
1270-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz",
1271-			"integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==",
1272-			"cpu": [
1273-				"arm64"
1274-			],
1275-			"dev": true,
1276-			"license": "MIT",
1277-			"optional": true,
1278-			"os": [
1279-				"android"
1280-			],
1281-			"engines": {
1282-				"node": ">= 20"
1283-			}
1284-		},
1285-		"node_modules/@tailwindcss/oxide-darwin-arm64": {
1286-			"version": "4.2.2",
1287-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz",
1288-			"integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==",
1289-			"cpu": [
1290-				"arm64"
1291-			],
1292-			"dev": true,
1293-			"license": "MIT",
1294-			"optional": true,
1295-			"os": [
1296-				"darwin"
1297-			],
1298-			"engines": {
1299-				"node": ">= 20"
1300-			}
1301-		},
1302-		"node_modules/@tailwindcss/oxide-darwin-x64": {
1303-			"version": "4.2.2",
1304-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz",
1305-			"integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==",
1306-			"cpu": [
1307-				"x64"
1308-			],
1309-			"dev": true,
1310-			"license": "MIT",
1311-			"optional": true,
1312-			"os": [
1313-				"darwin"
1314-			],
1315-			"engines": {
1316-				"node": ">= 20"
1317-			}
1318-		},
1319-		"node_modules/@tailwindcss/oxide-freebsd-x64": {
1320-			"version": "4.2.2",
1321-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz",
1322-			"integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==",
1323-			"cpu": [
1324-				"x64"
1325-			],
1326-			"dev": true,
1327-			"license": "MIT",
1328-			"optional": true,
1329-			"os": [
1330-				"freebsd"
1331-			],
1332-			"engines": {
1333-				"node": ">= 20"
1334-			}
1335-		},
1336-		"node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
1337-			"version": "4.2.2",
1338-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz",
1339-			"integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==",
1340-			"cpu": [
1341-				"arm"
1342-			],
1343-			"dev": true,
1344-			"license": "MIT",
1345-			"optional": true,
1346-			"os": [
1347-				"linux"
1348-			],
1349-			"engines": {
1350-				"node": ">= 20"
1351-			}
1352-		},
1353-		"node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
1354-			"version": "4.2.2",
1355-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz",
1356-			"integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==",
1357-			"cpu": [
1358-				"arm64"
1359-			],
1360-			"dev": true,
1361-			"license": "MIT",
1362-			"optional": true,
1363-			"os": [
1364-				"linux"
1365-			],
1366-			"engines": {
1367-				"node": ">= 20"
1368-			}
1369-		},
1370-		"node_modules/@tailwindcss/oxide-linux-arm64-musl": {
1371-			"version": "4.2.2",
1372-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz",
1373-			"integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==",
1374-			"cpu": [
1375-				"arm64"
1376-			],
1377-			"dev": true,
1378-			"license": "MIT",
1379-			"optional": true,
1380-			"os": [
1381-				"linux"
1382-			],
1383-			"engines": {
1384-				"node": ">= 20"
1385-			}
1386-		},
1387-		"node_modules/@tailwindcss/oxide-linux-x64-gnu": {
1388-			"version": "4.2.2",
1389-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz",
1390-			"integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==",
1391-			"cpu": [
1392-				"x64"
1393-			],
1394-			"dev": true,
1395-			"license": "MIT",
1396-			"optional": true,
1397-			"os": [
1398-				"linux"
1399-			],
1400-			"engines": {
1401-				"node": ">= 20"
1402-			}
1403-		},
1404-		"node_modules/@tailwindcss/oxide-linux-x64-musl": {
1405-			"version": "4.2.2",
1406-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz",
1407-			"integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==",
1408-			"cpu": [
1409-				"x64"
1410-			],
1411-			"dev": true,
1412-			"license": "MIT",
1413-			"optional": true,
1414-			"os": [
1415-				"linux"
1416-			],
1417-			"engines": {
1418-				"node": ">= 20"
1419-			}
1420-		},
1421-		"node_modules/@tailwindcss/oxide-wasm32-wasi": {
1422-			"version": "4.2.2",
1423-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz",
1424-			"integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==",
1425-			"bundleDependencies": [
1426-				"@napi-rs/wasm-runtime",
1427-				"@emnapi/core",
1428-				"@emnapi/runtime",
1429-				"@tybys/wasm-util",
1430-				"@emnapi/wasi-threads",
1431-				"tslib"
1432-			],
1433-			"cpu": [
1434-				"wasm32"
1435-			],
1436-			"dev": true,
1437-			"license": "MIT",
1438-			"optional": true,
1439-			"dependencies": {
1440-				"@emnapi/core": "^1.8.1",
1441-				"@emnapi/runtime": "^1.8.1",
1442-				"@emnapi/wasi-threads": "^1.1.0",
1443-				"@napi-rs/wasm-runtime": "^1.1.1",
1444-				"@tybys/wasm-util": "^0.10.1",
1445-				"tslib": "^2.8.1"
1446-			},
1447-			"engines": {
1448-				"node": ">=14.0.0"
1449-			}
1450-		},
1451-		"node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
1452-			"version": "4.2.2",
1453-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz",
1454-			"integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==",
1455-			"cpu": [
1456-				"arm64"
1457-			],
1458-			"dev": true,
1459-			"license": "MIT",
1460-			"optional": true,
1461-			"os": [
1462-				"win32"
1463-			],
1464-			"engines": {
1465-				"node": ">= 20"
1466-			}
1467-		},
1468-		"node_modules/@tailwindcss/oxide-win32-x64-msvc": {
1469-			"version": "4.2.2",
1470-			"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz",
1471-			"integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==",
1472-			"cpu": [
1473-				"x64"
1474-			],
1475-			"dev": true,
1476-			"license": "MIT",
1477-			"optional": true,
1478-			"os": [
1479-				"win32"
1480-			],
1481-			"engines": {
1482-				"node": ">= 20"
1483-			}
1484-		},
1485-		"node_modules/@tailwindcss/vite": {
1486-			"version": "4.2.2",
1487-			"resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.2.tgz",
1488-			"integrity": "sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==",
1489-			"dev": true,
1490-			"license": "MIT",
1491-			"dependencies": {
1492-				"@tailwindcss/node": "4.2.2",
1493-				"@tailwindcss/oxide": "4.2.2",
1494-				"tailwindcss": "4.2.2"
1495-			},
1496-			"peerDependencies": {
1497-				"vite": "^5.2.0 || ^6 || ^7 || ^8"
1498-			}
1499-		},
1500-		"node_modules/@types/cookie": {
1501-			"version": "0.6.0",
1502-			"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
1503-			"integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
1504-			"dev": true,
1505-			"license": "MIT"
1506-		},
1507-		"node_modules/@types/estree": {
1508-			"version": "1.0.8",
1509-			"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
1510-			"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
1511-			"dev": true,
1512-			"license": "MIT"
1513-		},
1514-		"node_modules/@types/hast": {
1515-			"version": "3.0.4",
1516-			"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
1517-			"integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
1518-			"license": "MIT",
1519-			"dependencies": {
1520-				"@types/unist": "*"
1521-			}
1522-		},
1523-		"node_modules/@types/mdast": {
1524-			"version": "4.0.4",
1525-			"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
1526-			"integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
1527-			"license": "MIT",
1528-			"dependencies": {
1529-				"@types/unist": "*"
1530-			}
1531-		},
1532-		"node_modules/@types/node": {
1533-			"version": "25.5.0",
1534-			"resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz",
1535-			"integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==",
1536-			"dev": true,
1537-			"license": "MIT",
1538-			"dependencies": {
1539-				"undici-types": "~7.18.0"
1540-			}
1541-		},
1542-		"node_modules/@types/resolve": {
1543-			"version": "1.20.2",
1544-			"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
1545-			"integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
1546-			"dev": true,
1547-			"license": "MIT"
1548-		},
1549-		"node_modules/@types/trusted-types": {
1550-			"version": "2.0.7",
1551-			"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
1552-			"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
1553-			"dev": true,
1554-			"license": "MIT"
1555-		},
1556-		"node_modules/@types/unist": {
1557-			"version": "3.0.3",
1558-			"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
1559-			"integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
1560-			"license": "MIT"
1561-		},
1562-		"node_modules/@types/ws": {
1563-			"version": "8.18.1",
1564-			"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
1565-			"integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
1566-			"dev": true,
1567-			"license": "MIT",
1568-			"dependencies": {
1569-				"@types/node": "*"
1570-			}
1571-		},
1572-		"node_modules/@typescript-eslint/types": {
1573-			"version": "8.57.2",
1574-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz",
1575-			"integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==",
1576-			"dev": true,
1577-			"license": "MIT",
1578-			"engines": {
1579-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1580-			},
1581-			"funding": {
1582-				"type": "opencollective",
1583-				"url": "https://opencollective.com/typescript-eslint"
1584-			}
1585-		},
1586-		"node_modules/@ungap/structured-clone": {
1587-			"version": "1.3.0",
1588-			"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
1589-			"integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
1590-			"license": "ISC"
1591-		},
1592-		"node_modules/@xterm/addon-fit": {
1593-			"version": "0.11.0",
1594-			"resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.11.0.tgz",
1595-			"integrity": "sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g==",
1596-			"license": "MIT"
1597-		},
1598-		"node_modules/@xterm/xterm": {
1599-			"version": "6.0.0",
1600-			"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-6.0.0.tgz",
1601-			"integrity": "sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg==",
1602-			"license": "MIT",
1603-			"workspaces": [
1604-				"addons/*"
1605-			]
1606-		},
1607-		"node_modules/abbrev": {
1608-			"version": "1.1.1",
1609-			"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
1610-			"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
1611-			"license": "ISC"
1612-		},
1613-		"node_modules/acorn": {
1614-			"version": "8.16.0",
1615-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
1616-			"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
1617-			"dev": true,
1618-			"license": "MIT",
1619-			"bin": {
1620-				"acorn": "bin/acorn"
1621-			},
1622-			"engines": {
1623-				"node": ">=0.4.0"
1624-			}
1625-		},
1626-		"node_modules/aria-query": {
1627-			"version": "5.3.1",
1628-			"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz",
1629-			"integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==",
1630-			"dev": true,
1631-			"license": "Apache-2.0",
1632-			"engines": {
1633-				"node": ">= 0.4"
1634-			}
1635-		},
1636-		"node_modules/axobject-query": {
1637-			"version": "4.1.0",
1638-			"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
1639-			"integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
1640-			"dev": true,
1641-			"license": "Apache-2.0",
1642-			"engines": {
1643-				"node": ">= 0.4"
1644-			}
1645-		},
1646-		"node_modules/bundle-name": {
1647-			"version": "4.1.0",
1648-			"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
1649-			"integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
1650-			"license": "MIT",
1651-			"dependencies": {
1652-				"run-applescript": "^7.0.0"
1653-			},
1654-			"engines": {
1655-				"node": ">=18"
1656-			},
1657-			"funding": {
1658-				"url": "https://github.com/sponsors/sindresorhus"
1659-			}
1660-		},
1661-		"node_modules/ccount": {
1662-			"version": "2.0.1",
1663-			"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
1664-			"integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
1665-			"license": "MIT",
1666-			"funding": {
1667-				"type": "github",
1668-				"url": "https://github.com/sponsors/wooorm"
1669-			}
1670-		},
1671-		"node_modules/character-entities-html4": {
1672-			"version": "2.1.0",
1673-			"resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
1674-			"integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
1675-			"license": "MIT",
1676-			"funding": {
1677-				"type": "github",
1678-				"url": "https://github.com/sponsors/wooorm"
1679-			}
1680-		},
1681-		"node_modules/character-entities-legacy": {
1682-			"version": "3.0.0",
1683-			"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
1684-			"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
1685-			"license": "MIT",
1686-			"funding": {
1687-				"type": "github",
1688-				"url": "https://github.com/sponsors/wooorm"
1689-			}
1690-		},
1691-		"node_modules/chokidar": {
1692-			"version": "4.0.3",
1693-			"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
1694-			"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
1695-			"dev": true,
1696-			"license": "MIT",
1697-			"dependencies": {
1698-				"readdirp": "^4.0.1"
1699-			},
1700-			"engines": {
1701-				"node": ">= 14.16.0"
1702-			},
1703-			"funding": {
1704-				"url": "https://paulmillr.com/funding/"
1705-			}
1706-		},
1707-		"node_modules/clsx": {
1708-			"version": "2.1.1",
1709-			"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
1710-			"integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
1711-			"dev": true,
1712-			"license": "MIT",
1713-			"engines": {
1714-				"node": ">=6"
1715-			}
1716-		},
1717-		"node_modules/comma-separated-tokens": {
1718-			"version": "2.0.3",
1719-			"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
1720-			"integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
1721-			"license": "MIT",
1722-			"funding": {
1723-				"type": "github",
1724-				"url": "https://github.com/sponsors/wooorm"
1725-			}
1726-		},
1727-		"node_modules/commondir": {
1728-			"version": "1.0.1",
1729-			"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
1730-			"integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
1731-			"dev": true,
1732-			"license": "MIT"
1733-		},
1734-		"node_modules/cookie": {
1735-			"version": "0.6.0",
1736-			"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
1737-			"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
1738-			"dev": true,
1739-			"license": "MIT",
1740-			"engines": {
1741-				"node": ">= 0.6"
1742-			}
1743-		},
1744-		"node_modules/debug": {
1745-			"version": "4.4.3",
1746-			"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
1747-			"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1748-			"license": "MIT",
1749-			"dependencies": {
1750-				"ms": "^2.1.3"
1751-			},
1752-			"engines": {
1753-				"node": ">=6.0"
1754-			},
1755-			"peerDependenciesMeta": {
1756-				"supports-color": {
1757-					"optional": true
1758-				}
1759-			}
1760-		},
1761-		"node_modules/deepmerge": {
1762-			"version": "4.3.1",
1763-			"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
1764-			"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
1765-			"dev": true,
1766-			"license": "MIT",
1767-			"engines": {
1768-				"node": ">=0.10.0"
1769-			}
1770-		},
1771-		"node_modules/default-browser": {
1772-			"version": "5.5.0",
1773-			"resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz",
1774-			"integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
1775-			"license": "MIT",
1776-			"dependencies": {
1777-				"bundle-name": "^4.1.0",
1778-				"default-browser-id": "^5.0.0"
1779-			},
1780-			"engines": {
1781-				"node": ">=18"
1782-			},
1783-			"funding": {
1784-				"url": "https://github.com/sponsors/sindresorhus"
1785-			}
1786-		},
1787-		"node_modules/default-browser-id": {
1788-			"version": "5.0.1",
1789-			"resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
1790-			"integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
1791-			"license": "MIT",
1792-			"engines": {
1793-				"node": ">=18"
1794-			},
1795-			"funding": {
1796-				"url": "https://github.com/sponsors/sindresorhus"
1797-			}
1798-		},
1799-		"node_modules/define-lazy-prop": {
1800-			"version": "3.0.0",
1801-			"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
1802-			"integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
1803-			"license": "MIT",
1804-			"engines": {
1805-				"node": ">=12"
1806-			},
1807-			"funding": {
1808-				"url": "https://github.com/sponsors/sindresorhus"
1809-			}
1810-		},
1811-		"node_modules/dequal": {
1812-			"version": "2.0.3",
1813-			"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
1814-			"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
1815-			"license": "MIT",
1816-			"engines": {
1817-				"node": ">=6"
1818-			}
1819-		},
1820-		"node_modules/detect-libc": {
1821-			"version": "2.1.2",
1822-			"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
1823-			"integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
1824-			"dev": true,
1825-			"license": "Apache-2.0",
1826-			"engines": {
1827-				"node": ">=8"
1828-			}
1829-		},
1830-		"node_modules/devalue": {
1831-			"version": "5.6.4",
1832-			"resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.4.tgz",
1833-			"integrity": "sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==",
1834-			"dev": true,
1835-			"license": "MIT"
1836-		},
1837-		"node_modules/devlop": {
1838-			"version": "1.1.0",
1839-			"resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
1840-			"integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
1841-			"license": "MIT",
1842-			"dependencies": {
1843-				"dequal": "^2.0.0"
1844-			},
1845-			"funding": {
1846-				"type": "github",
1847-				"url": "https://github.com/sponsors/wooorm"
1848-			}
1849-		},
1850-		"node_modules/diff": {
1851-			"version": "8.0.4",
1852-			"resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
1853-			"integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
1854-			"license": "BSD-3-Clause",
1855-			"engines": {
1856-				"node": ">=0.3.1"
1857-			}
1858-		},
1859-		"node_modules/diff2html": {
1860-			"version": "3.4.56",
1861-			"resolved": "https://registry.npmjs.org/diff2html/-/diff2html-3.4.56.tgz",
1862-			"integrity": "sha512-u9gfn+BlbHcyO7vItCIC4z49LJDUt31tODzOfAuJ5R1E7IdlRL6KjugcB9zOpejD+XiR+dDZbsnHSQ3g6A/u8A==",
1863-			"license": "MIT",
1864-			"dependencies": {
1865-				"@profoundlogic/hogan": "^3.0.4",
1866-				"diff": "^8.0.3"
1867-			},
1868-			"engines": {
1869-				"node": ">=12"
1870-			},
1871-			"optionalDependencies": {
1872-				"highlight.js": "11.11.1"
1873-			}
1874-		},
1875-		"node_modules/enhanced-resolve": {
1876-			"version": "5.20.1",
1877-			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz",
1878-			"integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==",
1879-			"dev": true,
1880-			"license": "MIT",
1881-			"dependencies": {
1882-				"graceful-fs": "^4.2.4",
1883-				"tapable": "^2.3.0"
1884-			},
1885-			"engines": {
1886-				"node": ">=10.13.0"
1887-			}
1888-		},
1889-		"node_modules/esbuild": {
1890-			"version": "0.27.4",
1891-			"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz",
1892-			"integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==",
1893-			"dev": true,
1894-			"hasInstallScript": true,
1895-			"license": "MIT",
1896-			"bin": {
1897-				"esbuild": "bin/esbuild"
1898-			},
1899-			"engines": {
1900-				"node": ">=18"
1901-			},
1902-			"optionalDependencies": {
1903-				"@esbuild/aix-ppc64": "0.27.4",
1904-				"@esbuild/android-arm": "0.27.4",
1905-				"@esbuild/android-arm64": "0.27.4",
1906-				"@esbuild/android-x64": "0.27.4",
1907-				"@esbuild/darwin-arm64": "0.27.4",
1908-				"@esbuild/darwin-x64": "0.27.4",
1909-				"@esbuild/freebsd-arm64": "0.27.4",
1910-				"@esbuild/freebsd-x64": "0.27.4",
1911-				"@esbuild/linux-arm": "0.27.4",
1912-				"@esbuild/linux-arm64": "0.27.4",
1913-				"@esbuild/linux-ia32": "0.27.4",
1914-				"@esbuild/linux-loong64": "0.27.4",
1915-				"@esbuild/linux-mips64el": "0.27.4",
1916-				"@esbuild/linux-ppc64": "0.27.4",
1917-				"@esbuild/linux-riscv64": "0.27.4",
1918-				"@esbuild/linux-s390x": "0.27.4",
1919-				"@esbuild/linux-x64": "0.27.4",
1920-				"@esbuild/netbsd-arm64": "0.27.4",
1921-				"@esbuild/netbsd-x64": "0.27.4",
1922-				"@esbuild/openbsd-arm64": "0.27.4",
1923-				"@esbuild/openbsd-x64": "0.27.4",
1924-				"@esbuild/openharmony-arm64": "0.27.4",
1925-				"@esbuild/sunos-x64": "0.27.4",
1926-				"@esbuild/win32-arm64": "0.27.4",
1927-				"@esbuild/win32-ia32": "0.27.4",
1928-				"@esbuild/win32-x64": "0.27.4"
1929-			}
1930-		},
1931-		"node_modules/esm-env": {
1932-			"version": "1.2.2",
1933-			"resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz",
1934-			"integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==",
1935-			"dev": true,
1936-			"license": "MIT"
1937-		},
1938-		"node_modules/esrap": {
1939-			"version": "2.2.4",
1940-			"resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.4.tgz",
1941-			"integrity": "sha512-suICpxAmZ9A8bzJjEl/+rLJiDKC0X4gYWUxT6URAWBLvlXmtbZd5ySMu/N2ZGEtMCAmflUDPSehrP9BQcsGcSg==",
1942-			"dev": true,
1943-			"license": "MIT",
1944-			"dependencies": {
1945-				"@jridgewell/sourcemap-codec": "^1.4.15",
1946-				"@typescript-eslint/types": "^8.2.0"
1947-			}
1948-		},
1949-		"node_modules/estree-walker": {
1950-			"version": "2.0.2",
1951-			"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1952-			"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
1953-			"dev": true,
1954-			"license": "MIT"
1955-		},
1956-		"node_modules/fdir": {
1957-			"version": "6.5.0",
1958-			"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
1959-			"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
1960-			"dev": true,
1961-			"license": "MIT",
1962-			"engines": {
1963-				"node": ">=12.0.0"
1964-			},
1965-			"peerDependencies": {
1966-				"picomatch": "^3 || ^4"
1967-			},
1968-			"peerDependenciesMeta": {
1969-				"picomatch": {
1970-					"optional": true
1971-				}
1972-			}
1973-		},
1974-		"node_modules/fsevents": {
1975-			"version": "2.3.3",
1976-			"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1977-			"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1978-			"dev": true,
1979-			"hasInstallScript": true,
1980-			"license": "MIT",
1981-			"optional": true,
1982-			"os": [
1983-				"darwin"
1984-			],
1985-			"engines": {
1986-				"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1987-			}
1988-		},
1989-		"node_modules/function-bind": {
1990-			"version": "1.1.2",
1991-			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1992-			"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1993-			"dev": true,
1994-			"license": "MIT",
1995-			"funding": {
1996-				"url": "https://github.com/sponsors/ljharb"
1997-			}
1998-		},
1999-		"node_modules/graceful-fs": {
2000-			"version": "4.2.11",
2001-			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
2002-			"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
2003-			"dev": true,
2004-			"license": "ISC"
2005-		},
2006-		"node_modules/hasown": {
2007-			"version": "2.0.2",
2008-			"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
2009-			"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
2010-			"dev": true,
2011-			"license": "MIT",
2012-			"dependencies": {
2013-				"function-bind": "^1.1.2"
2014-			},
2015-			"engines": {
2016-				"node": ">= 0.4"
2017-			}
2018-		},
2019-		"node_modules/hast-util-to-html": {
2020-			"version": "9.0.5",
2021-			"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
2022-			"integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==",
2023-			"license": "MIT",
2024-			"dependencies": {
2025-				"@types/hast": "^3.0.0",
2026-				"@types/unist": "^3.0.0",
2027-				"ccount": "^2.0.0",
2028-				"comma-separated-tokens": "^2.0.0",
2029-				"hast-util-whitespace": "^3.0.0",
2030-				"html-void-elements": "^3.0.0",
2031-				"mdast-util-to-hast": "^13.0.0",
2032-				"property-information": "^7.0.0",
2033-				"space-separated-tokens": "^2.0.0",
2034-				"stringify-entities": "^4.0.0",
2035-				"zwitch": "^2.0.4"
2036-			},
2037-			"funding": {
2038-				"type": "opencollective",
2039-				"url": "https://opencollective.com/unified"
2040-			}
2041-		},
2042-		"node_modules/hast-util-whitespace": {
2043-			"version": "3.0.0",
2044-			"resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
2045-			"integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
2046-			"license": "MIT",
2047-			"dependencies": {
2048-				"@types/hast": "^3.0.0"
2049-			},
2050-			"funding": {
2051-				"type": "opencollective",
2052-				"url": "https://opencollective.com/unified"
2053-			}
2054-		},
2055-		"node_modules/highlight.js": {
2056-			"version": "11.11.1",
2057-			"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz",
2058-			"integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==",
2059-			"license": "BSD-3-Clause",
2060-			"optional": true,
2061-			"engines": {
2062-				"node": ">=12.0.0"
2063-			}
2064-		},
2065-		"node_modules/html-void-elements": {
2066-			"version": "3.0.0",
2067-			"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
2068-			"integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
2069-			"license": "MIT",
2070-			"funding": {
2071-				"type": "github",
2072-				"url": "https://github.com/sponsors/wooorm"
2073-			}
2074-		},
2075-		"node_modules/is-core-module": {
2076-			"version": "2.16.1",
2077-			"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
2078-			"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
2079-			"dev": true,
2080-			"license": "MIT",
2081-			"dependencies": {
2082-				"hasown": "^2.0.2"
2083-			},
2084-			"engines": {
2085-				"node": ">= 0.4"
2086-			},
2087-			"funding": {
2088-				"url": "https://github.com/sponsors/ljharb"
2089-			}
2090-		},
2091-		"node_modules/is-docker": {
2092-			"version": "3.0.0",
2093-			"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
2094-			"integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
2095-			"license": "MIT",
2096-			"bin": {
2097-				"is-docker": "cli.js"
2098-			},
2099-			"engines": {
2100-				"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
2101-			},
2102-			"funding": {
2103-				"url": "https://github.com/sponsors/sindresorhus"
2104-			}
2105-		},
2106-		"node_modules/is-in-ssh": {
2107-			"version": "1.0.0",
2108-			"resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz",
2109-			"integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==",
2110-			"license": "MIT",
2111-			"engines": {
2112-				"node": ">=20"
2113-			},
2114-			"funding": {
2115-				"url": "https://github.com/sponsors/sindresorhus"
2116-			}
2117-		},
2118-		"node_modules/is-inside-container": {
2119-			"version": "1.0.0",
2120-			"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
2121-			"integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
2122-			"license": "MIT",
2123-			"dependencies": {
2124-				"is-docker": "^3.0.0"
2125-			},
2126-			"bin": {
2127-				"is-inside-container": "cli.js"
2128-			},
2129-			"engines": {
2130-				"node": ">=14.16"
2131-			},
2132-			"funding": {
2133-				"url": "https://github.com/sponsors/sindresorhus"
2134-			}
2135-		},
2136-		"node_modules/is-module": {
2137-			"version": "1.0.0",
2138-			"resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
2139-			"integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
2140-			"dev": true,
2141-			"license": "MIT"
2142-		},
2143-		"node_modules/is-reference": {
2144-			"version": "1.2.1",
2145-			"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
2146-			"integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
2147-			"dev": true,
2148-			"license": "MIT",
2149-			"dependencies": {
2150-				"@types/estree": "*"
2151-			}
2152-		},
2153-		"node_modules/is-wsl": {
2154-			"version": "3.1.1",
2155-			"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
2156-			"integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
2157-			"license": "MIT",
2158-			"dependencies": {
2159-				"is-inside-container": "^1.0.0"
2160-			},
2161-			"engines": {
2162-				"node": ">=16"
2163-			},
2164-			"funding": {
2165-				"url": "https://github.com/sponsors/sindresorhus"
2166-			}
2167-		},
2168-		"node_modules/jiti": {
2169-			"version": "2.6.1",
2170-			"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
2171-			"integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
2172-			"dev": true,
2173-			"license": "MIT",
2174-			"bin": {
2175-				"jiti": "lib/jiti-cli.mjs"
2176-			}
2177-		},
2178-		"node_modules/kleur": {
2179-			"version": "4.1.5",
2180-			"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
2181-			"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
2182-			"dev": true,
2183-			"license": "MIT",
2184-			"engines": {
2185-				"node": ">=6"
2186-			}
2187-		},
2188-		"node_modules/lightningcss": {
2189-			"version": "1.32.0",
2190-			"resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
2191-			"integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
2192-			"dev": true,
2193-			"license": "MPL-2.0",
2194-			"dependencies": {
2195-				"detect-libc": "^2.0.3"
2196-			},
2197-			"engines": {
2198-				"node": ">= 12.0.0"
2199-			},
2200-			"funding": {
2201-				"type": "opencollective",
2202-				"url": "https://opencollective.com/parcel"
2203-			},
2204-			"optionalDependencies": {
2205-				"lightningcss-android-arm64": "1.32.0",
2206-				"lightningcss-darwin-arm64": "1.32.0",
2207-				"lightningcss-darwin-x64": "1.32.0",
2208-				"lightningcss-freebsd-x64": "1.32.0",
2209-				"lightningcss-linux-arm-gnueabihf": "1.32.0",
2210-				"lightningcss-linux-arm64-gnu": "1.32.0",
2211-				"lightningcss-linux-arm64-musl": "1.32.0",
2212-				"lightningcss-linux-x64-gnu": "1.32.0",
2213-				"lightningcss-linux-x64-musl": "1.32.0",
2214-				"lightningcss-win32-arm64-msvc": "1.32.0",
2215-				"lightningcss-win32-x64-msvc": "1.32.0"
2216-			}
2217-		},
2218-		"node_modules/lightningcss-android-arm64": {
2219-			"version": "1.32.0",
2220-			"resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
2221-			"integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
2222-			"cpu": [
2223-				"arm64"
2224-			],
2225-			"dev": true,
2226-			"license": "MPL-2.0",
2227-			"optional": true,
2228-			"os": [
2229-				"android"
2230-			],
2231-			"engines": {
2232-				"node": ">= 12.0.0"
2233-			},
2234-			"funding": {
2235-				"type": "opencollective",
2236-				"url": "https://opencollective.com/parcel"
2237-			}
2238-		},
2239-		"node_modules/lightningcss-darwin-arm64": {
2240-			"version": "1.32.0",
2241-			"resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
2242-			"integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
2243-			"cpu": [
2244-				"arm64"
2245-			],
2246-			"dev": true,
2247-			"license": "MPL-2.0",
2248-			"optional": true,
2249-			"os": [
2250-				"darwin"
2251-			],
2252-			"engines": {
2253-				"node": ">= 12.0.0"
2254-			},
2255-			"funding": {
2256-				"type": "opencollective",
2257-				"url": "https://opencollective.com/parcel"
2258-			}
2259-		},
2260-		"node_modules/lightningcss-darwin-x64": {
2261-			"version": "1.32.0",
2262-			"resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
2263-			"integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
2264-			"cpu": [
2265-				"x64"
2266-			],
2267-			"dev": true,
2268-			"license": "MPL-2.0",
2269-			"optional": true,
2270-			"os": [
2271-				"darwin"
2272-			],
2273-			"engines": {
2274-				"node": ">= 12.0.0"
2275-			},
2276-			"funding": {
2277-				"type": "opencollective",
2278-				"url": "https://opencollective.com/parcel"
2279-			}
2280-		},
2281-		"node_modules/lightningcss-freebsd-x64": {
2282-			"version": "1.32.0",
2283-			"resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
2284-			"integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
2285-			"cpu": [
2286-				"x64"
2287-			],
2288-			"dev": true,
2289-			"license": "MPL-2.0",
2290-			"optional": true,
2291-			"os": [
2292-				"freebsd"
2293-			],
2294-			"engines": {
2295-				"node": ">= 12.0.0"
2296-			},
2297-			"funding": {
2298-				"type": "opencollective",
2299-				"url": "https://opencollective.com/parcel"
2300-			}
2301-		},
2302-		"node_modules/lightningcss-linux-arm-gnueabihf": {
2303-			"version": "1.32.0",
2304-			"resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
2305-			"integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
2306-			"cpu": [
2307-				"arm"
2308-			],
2309-			"dev": true,
2310-			"license": "MPL-2.0",
2311-			"optional": true,
2312-			"os": [
2313-				"linux"
2314-			],
2315-			"engines": {
2316-				"node": ">= 12.0.0"
2317-			},
2318-			"funding": {
2319-				"type": "opencollective",
2320-				"url": "https://opencollective.com/parcel"
2321-			}
2322-		},
2323-		"node_modules/lightningcss-linux-arm64-gnu": {
2324-			"version": "1.32.0",
2325-			"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
2326-			"integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
2327-			"cpu": [
2328-				"arm64"
2329-			],
2330-			"dev": true,
2331-			"license": "MPL-2.0",
2332-			"optional": true,
2333-			"os": [
2334-				"linux"
2335-			],
2336-			"engines": {
2337-				"node": ">= 12.0.0"
2338-			},
2339-			"funding": {
2340-				"type": "opencollective",
2341-				"url": "https://opencollective.com/parcel"
2342-			}
2343-		},
2344-		"node_modules/lightningcss-linux-arm64-musl": {
2345-			"version": "1.32.0",
2346-			"resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
2347-			"integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
2348-			"cpu": [
2349-				"arm64"
2350-			],
2351-			"dev": true,
2352-			"license": "MPL-2.0",
2353-			"optional": true,
2354-			"os": [
2355-				"linux"
2356-			],
2357-			"engines": {
2358-				"node": ">= 12.0.0"
2359-			},
2360-			"funding": {
2361-				"type": "opencollective",
2362-				"url": "https://opencollective.com/parcel"
2363-			}
2364-		},
2365-		"node_modules/lightningcss-linux-x64-gnu": {
2366-			"version": "1.32.0",
2367-			"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
2368-			"integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
2369-			"cpu": [
2370-				"x64"
2371-			],
2372-			"dev": true,
2373-			"license": "MPL-2.0",
2374-			"optional": true,
2375-			"os": [
2376-				"linux"
2377-			],
2378-			"engines": {
2379-				"node": ">= 12.0.0"
2380-			},
2381-			"funding": {
2382-				"type": "opencollective",
2383-				"url": "https://opencollective.com/parcel"
2384-			}
2385-		},
2386-		"node_modules/lightningcss-linux-x64-musl": {
2387-			"version": "1.32.0",
2388-			"resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
2389-			"integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
2390-			"cpu": [
2391-				"x64"
2392-			],
2393-			"dev": true,
2394-			"license": "MPL-2.0",
2395-			"optional": true,
2396-			"os": [
2397-				"linux"
2398-			],
2399-			"engines": {
2400-				"node": ">= 12.0.0"
2401-			},
2402-			"funding": {
2403-				"type": "opencollective",
2404-				"url": "https://opencollective.com/parcel"
2405-			}
2406-		},
2407-		"node_modules/lightningcss-win32-arm64-msvc": {
2408-			"version": "1.32.0",
2409-			"resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
2410-			"integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
2411-			"cpu": [
2412-				"arm64"
2413-			],
2414-			"dev": true,
2415-			"license": "MPL-2.0",
2416-			"optional": true,
2417-			"os": [
2418-				"win32"
2419-			],
2420-			"engines": {
2421-				"node": ">= 12.0.0"
2422-			},
2423-			"funding": {
2424-				"type": "opencollective",
2425-				"url": "https://opencollective.com/parcel"
2426-			}
2427-		},
2428-		"node_modules/lightningcss-win32-x64-msvc": {
2429-			"version": "1.32.0",
2430-			"resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
2431-			"integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
2432-			"cpu": [
2433-				"x64"
2434-			],
2435-			"dev": true,
2436-			"license": "MPL-2.0",
2437-			"optional": true,
2438-			"os": [
2439-				"win32"
2440-			],
2441-			"engines": {
2442-				"node": ">= 12.0.0"
2443-			},
2444-			"funding": {
2445-				"type": "opencollective",
2446-				"url": "https://opencollective.com/parcel"
2447-			}
2448-		},
2449-		"node_modules/locate-character": {
2450-			"version": "3.0.0",
2451-			"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
2452-			"integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
2453-			"dev": true,
2454-			"license": "MIT"
2455-		},
2456-		"node_modules/magic-string": {
2457-			"version": "0.30.21",
2458-			"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
2459-			"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
2460-			"dev": true,
2461-			"license": "MIT",
2462-			"dependencies": {
2463-				"@jridgewell/sourcemap-codec": "^1.5.5"
2464-			}
2465-		},
2466-		"node_modules/mdast-util-to-hast": {
2467-			"version": "13.2.1",
2468-			"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
2469-			"integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
2470-			"license": "MIT",
2471-			"dependencies": {
2472-				"@types/hast": "^3.0.0",
2473-				"@types/mdast": "^4.0.0",
2474-				"@ungap/structured-clone": "^1.0.0",
2475-				"devlop": "^1.0.0",
2476-				"micromark-util-sanitize-uri": "^2.0.0",
2477-				"trim-lines": "^3.0.0",
2478-				"unist-util-position": "^5.0.0",
2479-				"unist-util-visit": "^5.0.0",
2480-				"vfile": "^6.0.0"
2481-			},
2482-			"funding": {
2483-				"type": "opencollective",
2484-				"url": "https://opencollective.com/unified"
2485-			}
2486-		},
2487-		"node_modules/micromark-util-character": {
2488-			"version": "2.1.1",
2489-			"resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
2490-			"integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
2491-			"funding": [
2492-				{
2493-					"type": "GitHub Sponsors",
2494-					"url": "https://github.com/sponsors/unifiedjs"
2495-				},
2496-				{
2497-					"type": "OpenCollective",
2498-					"url": "https://opencollective.com/unified"
2499-				}
2500-			],
2501-			"license": "MIT",
2502-			"dependencies": {
2503-				"micromark-util-symbol": "^2.0.0",
2504-				"micromark-util-types": "^2.0.0"
2505-			}
2506-		},
2507-		"node_modules/micromark-util-encode": {
2508-			"version": "2.0.1",
2509-			"resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
2510-			"integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
2511-			"funding": [
2512-				{
2513-					"type": "GitHub Sponsors",
2514-					"url": "https://github.com/sponsors/unifiedjs"
2515-				},
2516-				{
2517-					"type": "OpenCollective",
2518-					"url": "https://opencollective.com/unified"
2519-				}
2520-			],
2521-			"license": "MIT"
2522-		},
2523-		"node_modules/micromark-util-sanitize-uri": {
2524-			"version": "2.0.1",
2525-			"resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
2526-			"integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
2527-			"funding": [
2528-				{
2529-					"type": "GitHub Sponsors",
2530-					"url": "https://github.com/sponsors/unifiedjs"
2531-				},
2532-				{
2533-					"type": "OpenCollective",
2534-					"url": "https://opencollective.com/unified"
2535-				}
2536-			],
2537-			"license": "MIT",
2538-			"dependencies": {
2539-				"micromark-util-character": "^2.0.0",
2540-				"micromark-util-encode": "^2.0.0",
2541-				"micromark-util-symbol": "^2.0.0"
2542-			}
2543-		},
2544-		"node_modules/micromark-util-symbol": {
2545-			"version": "2.0.1",
2546-			"resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
2547-			"integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
2548-			"funding": [
2549-				{
2550-					"type": "GitHub Sponsors",
2551-					"url": "https://github.com/sponsors/unifiedjs"
2552-				},
2553-				{
2554-					"type": "OpenCollective",
2555-					"url": "https://opencollective.com/unified"
2556-				}
2557-			],
2558-			"license": "MIT"
2559-		},
2560-		"node_modules/micromark-util-types": {
2561-			"version": "2.0.2",
2562-			"resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz",
2563-			"integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==",
2564-			"funding": [
2565-				{
2566-					"type": "GitHub Sponsors",
2567-					"url": "https://github.com/sponsors/unifiedjs"
2568-				},
2569-				{
2570-					"type": "OpenCollective",
2571-					"url": "https://opencollective.com/unified"
2572-				}
2573-			],
2574-			"license": "MIT"
2575-		},
2576-		"node_modules/mri": {
2577-			"version": "1.2.0",
2578-			"resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
2579-			"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
2580-			"dev": true,
2581-			"license": "MIT",
2582-			"engines": {
2583-				"node": ">=4"
2584-			}
2585-		},
2586-		"node_modules/mrmime": {
2587-			"version": "2.0.1",
2588-			"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz",
2589-			"integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==",
2590-			"dev": true,
2591-			"license": "MIT",
2592-			"engines": {
2593-				"node": ">=10"
2594-			}
2595-		},
2596-		"node_modules/ms": {
2597-			"version": "2.1.3",
2598-			"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
2599-			"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2600-			"license": "MIT"
2601-		},
2602-		"node_modules/nanoid": {
2603-			"version": "3.3.11",
2604-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
2605-			"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
2606-			"dev": true,
2607-			"funding": [
2608-				{
2609-					"type": "github",
2610-					"url": "https://github.com/sponsors/ai"
2611-				}
2612-			],
2613-			"license": "MIT",
2614-			"bin": {
2615-				"nanoid": "bin/nanoid.cjs"
2616-			},
2617-			"engines": {
2618-				"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
2619-			}
2620-		},
2621-		"node_modules/node-addon-api": {
2622-			"version": "7.1.1",
2623-			"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
2624-			"integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
2625-			"license": "MIT"
2626-		},
2627-		"node_modules/node-pty": {
2628-			"version": "1.2.0-beta.12",
2629-			"resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.2.0-beta.12.tgz",
2630-			"integrity": "sha512-uExTCG/4VmSJa4+TjxFwPXv8BfacmfFEBL6JpxCMDghcwqzvD0yTcGmZ1fKOK6HY33tp0CelLblqTECJizc+Yw==",
2631-			"hasInstallScript": true,
2632-			"license": "MIT",
2633-			"dependencies": {
2634-				"node-addon-api": "^7.1.0"
2635-			}
2636-		},
2637-		"node_modules/nopt": {
2638-			"version": "1.0.10",
2639-			"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
2640-			"integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
2641-			"license": "MIT",
2642-			"dependencies": {
2643-				"abbrev": "1"
2644-			},
2645-			"bin": {
2646-				"nopt": "bin/nopt.js"
2647-			},
2648-			"engines": {
2649-				"node": "*"
2650-			}
2651-		},
2652-		"node_modules/obug": {
2653-			"version": "2.1.1",
2654-			"resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
2655-			"integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
2656-			"dev": true,
2657-			"funding": [
2658-				"https://github.com/sponsors/sxzz",
2659-				"https://opencollective.com/debug"
2660-			],
2661-			"license": "MIT"
2662-		},
2663-		"node_modules/oniguruma-parser": {
2664-			"version": "0.12.1",
2665-			"resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz",
2666-			"integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==",
2667-			"license": "MIT"
2668-		},
2669-		"node_modules/oniguruma-to-es": {
2670-			"version": "4.3.5",
2671-			"resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.5.tgz",
2672-			"integrity": "sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==",
2673-			"license": "MIT",
2674-			"dependencies": {
2675-				"oniguruma-parser": "^0.12.1",
2676-				"regex": "^6.1.0",
2677-				"regex-recursion": "^6.0.2"
2678-			}
2679-		},
2680-		"node_modules/open": {
2681-			"version": "11.0.0",
2682-			"resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz",
2683-			"integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==",
2684-			"license": "MIT",
2685-			"dependencies": {
2686-				"default-browser": "^5.4.0",
2687-				"define-lazy-prop": "^3.0.0",
2688-				"is-in-ssh": "^1.0.0",
2689-				"is-inside-container": "^1.0.0",
2690-				"powershell-utils": "^0.1.0",
2691-				"wsl-utils": "^0.3.0"
2692-			},
2693-			"engines": {
2694-				"node": ">=20"
2695-			},
2696-			"funding": {
2697-				"url": "https://github.com/sponsors/sindresorhus"
2698-			}
2699-		},
2700-		"node_modules/path-parse": {
2701-			"version": "1.0.7",
2702-			"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2703-			"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2704-			"dev": true,
2705-			"license": "MIT"
2706-		},
2707-		"node_modules/picocolors": {
2708-			"version": "1.1.1",
2709-			"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
2710-			"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
2711-			"dev": true,
2712-			"license": "ISC"
2713-		},
2714-		"node_modules/picomatch": {
2715-			"version": "4.0.4",
2716-			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
2717-			"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
2718-			"dev": true,
2719-			"license": "MIT",
2720-			"engines": {
2721-				"node": ">=12"
2722-			},
2723-			"funding": {
2724-				"url": "https://github.com/sponsors/jonschlinkert"
2725-			}
2726-		},
2727-		"node_modules/postcss": {
2728-			"version": "8.5.8",
2729-			"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
2730-			"integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
2731-			"dev": true,
2732-			"funding": [
2733-				{
2734-					"type": "opencollective",
2735-					"url": "https://opencollective.com/postcss/"
2736-				},
2737-				{
2738-					"type": "tidelift",
2739-					"url": "https://tidelift.com/funding/github/npm/postcss"
2740-				},
2741-				{
2742-					"type": "github",
2743-					"url": "https://github.com/sponsors/ai"
2744-				}
2745-			],
2746-			"license": "MIT",
2747-			"dependencies": {
2748-				"nanoid": "^3.3.11",
2749-				"picocolors": "^1.1.1",
2750-				"source-map-js": "^1.2.1"
2751-			},
2752-			"engines": {
2753-				"node": "^10 || ^12 || >=14"
2754-			}
2755-		},
2756-		"node_modules/powershell-utils": {
2757-			"version": "0.1.0",
2758-			"resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz",
2759-			"integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==",
2760-			"license": "MIT",
2761-			"engines": {
2762-				"node": ">=20"
2763-			},
2764-			"funding": {
2765-				"url": "https://github.com/sponsors/sindresorhus"
2766-			}
2767-		},
2768-		"node_modules/property-information": {
2769-			"version": "7.1.0",
2770-			"resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
2771-			"integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
2772-			"license": "MIT",
2773-			"funding": {
2774-				"type": "github",
2775-				"url": "https://github.com/sponsors/wooorm"
2776-			}
2777-		},
2778-		"node_modules/readdirp": {
2779-			"version": "4.1.2",
2780-			"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
2781-			"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
2782-			"dev": true,
2783-			"license": "MIT",
2784-			"engines": {
2785-				"node": ">= 14.18.0"
2786-			},
2787-			"funding": {
2788-				"type": "individual",
2789-				"url": "https://paulmillr.com/funding/"
2790-			}
2791-		},
2792-		"node_modules/regex": {
2793-			"version": "6.1.0",
2794-			"resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz",
2795-			"integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==",
2796-			"license": "MIT",
2797-			"dependencies": {
2798-				"regex-utilities": "^2.3.0"
2799-			}
2800-		},
2801-		"node_modules/regex-recursion": {
2802-			"version": "6.0.2",
2803-			"resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz",
2804-			"integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==",
2805-			"license": "MIT",
2806-			"dependencies": {
2807-				"regex-utilities": "^2.3.0"
2808-			}
2809-		},
2810-		"node_modules/regex-utilities": {
2811-			"version": "2.3.0",
2812-			"resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
2813-			"integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
2814-			"license": "MIT"
2815-		},
2816-		"node_modules/resolve": {
2817-			"version": "1.22.11",
2818-			"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
2819-			"integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
2820-			"dev": true,
2821-			"license": "MIT",
2822-			"dependencies": {
2823-				"is-core-module": "^2.16.1",
2824-				"path-parse": "^1.0.7",
2825-				"supports-preserve-symlinks-flag": "^1.0.0"
2826-			},
2827-			"bin": {
2828-				"resolve": "bin/resolve"
2829-			},
2830-			"engines": {
2831-				"node": ">= 0.4"
2832-			},
2833-			"funding": {
2834-				"url": "https://github.com/sponsors/ljharb"
2835-			}
2836-		},
2837-		"node_modules/rollup": {
2838-			"version": "4.60.0",
2839-			"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz",
2840-			"integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==",
2841-			"dev": true,
2842-			"license": "MIT",
2843-			"dependencies": {
2844-				"@types/estree": "1.0.8"
2845-			},
2846-			"bin": {
2847-				"rollup": "dist/bin/rollup"
2848-			},
2849-			"engines": {
2850-				"node": ">=18.0.0",
2851-				"npm": ">=8.0.0"
2852-			},
2853-			"optionalDependencies": {
2854-				"@rollup/rollup-android-arm-eabi": "4.60.0",
2855-				"@rollup/rollup-android-arm64": "4.60.0",
2856-				"@rollup/rollup-darwin-arm64": "4.60.0",
2857-				"@rollup/rollup-darwin-x64": "4.60.0",
2858-				"@rollup/rollup-freebsd-arm64": "4.60.0",
2859-				"@rollup/rollup-freebsd-x64": "4.60.0",
2860-				"@rollup/rollup-linux-arm-gnueabihf": "4.60.0",
2861-				"@rollup/rollup-linux-arm-musleabihf": "4.60.0",
2862-				"@rollup/rollup-linux-arm64-gnu": "4.60.0",
2863-				"@rollup/rollup-linux-arm64-musl": "4.60.0",
2864-				"@rollup/rollup-linux-loong64-gnu": "4.60.0",
2865-				"@rollup/rollup-linux-loong64-musl": "4.60.0",
2866-				"@rollup/rollup-linux-ppc64-gnu": "4.60.0",
2867-				"@rollup/rollup-linux-ppc64-musl": "4.60.0",
2868-				"@rollup/rollup-linux-riscv64-gnu": "4.60.0",
2869-				"@rollup/rollup-linux-riscv64-musl": "4.60.0",
2870-				"@rollup/rollup-linux-s390x-gnu": "4.60.0",
2871-				"@rollup/rollup-linux-x64-gnu": "4.60.0",
2872-				"@rollup/rollup-linux-x64-musl": "4.60.0",
2873-				"@rollup/rollup-openbsd-x64": "4.60.0",
2874-				"@rollup/rollup-openharmony-arm64": "4.60.0",
2875-				"@rollup/rollup-win32-arm64-msvc": "4.60.0",
2876-				"@rollup/rollup-win32-ia32-msvc": "4.60.0",
2877-				"@rollup/rollup-win32-x64-gnu": "4.60.0",
2878-				"@rollup/rollup-win32-x64-msvc": "4.60.0",
2879-				"fsevents": "~2.3.2"
2880-			}
2881-		},
2882-		"node_modules/run-applescript": {
2883-			"version": "7.1.0",
2884-			"resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
2885-			"integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
2886-			"license": "MIT",
2887-			"engines": {
2888-				"node": ">=18"
2889-			},
2890-			"funding": {
2891-				"url": "https://github.com/sponsors/sindresorhus"
2892-			}
2893-		},
2894-		"node_modules/sade": {
2895-			"version": "1.8.1",
2896-			"resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
2897-			"integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
2898-			"dev": true,
2899-			"license": "MIT",
2900-			"dependencies": {
2901-				"mri": "^1.1.0"
2902-			},
2903-			"engines": {
2904-				"node": ">=6"
2905-			}
2906-		},
2907-		"node_modules/set-cookie-parser": {
2908-			"version": "3.1.0",
2909-			"resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz",
2910-			"integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==",
2911-			"dev": true,
2912-			"license": "MIT"
2913-		},
2914-		"node_modules/shiki": {
2915-			"version": "4.0.2",
2916-			"resolved": "https://registry.npmjs.org/shiki/-/shiki-4.0.2.tgz",
2917-			"integrity": "sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==",
2918-			"license": "MIT",
2919-			"dependencies": {
2920-				"@shikijs/core": "4.0.2",
2921-				"@shikijs/engine-javascript": "4.0.2",
2922-				"@shikijs/engine-oniguruma": "4.0.2",
2923-				"@shikijs/langs": "4.0.2",
2924-				"@shikijs/themes": "4.0.2",
2925-				"@shikijs/types": "4.0.2",
2926-				"@shikijs/vscode-textmate": "^10.0.2",
2927-				"@types/hast": "^3.0.4"
2928-			},
2929-			"engines": {
2930-				"node": ">=20"
2931-			}
2932-		},
2933-		"node_modules/simple-git": {
2934-			"version": "3.33.0",
2935-			"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.33.0.tgz",
2936-			"integrity": "sha512-D4V/tGC2sjsoNhoMybKyGoE+v8A60hRawKQ1iFRA1zwuDgGZCBJ4ByOzZ5J8joBbi4Oam0qiPH+GhzmSBwbJng==",
2937-			"license": "MIT",
2938-			"dependencies": {
2939-				"@kwsites/file-exists": "^1.1.1",
2940-				"@kwsites/promise-deferred": "^1.1.1",
2941-				"debug": "^4.4.0"
2942-			},
2943-			"funding": {
2944-				"type": "github",
2945-				"url": "https://github.com/steveukx/git-js?sponsor=1"
2946-			}
2947-		},
2948-		"node_modules/sirv": {
2949-			"version": "3.0.2",
2950-			"resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz",
2951-			"integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==",
2952-			"dev": true,
2953-			"license": "MIT",
2954-			"dependencies": {
2955-				"@polka/url": "^1.0.0-next.24",
2956-				"mrmime": "^2.0.0",
2957-				"totalist": "^3.0.0"
2958-			},
2959-			"engines": {
2960-				"node": ">=18"
2961-			}
2962-		},
2963-		"node_modules/source-map-js": {
2964-			"version": "1.2.1",
2965-			"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2966-			"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2967-			"dev": true,
2968-			"license": "BSD-3-Clause",
2969-			"engines": {
2970-				"node": ">=0.10.0"
2971-			}
2972-		},
2973-		"node_modules/space-separated-tokens": {
2974-			"version": "2.0.2",
2975-			"resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
2976-			"integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
2977-			"license": "MIT",
2978-			"funding": {
2979-				"type": "github",
2980-				"url": "https://github.com/sponsors/wooorm"
2981-			}
2982-		},
2983-		"node_modules/stringify-entities": {
2984-			"version": "4.0.4",
2985-			"resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
2986-			"integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
2987-			"license": "MIT",
2988-			"dependencies": {
2989-				"character-entities-html4": "^2.0.0",
2990-				"character-entities-legacy": "^3.0.0"
2991-			},
2992-			"funding": {
2993-				"type": "github",
2994-				"url": "https://github.com/sponsors/wooorm"
2995-			}
2996-		},
2997-		"node_modules/supports-preserve-symlinks-flag": {
2998-			"version": "1.0.0",
2999-			"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
3000-			"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
3001-			"dev": true,
3002-			"license": "MIT",
3003-			"engines": {
3004-				"node": ">= 0.4"
3005-			},
3006-			"funding": {
3007-				"url": "https://github.com/sponsors/ljharb"
3008-			}
3009-		},
3010-		"node_modules/svelte": {
3011-			"version": "5.55.0",
3012-			"resolved": "https://registry.npmjs.org/svelte/-/svelte-5.55.0.tgz",
3013-			"integrity": "sha512-SThllKq6TRMBwPtat7ASnm/9CDXnIhBR0NPGw0ujn2DVYx9rVwsPZxDaDQcYGdUz/3BYVsCzdq7pZarRQoGvtw==",
3014-			"dev": true,
3015-			"license": "MIT",
3016-			"dependencies": {
3017-				"@jridgewell/remapping": "^2.3.4",
3018-				"@jridgewell/sourcemap-codec": "^1.5.0",
3019-				"@sveltejs/acorn-typescript": "^1.0.5",
3020-				"@types/estree": "^1.0.5",
3021-				"@types/trusted-types": "^2.0.7",
3022-				"acorn": "^8.12.1",
3023-				"aria-query": "5.3.1",
3024-				"axobject-query": "^4.1.0",
3025-				"clsx": "^2.1.1",
3026-				"devalue": "^5.6.4",
3027-				"esm-env": "^1.2.1",
3028-				"esrap": "^2.2.2",
3029-				"is-reference": "^3.0.3",
3030-				"locate-character": "^3.0.0",
3031-				"magic-string": "^0.30.11",
3032-				"zimmerframe": "^1.1.2"
3033-			},
3034-			"engines": {
3035-				"node": ">=18"
3036-			}
3037-		},
3038-		"node_modules/svelte-check": {
3039-			"version": "4.4.5",
3040-			"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.4.5.tgz",
3041-			"integrity": "sha512-1bSwIRCvvmSHrlK52fOlZmVtUZgil43jNL/2H18pRpa+eQjzGt6e3zayxhp1S7GajPFKNM/2PMCG+DZFHlG9fw==",
3042-			"dev": true,
3043-			"license": "MIT",
3044-			"dependencies": {
3045-				"@jridgewell/trace-mapping": "^0.3.25",
3046-				"chokidar": "^4.0.1",
3047-				"fdir": "^6.2.0",
3048-				"picocolors": "^1.0.0",
3049-				"sade": "^1.7.4"
3050-			},
3051-			"bin": {
3052-				"svelte-check": "bin/svelte-check"
3053-			},
3054-			"engines": {
3055-				"node": ">= 18.0.0"
3056-			},
3057-			"peerDependencies": {
3058-				"svelte": "^4.0.0 || ^5.0.0-next.0",
3059-				"typescript": ">=5.0.0"
3060-			}
3061-		},
3062-		"node_modules/svelte/node_modules/is-reference": {
3063-			"version": "3.0.3",
3064-			"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
3065-			"integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
3066-			"dev": true,
3067-			"license": "MIT",
3068-			"dependencies": {
3069-				"@types/estree": "^1.0.6"
3070-			}
3071-		},
3072-		"node_modules/tailwindcss": {
3073-			"version": "4.2.2",
3074-			"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz",
3075-			"integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==",
3076-			"dev": true,
3077-			"license": "MIT"
3078-		},
3079-		"node_modules/tapable": {
3080-			"version": "2.3.2",
3081-			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz",
3082-			"integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==",
3083-			"dev": true,
3084-			"license": "MIT",
3085-			"engines": {
3086-				"node": ">=6"
3087-			},
3088-			"funding": {
3089-				"type": "opencollective",
3090-				"url": "https://opencollective.com/webpack"
3091-			}
3092-		},
3093-		"node_modules/tinyglobby": {
3094-			"version": "0.2.15",
3095-			"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
3096-			"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
3097-			"dev": true,
3098-			"license": "MIT",
3099-			"dependencies": {
3100-				"fdir": "^6.5.0",
3101-				"picomatch": "^4.0.3"
3102-			},
3103-			"engines": {
3104-				"node": ">=12.0.0"
3105-			},
3106-			"funding": {
3107-				"url": "https://github.com/sponsors/SuperchupuDev"
3108-			}
3109-		},
3110-		"node_modules/totalist": {
3111-			"version": "3.0.1",
3112-			"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
3113-			"integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
3114-			"dev": true,
3115-			"license": "MIT",
3116-			"engines": {
3117-				"node": ">=6"
3118-			}
3119-		},
3120-		"node_modules/trim-lines": {
3121-			"version": "3.0.1",
3122-			"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
3123-			"integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
3124-			"license": "MIT",
3125-			"funding": {
3126-				"type": "github",
3127-				"url": "https://github.com/sponsors/wooorm"
3128-			}
3129-		},
3130-		"node_modules/typescript": {
3131-			"version": "5.9.3",
3132-			"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
3133-			"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
3134-			"dev": true,
3135-			"license": "Apache-2.0",
3136-			"bin": {
3137-				"tsc": "bin/tsc",
3138-				"tsserver": "bin/tsserver"
3139-			},
3140-			"engines": {
3141-				"node": ">=14.17"
3142-			}
3143-		},
3144-		"node_modules/undici-types": {
3145-			"version": "7.18.2",
3146-			"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
3147-			"integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
3148-			"dev": true,
3149-			"license": "MIT"
3150-		},
3151-		"node_modules/unist-util-is": {
3152-			"version": "6.0.1",
3153-			"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz",
3154-			"integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==",
3155-			"license": "MIT",
3156-			"dependencies": {
3157-				"@types/unist": "^3.0.0"
3158-			},
3159-			"funding": {
3160-				"type": "opencollective",
3161-				"url": "https://opencollective.com/unified"
3162-			}
3163-		},
3164-		"node_modules/unist-util-position": {
3165-			"version": "5.0.0",
3166-			"resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
3167-			"integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
3168-			"license": "MIT",
3169-			"dependencies": {
3170-				"@types/unist": "^3.0.0"
3171-			},
3172-			"funding": {
3173-				"type": "opencollective",
3174-				"url": "https://opencollective.com/unified"
3175-			}
3176-		},
3177-		"node_modules/unist-util-stringify-position": {
3178-			"version": "4.0.0",
3179-			"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
3180-			"integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
3181-			"license": "MIT",
3182-			"dependencies": {
3183-				"@types/unist": "^3.0.0"
3184-			},
3185-			"funding": {
3186-				"type": "opencollective",
3187-				"url": "https://opencollective.com/unified"
3188-			}
3189-		},
3190-		"node_modules/unist-util-visit": {
3191-			"version": "5.1.0",
3192-			"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz",
3193-			"integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==",
3194-			"license": "MIT",
3195-			"dependencies": {
3196-				"@types/unist": "^3.0.0",
3197-				"unist-util-is": "^6.0.0",
3198-				"unist-util-visit-parents": "^6.0.0"
3199-			},
3200-			"funding": {
3201-				"type": "opencollective",
3202-				"url": "https://opencollective.com/unified"
3203-			}
3204-		},
3205-		"node_modules/unist-util-visit-parents": {
3206-			"version": "6.0.2",
3207-			"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz",
3208-			"integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==",
3209-			"license": "MIT",
3210-			"dependencies": {
3211-				"@types/unist": "^3.0.0",
3212-				"unist-util-is": "^6.0.0"
3213-			},
3214-			"funding": {
3215-				"type": "opencollective",
3216-				"url": "https://opencollective.com/unified"
3217-			}
3218-		},
3219-		"node_modules/vfile": {
3220-			"version": "6.0.3",
3221-			"resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
3222-			"integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
3223-			"license": "MIT",
3224-			"dependencies": {
3225-				"@types/unist": "^3.0.0",
3226-				"vfile-message": "^4.0.0"
3227-			},
3228-			"funding": {
3229-				"type": "opencollective",
3230-				"url": "https://opencollective.com/unified"
3231-			}
3232-		},
3233-		"node_modules/vfile-message": {
3234-			"version": "4.0.3",
3235-			"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
3236-			"integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
3237-			"license": "MIT",
3238-			"dependencies": {
3239-				"@types/unist": "^3.0.0",
3240-				"unist-util-stringify-position": "^4.0.0"
3241-			},
3242-			"funding": {
3243-				"type": "opencollective",
3244-				"url": "https://opencollective.com/unified"
3245-			}
3246-		},
3247-		"node_modules/vite": {
3248-			"version": "7.3.1",
3249-			"resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
3250-			"integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
3251-			"dev": true,
3252-			"license": "MIT",
3253-			"dependencies": {
3254-				"esbuild": "^0.27.0",
3255-				"fdir": "^6.5.0",
3256-				"picomatch": "^4.0.3",
3257-				"postcss": "^8.5.6",
3258-				"rollup": "^4.43.0",
3259-				"tinyglobby": "^0.2.15"
3260-			},
3261-			"bin": {
3262-				"vite": "bin/vite.js"
3263-			},
3264-			"engines": {
3265-				"node": "^20.19.0 || >=22.12.0"
3266-			},
3267-			"funding": {
3268-				"url": "https://github.com/vitejs/vite?sponsor=1"
3269-			},
3270-			"optionalDependencies": {
3271-				"fsevents": "~2.3.3"
3272-			},
3273-			"peerDependencies": {
3274-				"@types/node": "^20.19.0 || >=22.12.0",
3275-				"jiti": ">=1.21.0",
3276-				"less": "^4.0.0",
3277-				"lightningcss": "^1.21.0",
3278-				"sass": "^1.70.0",
3279-				"sass-embedded": "^1.70.0",
3280-				"stylus": ">=0.54.8",
3281-				"sugarss": "^5.0.0",
3282-				"terser": "^5.16.0",
3283-				"tsx": "^4.8.1",
3284-				"yaml": "^2.4.2"
3285-			},
3286-			"peerDependenciesMeta": {
3287-				"@types/node": {
3288-					"optional": true
3289-				},
3290-				"jiti": {
3291-					"optional": true
3292-				},
3293-				"less": {
3294-					"optional": true
3295-				},
3296-				"lightningcss": {
3297-					"optional": true
3298-				},
3299-				"sass": {
3300-					"optional": true
3301-				},
3302-				"sass-embedded": {
3303-					"optional": true
3304-				},
3305-				"stylus": {
3306-					"optional": true
3307-				},
3308-				"sugarss": {
3309-					"optional": true
3310-				},
3311-				"terser": {
3312-					"optional": true
3313-				},
3314-				"tsx": {
3315-					"optional": true
3316-				},
3317-				"yaml": {
3318-					"optional": true
3319-				}
3320-			}
3321-		},
3322-		"node_modules/vitefu": {
3323-			"version": "1.1.2",
3324-			"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.2.tgz",
3325-			"integrity": "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==",
3326-			"dev": true,
3327-			"license": "MIT",
3328-			"workspaces": [
3329-				"tests/deps/*",
3330-				"tests/projects/*",
3331-				"tests/projects/workspace/packages/*"
3332-			],
3333-			"peerDependencies": {
3334-				"vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0"
3335-			},
3336-			"peerDependenciesMeta": {
3337-				"vite": {
3338-					"optional": true
3339-				}
3340-			}
3341-		},
3342-		"node_modules/ws": {
3343-			"version": "8.20.0",
3344-			"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
3345-			"integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
3346-			"license": "MIT",
3347-			"engines": {
3348-				"node": ">=10.0.0"
3349-			},
3350-			"peerDependencies": {
3351-				"bufferutil": "^4.0.1",
3352-				"utf-8-validate": ">=5.0.2"
3353-			},
3354-			"peerDependenciesMeta": {
3355-				"bufferutil": {
3356-					"optional": true
3357-				},
3358-				"utf-8-validate": {
3359-					"optional": true
3360-				}
3361-			}
3362-		},
3363-		"node_modules/wsl-utils": {
3364-			"version": "0.3.1",
3365-			"resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz",
3366-			"integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==",
3367-			"license": "MIT",
3368-			"dependencies": {
3369-				"is-wsl": "^3.1.0",
3370-				"powershell-utils": "^0.1.0"
3371-			},
3372-			"engines": {
3373-				"node": ">=20"
3374-			},
3375-			"funding": {
3376-				"url": "https://github.com/sponsors/sindresorhus"
3377-			}
3378-		},
3379-		"node_modules/zimmerframe": {
3380-			"version": "1.1.4",
3381-			"resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz",
3382-			"integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==",
3383-			"dev": true,
3384-			"license": "MIT"
3385-		},
3386-		"node_modules/zwitch": {
3387-			"version": "2.0.4",
3388-			"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
3389-			"integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
3390-			"license": "MIT",
3391-			"funding": {
3392-				"type": "github",
3393-				"url": "https://github.com/sponsors/wooorm"
3394-			}
3395-		}
3396-	}
3397-}
M package.json
+3, -1
 1@@ -30,6 +30,7 @@
 2 		"@sveltejs/vite-plugin-svelte": "^6.2.4",
 3 		"@tailwindcss/vite": "^4.1.18",
 4 		"@types/ws": "^8.18.1",
 5+		"esbuild": "^0.28.2",
 6 		"svelte": "^5.54.0",
 7 		"svelte-check": "^4.4.2",
 8 		"tailwindcss": "^4.1.18",
 9@@ -45,5 +46,6 @@
10 		"shiki": "^4.0.2",
11 		"simple-git": "^3.33.0",
12 		"ws": "^8.20.0"
13-	}
14+	},
15+	"packageManager": "[email protected]+sha512.3ef68f951cb111ac204b4a5a16f0b2ddf0da56a96e0413e81d855d9f0b55ef926714709028e1cd00c405c2c5fb7b9e8ec4dc46777c805d0373c2f2ff00fd20ec"
16 }
A pnpm-lock.yaml
+2319, -0
   1@@ -0,0 +1,2319 @@
   2+---
   3+lockfileVersion: '9.0'
   4+
   5+importers:
   6+
   7+  .:
   8+    configDependencies: {}
   9+    packageManagerDependencies:
  10+      pnpm:
  11+        specifier: 12.6.0
  12+        version: 12.6.0
  13+
  14+packages:
  15+
  16+  '@pnpm/[email protected]':
  17+    resolution: {integrity: sha512-kviIHft9h02q+7N2In7tSL9T/HRUSGwYmU74YPtsWU5ee7vgqPyC0JT6RRX6miW+NxX1CvHgQxg69qq1qTLJYQ==}
  18+    cpu: [arm64]
  19+    os: [android]
  20+
  21+  '@pnpm/[email protected]':
  22+    resolution: {integrity: sha512-CT8aJKLq2mtZFE71pr4E5Z2xHL8uGnRGr+NclDqsXlVF4SVcQ2QAs14mWi0C8gjT4hbmi+Q0lJRRIkMAWfjjng==}
  23+    cpu: [x64]
  24+    os: [android]
  25+
  26+  '@pnpm/[email protected]':
  27+    resolution: {integrity: sha512-rafpVkjzugKBMxSvGQd5wK1x5eOTkD/+lcJIFHeQhvd+BJ8kDisOOvwhQDrpGd4vd2Fx+hhW0P2Ptt638OlhFg==}
  28+    cpu: [arm64]
  29+    os: [darwin]
  30+
  31+  '@pnpm/[email protected]':
  32+    resolution: {integrity: sha512-72Jpuv1m24gI8zUNcaylYpBWEhBzz1VPhnDIU2GYM2eRP+KsOqVLwV78i+JrihI39zY2NNXmaN4eAKX1inpaDQ==}
  33+    cpu: [x64]
  34+    os: [darwin]
  35+
  36+  '@pnpm/[email protected]':
  37+    resolution: {integrity: sha512-LON4QgNy1w/XF4uySZIyC/5hEB0oGdelXsY9tSKqstER+2j2X2oHz67skD11RRd/HWFRtMr64shQZ4I9ZoZ0zg==}
  38+    cpu: [x64]
  39+    os: [freebsd]
  40+
  41+  '@pnpm/[email protected]':
  42+    resolution: {integrity: sha512-BdDpX+DeaMUc5x6WNcE6FkmFy36NwrBbBvwsZU737Zt3u1fTY+iKFPchjEQNCM4rT6q6xvF2oN3ZwExGsJCkxQ==}
  43+    cpu: [arm64]
  44+    os: [linux]
  45+    libc: [musl]
  46+
  47+  '@pnpm/[email protected]':
  48+    resolution: {integrity: sha512-8h2sNoIhHDpHDYqZZCh9PXr6krqW10btb0GHVGuw710muDHlFAHMtUG2ogmaHge6zJG1xgY4Y7mwX5g/LWvrYg==}
  49+    cpu: [arm64]
  50+    os: [linux]
  51+    libc: [glibc]
  52+
  53+  '@pnpm/[email protected]':
  54+    resolution: {integrity: sha512-ld6xgcEhFCFrsVsJhbmdmR714PnsEspO/Ij8w0/D7OSiz2hYGu3fZd5tKRxOI5m6H6Gl0/RRFAPncTHbsgXVjQ==}
  55+    cpu: [ppc64]
  56+    os: [linux]
  57+    libc: [glibc]
  58+
  59+  '@pnpm/[email protected]':
  60+    resolution: {integrity: sha512-HIbImydoC3J8NFt+8MXfhTCf5rO6NjCMyinSAHac0VmV8uCHw+kbQkyAzxV84rzz9ZOzmBOnj0b1N461UIYGsw==}
  61+    cpu: [riscv64]
  62+    os: [linux]
  63+    libc: [glibc]
  64+
  65+  '@pnpm/[email protected]':
  66+    resolution: {integrity: sha512-DjSqT7+BZ/lWcDHwNMuzsRVfyxUimh+D54Xw4tSWbdVVQhtWtNMUyI93LVnwCmsoEpar2gC3SFeAgywx37svKQ==}
  67+    cpu: [s390x]
  68+    os: [linux]
  69+    libc: [glibc]
  70+
  71+  '@pnpm/[email protected]':
  72+    resolution: {integrity: sha512-31lKeGPmRE6xfV6I3VjaEGVFRei14pl/zgoFDK4w+UkbJqOuNl2Ht3O1GuqNIg3Gl14qTEb4kZRAYFHXifDx9A==}
  73+    cpu: [x64]
  74+    os: [linux]
  75+    libc: [musl]
  76+
  77+  '@pnpm/[email protected]':
  78+    resolution: {integrity: sha512-qFWBneHJAJ73W4whtbaFOL1M/7DBC6ILHXuxc7ZPtEhfPuT1zeZiGrmKHoMAfJA+mcm6xhOFljqVTUS+00Jabw==}
  79+    cpu: [x64]
  80+    os: [linux]
  81+    libc: [glibc]
  82+
  83+  '@pnpm/[email protected]':
  84+    resolution: {integrity: sha512-OhfefXEEykZlslSUhR8PPRe6MVPV3Oink/dVfIecE5velpc7j80cZYsHlaDrtRDcm3TPwQHkaRW1SJ1efX9oFg==}
  85+    cpu: [arm64]
  86+    os: [win32]
  87+
  88+  '@pnpm/[email protected]':
  89+    resolution: {integrity: sha512-L2tuyrD2+Imgxs3VK/ST/2L3xD6vDP0ktJQxM0TaGw7TbAQEMq+RMc8iK6Ew7Id579uzjJe8jSfJID2ZGsOHCA==}
  90+    cpu: [x64]
  91+    os: [win32]
  92+
  93+  [email protected]:
  94+    resolution: {integrity: sha512-PvaPlRyxEawgS0paFvCy3fDaVqluBBPoHYVdnwtV75JnFHCQKOHNAMQFwsX7e56OxNxGd3yAXQNzwvL/AP0g7A==}
  95+    engines: {node: '>=18.*'}
  96+    hasBin: true
  97+
  98+snapshots:
  99+
 100+  '@pnpm/[email protected]':
 101+    optional: true
 102+
 103+  '@pnpm/[email protected]':
 104+    optional: true
 105+
 106+  '@pnpm/[email protected]':
 107+    optional: true
 108+
 109+  '@pnpm/[email protected]':
 110+    optional: true
 111+
 112+  '@pnpm/[email protected]':
 113+    optional: true
 114+
 115+  '@pnpm/[email protected]':
 116+    optional: true
 117+
 118+  '@pnpm/[email protected]':
 119+    optional: true
 120+
 121+  '@pnpm/[email protected]':
 122+    optional: true
 123+
 124+  '@pnpm/[email protected]':
 125+    optional: true
 126+
 127+  '@pnpm/[email protected]':
 128+    optional: true
 129+
 130+  '@pnpm/[email protected]':
 131+    optional: true
 132+
 133+  '@pnpm/[email protected]':
 134+    optional: true
 135+
 136+  '@pnpm/[email protected]':
 137+    optional: true
 138+
 139+  '@pnpm/[email protected]':
 140+    optional: true
 141+
 142+  [email protected]:
 143+    optionalDependencies:
 144+      '@pnpm/exe.android-arm64': 12.6.0
 145+      '@pnpm/exe.android-x64': 12.6.0
 146+      '@pnpm/exe.darwin-arm64': 12.6.0
 147+      '@pnpm/exe.darwin-x64': 12.6.0
 148+      '@pnpm/exe.freebsd-x64': 12.6.0
 149+      '@pnpm/exe.linux-arm64': 12.6.0
 150+      '@pnpm/exe.linux-arm64-musl': 12.6.0
 151+      '@pnpm/exe.linux-ppc64': 12.6.0
 152+      '@pnpm/exe.linux-riscv64': 12.6.0
 153+      '@pnpm/exe.linux-s390x': 12.6.0
 154+      '@pnpm/exe.linux-x64': 12.6.0
 155+      '@pnpm/exe.linux-x64-musl': 12.6.0
 156+      '@pnpm/exe.win32-arm64': 12.6.0
 157+      '@pnpm/exe.win32-x64': 12.6.0
 158+
 159+---
 160+lockfileVersion: '9.0'
 161+
 162+settings:
 163+  autoInstallPeers: true
 164+  excludeLinksFromLockfile: false
 165+
 166+importers:
 167+
 168+  .:
 169+    dependencies:
 170+      '@xterm/addon-fit':
 171+        specifier: ^0.11.0
 172+        version: 0.11.0
 173+      '@xterm/xterm':
 174+        specifier: ^6.0.0
 175+        version: 6.0.0
 176+      diff2html:
 177+        specifier: ^3.4.56
 178+        version: 3.4.56
 179+      node-pty:
 180+        specifier: ^1.2.0-beta.12
 181+        version: 1.2.0-beta.15
 182+      open:
 183+        specifier: ^11.0.0
 184+        version: 11.0.4
 185+      shiki:
 186+        specifier: ^4.0.2
 187+        version: 4.4.3
 188+      simple-git:
 189+        specifier: ^3.33.0
 190+        version: 3.36.0
 191+      ws:
 192+        specifier: ^8.20.0
 193+        version: 8.21.3
 194+    devDependencies:
 195+      '@sveltejs/adapter-node':
 196+        specifier: ^5.5.2
 197+        version: 5.5.7(@sveltejs/[email protected](@sveltejs/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])))
 198+      '@sveltejs/kit':
 199+        specifier: ^2.50.2
 200+        version: 2.70.3(@sveltejs/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected]))
 201+      '@sveltejs/vite-plugin-svelte':
 202+        specifier: ^6.2.4
 203+        version: 6.2.4([email protected])([email protected](@types/[email protected])([email protected])([email protected]))
 204+      '@tailwindcss/vite':
 205+        specifier: ^4.1.18
 206+        version: 4.3.3([email protected](@types/[email protected])([email protected])([email protected]))
 207+      '@types/ws':
 208+        specifier: ^8.18.1
 209+        version: 8.18.1
 210+      esbuild:
 211+        specifier: ^0.28.2
 212+        version: 0.28.2
 213+      svelte:
 214+        specifier: ^5.54.0
 215+        version: 5.57.1
 216+      svelte-check:
 217+        specifier: ^4.4.2
 218+        version: 4.7.6([email protected])([email protected])([email protected])
 219+      tailwindcss:
 220+        specifier: ^4.1.18
 221+        version: 4.3.3
 222+      typescript:
 223+        specifier: ^5.9.3
 224+        version: 5.9.3
 225+      vite:
 226+        specifier: ^7.3.1
 227+        version: 7.3.6(@types/[email protected])([email protected])([email protected])
 228+
 229+packages:
 230+
 231+  '@esbuild/[email protected]':
 232+    resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==}
 233+    engines: {node: '>=18'}
 234+    cpu: [ppc64]
 235+    os: [aix]
 236+
 237+  '@esbuild/[email protected]':
 238+    resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==}
 239+    engines: {node: '>=18'}
 240+    cpu: [arm64]
 241+    os: [android]
 242+
 243+  '@esbuild/[email protected]':
 244+    resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==}
 245+    engines: {node: '>=18'}
 246+    cpu: [arm]
 247+    os: [android]
 248+
 249+  '@esbuild/[email protected]':
 250+    resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==}
 251+    engines: {node: '>=18'}
 252+    cpu: [x64]
 253+    os: [android]
 254+
 255+  '@esbuild/[email protected]':
 256+    resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==}
 257+    engines: {node: '>=18'}
 258+    cpu: [arm64]
 259+    os: [darwin]
 260+
 261+  '@esbuild/[email protected]':
 262+    resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==}
 263+    engines: {node: '>=18'}
 264+    cpu: [x64]
 265+    os: [darwin]
 266+
 267+  '@esbuild/[email protected]':
 268+    resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==}
 269+    engines: {node: '>=18'}
 270+    cpu: [arm64]
 271+    os: [freebsd]
 272+
 273+  '@esbuild/[email protected]':
 274+    resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==}
 275+    engines: {node: '>=18'}
 276+    cpu: [x64]
 277+    os: [freebsd]
 278+
 279+  '@esbuild/[email protected]':
 280+    resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==}
 281+    engines: {node: '>=18'}
 282+    cpu: [arm64]
 283+    os: [linux]
 284+
 285+  '@esbuild/[email protected]':
 286+    resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==}
 287+    engines: {node: '>=18'}
 288+    cpu: [arm]
 289+    os: [linux]
 290+
 291+  '@esbuild/[email protected]':
 292+    resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==}
 293+    engines: {node: '>=18'}
 294+    cpu: [ia32]
 295+    os: [linux]
 296+
 297+  '@esbuild/[email protected]':
 298+    resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==}
 299+    engines: {node: '>=18'}
 300+    cpu: [loong64]
 301+    os: [linux]
 302+
 303+  '@esbuild/[email protected]':
 304+    resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==}
 305+    engines: {node: '>=18'}
 306+    cpu: [mips64el]
 307+    os: [linux]
 308+
 309+  '@esbuild/[email protected]':
 310+    resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==}
 311+    engines: {node: '>=18'}
 312+    cpu: [ppc64]
 313+    os: [linux]
 314+
 315+  '@esbuild/[email protected]':
 316+    resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==}
 317+    engines: {node: '>=18'}
 318+    cpu: [riscv64]
 319+    os: [linux]
 320+
 321+  '@esbuild/[email protected]':
 322+    resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==}
 323+    engines: {node: '>=18'}
 324+    cpu: [s390x]
 325+    os: [linux]
 326+
 327+  '@esbuild/[email protected]':
 328+    resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==}
 329+    engines: {node: '>=18'}
 330+    cpu: [x64]
 331+    os: [linux]
 332+
 333+  '@esbuild/[email protected]':
 334+    resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==}
 335+    engines: {node: '>=18'}
 336+    cpu: [arm64]
 337+    os: [netbsd]
 338+
 339+  '@esbuild/[email protected]':
 340+    resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==}
 341+    engines: {node: '>=18'}
 342+    cpu: [x64]
 343+    os: [netbsd]
 344+
 345+  '@esbuild/[email protected]':
 346+    resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==}
 347+    engines: {node: '>=18'}
 348+    cpu: [arm64]
 349+    os: [openbsd]
 350+
 351+  '@esbuild/[email protected]':
 352+    resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==}
 353+    engines: {node: '>=18'}
 354+    cpu: [x64]
 355+    os: [openbsd]
 356+
 357+  '@esbuild/[email protected]':
 358+    resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==}
 359+    engines: {node: '>=18'}
 360+    cpu: [arm64]
 361+    os: [openharmony]
 362+
 363+  '@esbuild/[email protected]':
 364+    resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==}
 365+    engines: {node: '>=18'}
 366+    cpu: [x64]
 367+    os: [sunos]
 368+
 369+  '@esbuild/[email protected]':
 370+    resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==}
 371+    engines: {node: '>=18'}
 372+    cpu: [arm64]
 373+    os: [win32]
 374+
 375+  '@esbuild/[email protected]':
 376+    resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==}
 377+    engines: {node: '>=18'}
 378+    cpu: [ia32]
 379+    os: [win32]
 380+
 381+  '@esbuild/[email protected]':
 382+    resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==}
 383+    engines: {node: '>=18'}
 384+    cpu: [x64]
 385+    os: [win32]
 386+
 387+  '@jridgewell/[email protected]':
 388+    resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
 389+
 390+  '@jridgewell/[email protected]':
 391+    resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
 392+
 393+  '@jridgewell/[email protected]':
 394+    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
 395+    engines: {node: '>=6.0.0'}
 396+
 397+  '@jridgewell/[email protected]':
 398+    resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
 399+
 400+  '@jridgewell/[email protected]':
 401+    resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
 402+
 403+  '@kwsites/[email protected]':
 404+    resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==}
 405+
 406+  '@kwsites/[email protected]':
 407+    resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==}
 408+
 409+  '@napi-rs/[email protected]':
 410+    resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==}
 411+    engines: {node: ^22.20 || ^24.12 || >=25}
 412+    cpu: [x64]
 413+    os: [linux]
 414+    libc: [glibc]
 415+
 416+  '@polka/[email protected]':
 417+    resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
 418+
 419+  '@profoundlogic/[email protected]':
 420+    resolution: {integrity: sha512-pmNVGuooS30Mm7YbZd5T7E5zYVO6D5Ct91sn4T39mUvMUc3sCGridcnhAufL1/Bz2QzAtzEn0agNrdk3+5yWzw==}
 421+    hasBin: true
 422+
 423+  '@rollup/[email protected]':
 424+    resolution: {integrity: sha512-ZaOxZceP7SOUW7Lqw5IRVweSQYWaeIPnXIGLiB690EBA3FGJTO40EEr2L5yZplJWsgTCogILRSpcAe7+U0Otdg==}
 425+    engines: {node: '>=16.0.0 || 14 >= 14.17'}
 426+    peerDependencies:
 427+      rollup: ^2.68.0||^3.0.0||^4.0.0
 428+    peerDependenciesMeta:
 429+      rollup:
 430+        optional: true
 431+
 432+  '@rollup/[email protected]':
 433+    resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==}
 434+    engines: {node: '>=14.0.0'}
 435+    peerDependencies:
 436+      rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
 437+    peerDependenciesMeta:
 438+      rollup:
 439+        optional: true
 440+
 441+  '@rollup/[email protected]':
 442+    resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==}
 443+    engines: {node: '>=14.0.0'}
 444+    peerDependencies:
 445+      rollup: ^2.78.0||^3.0.0||^4.0.0
 446+    peerDependenciesMeta:
 447+      rollup:
 448+        optional: true
 449+
 450+  '@rollup/[email protected]':
 451+    resolution: {integrity: sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==}
 452+    engines: {node: '>=14.0.0'}
 453+    peerDependencies:
 454+      rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
 455+    peerDependenciesMeta:
 456+      rollup:
 457+        optional: true
 458+
 459+  '@rollup/[email protected]':
 460+    resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==}
 461+    engines: {node: '>=14.0.0'}
 462+    peerDependencies:
 463+      rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
 464+    peerDependenciesMeta:
 465+      rollup:
 466+        optional: true
 467+
 468+  '@rollup/[email protected]':
 469+    resolution: {integrity: sha512-J25QJU+B78T4FhhBsNpLJyVWOi31mwtpcMwywHmOKH65Q9IWGA81gPj+dnwlhU8wktVriYE+tFAaQgrnJRzAZg==}
 470+    cpu: [arm]
 471+    os: [android]
 472+
 473+  '@rollup/[email protected]':
 474+    resolution: {integrity: sha512-LDopB3zuZM5Ux9TT2luNEBJW/tYbGU2g1d+VpKk6I+gSKDb+/7sYE6M225gRQt4RbMX6MSwMsVR/phdjVUgRLg==}
 475+    cpu: [arm64]
 476+    os: [android]
 477+
 478+  '@rollup/[email protected]':
 479+    resolution: {integrity: sha512-wlJEERGfeuHeBavCL2qVnNacOK43NDoZM4sjkeRPymd04OAE9T1zBqDJgmZ+CIsPTYKwdzpUC8vmOw84dwY4Tg==}
 480+    cpu: [arm64]
 481+    os: [darwin]
 482+
 483+  '@rollup/[email protected]':
 484+    resolution: {integrity: sha512-4nJJGg5jbo2wwPP4JP+LfEBA3bvP8rU9CLuhp7jWvq9sxEyhjQFTFdrqi+/dHEin/pd8jpT0vcehIpnZtmEdcQ==}
 485+    cpu: [x64]
 486+    os: [darwin]
 487+
 488+  '@rollup/[email protected]':
 489+    resolution: {integrity: sha512-DrZbyCDF1hneuO6jRbvZ2D7+PIBM6yIwYnJpg2vIk58T+wuFpiaGZrfUr59lDWw45bg+IrpTGLPiNi/Fk4w3Cg==}
 490+    cpu: [arm64]
 491+    os: [freebsd]
 492+
 493+  '@rollup/[email protected]':
 494+    resolution: {integrity: sha512-gqfUVMJMB3mehqywxp6hTBFfgtMQykZY19+cfiaYP0toIJLb/1DZRJHVkQQGP13W4TAwfZDWeg1qBcheTRioXQ==}
 495+    cpu: [x64]
 496+    os: [freebsd]
 497+
 498+  '@rollup/[email protected]':
 499+    resolution: {integrity: sha512-CFmhpvAwzSaWMlN3VN7UtmoTihlZNzoP0juQib5TQRnYUyDV8dXeWOp29sobWAT6gXl/hQgAClLlEiYozQG3OQ==}
 500+    cpu: [arm]
 501+    os: [linux]
 502+    libc: [glibc]
 503+
 504+  '@rollup/[email protected]':
 505+    resolution: {integrity: sha512-Uc9H8eXCOayV6JLTH5bXKMId6qbhNHa818/BgYjm4jrlq3vZquC9cqyvHBw17xy5Mnj5f+I3gFK5JcEf3hSqrw==}
 506+    cpu: [arm]
 507+    os: [linux]
 508+    libc: [musl]
 509+
 510+  '@rollup/[email protected]':
 511+    resolution: {integrity: sha512-VcPr/szv/1BFw112Kt//fxulXt/JPqzzidU84iW68L2DdjnOO8QFUv2zTSYBEPHD6movBD4z+bbr5y60GYM7Jw==}
 512+    cpu: [arm64]
 513+    os: [linux]
 514+    libc: [glibc]
 515+
 516+  '@rollup/[email protected]':
 517+    resolution: {integrity: sha512-BnxtJ5/91BrIHYIkGrmjz/lbMhqEHt1dPFqIxIFR+jPn0xVc/oUSCtIT089zfp5ufwGDlYz2UC+Fe1SRBpYFbQ==}
 518+    cpu: [arm64]
 519+    os: [linux]
 520+    libc: [musl]
 521+
 522+  '@rollup/[email protected]':
 523+    resolution: {integrity: sha512-LrYcHZwF+fAMNKHYTOQ5osWM4AZF7YF6D+XtsjDyEvljtt11twc+zHVXBLNEjxVSUnKYsOhvVz4Z213eW02COQ==}
 524+    cpu: [loong64]
 525+    os: [linux]
 526+    libc: [glibc]
 527+
 528+  '@rollup/[email protected]':
 529+    resolution: {integrity: sha512-nj7QKQePAAUpCpJHtg0pR0W/b92A9NO17JS3BAQmHDn/yhmkir2p8llrKY9TOhleKIaSzy1JhxS3T9FVld6coA==}
 530+    cpu: [loong64]
 531+    os: [linux]
 532+    libc: [musl]
 533+
 534+  '@rollup/[email protected]':
 535+    resolution: {integrity: sha512-5ylkX6dWMeBKge9nTU+Rxfb+ZfaCIJ9lRqIFaK0eAMcWp7OJbYnLveLgXmm0VrvuLKb8qIK+mHyH0qu88RM+iA==}
 536+    cpu: [ppc64]
 537+    os: [linux]
 538+    libc: [glibc]
 539+
 540+  '@rollup/[email protected]':
 541+    resolution: {integrity: sha512-oHK4ZHYFDKjZviK34I+NwgfbGxgI7ztrNxj2hPTSSNFgeq1a/lEd7dHV2fdGAuTH4Iym3RHJg+vAbWaWG4B7Zg==}
 542+    cpu: [ppc64]
 543+    os: [linux]
 544+    libc: [musl]
 545+
 546+  '@rollup/[email protected]':
 547+    resolution: {integrity: sha512-UcetmHZ6XOXuUByiKZyQmb55ZPr0LABr3Ec/HB9wKZn6CEAFWZkE+hsJErJ9hbPBC7nI0dKuELx7CoV6IM7TMg==}
 548+    cpu: [riscv64]
 549+    os: [linux]
 550+    libc: [glibc]
 551+
 552+  '@rollup/[email protected]':
 553+    resolution: {integrity: sha512-C5CmDPQBtvjVo8cgQsBs+w6WB0JLkiixhgi6hVLV11hERWdn/p0XcPU2OUcZzac9BPOFq7SbaHFa8r3SWEysCQ==}
 554+    cpu: [riscv64]
 555+    os: [linux]
 556+    libc: [musl]
 557+
 558+  '@rollup/[email protected]':
 559+    resolution: {integrity: sha512-lHVQHJFKsuuxLMi3MQO9XVL8Tje3JR82CzB+QDKC5NWBcsIWuwsn9uIM5e3lBhI+fF1/s63qnyYqsg65+8rV/w==}
 560+    cpu: [s390x]
 561+    os: [linux]
 562+    libc: [glibc]
 563+
 564+  '@rollup/[email protected]':
 565+    resolution: {integrity: sha512-3W9bTFcQNJn71cSJVM9RKIiZOy8DO/XLDii8Uv/Pm6WKqDRj7JV3ZfuXIEfyuy5LXpIzAbB/1M4Ukp9GKNa7nA==}
 566+    cpu: [x64]
 567+    os: [linux]
 568+    libc: [glibc]
 569+
 570+  '@rollup/[email protected]':
 571+    resolution: {integrity: sha512-VDC7rRJlee/scpki96GZ27Omf6yU87s1YXwVTpjE5841faVlDYYT565rgfmoR1U0sqL7z5ivQSDjcsF6VRXyBA==}
 572+    cpu: [x64]
 573+    os: [linux]
 574+    libc: [musl]
 575+
 576+  '@rollup/[email protected]':
 577+    resolution: {integrity: sha512-z86Ok2p4pTdv5xqCKZsTooO7yBEiaJR/HzU3Wx8RmWsPoLppnMKROhJusQob8B3IE1ghC343kUW9rC2r+Wf3ig==}
 578+    cpu: [x64]
 579+    os: [openbsd]
 580+
 581+  '@rollup/[email protected]':
 582+    resolution: {integrity: sha512-IzQmj+xXwQFGhMAMKMQVXkMwMZN3TqkJgAE0nSsqvVwWWciP4AIPMmWRqOQ2GfX7TUDZr+xqGFcBS36CRPGw0g==}
 583+    cpu: [arm64]
 584+    os: [openharmony]
 585+
 586+  '@rollup/[email protected]':
 587+    resolution: {integrity: sha512-F6qpTaPc9bwBH85kjy0/BLmLSW1uv7AoOXCoRIkg2arlgCYlWYcAbiMkvZuAcaWk9TpCRG//okznLAqLGshkMw==}
 588+    cpu: [arm64]
 589+    os: [win32]
 590+
 591+  '@rollup/[email protected]':
 592+    resolution: {integrity: sha512-igoDsTFhhwECBeGbUuLeIk7t8Y1apa+cs6mDWpx2EZ0ch7oEQgzHbFUXN9euoHekCAQzXdXApAGkV6jznS7tWw==}
 593+    cpu: [ia32]
 594+    os: [win32]
 595+
 596+  '@rollup/[email protected]':
 597+    resolution: {integrity: sha512-U3teMeMbXFmaM5D+OTJpsOXd+wV/qftIeYF9kBKL4v73641qyJmoXFtA28DQLsnmlyayEsTe72xpLHrArq6vHw==}
 598+    cpu: [x64]
 599+    os: [win32]
 600+
 601+  '@rollup/[email protected]':
 602+    resolution: {integrity: sha512-ypfC34F3RKXvCXBglGqGMsUSMKlgwd1HX9AOAlx9RoZZ6GaI42YHVeKpzg3JG+wpBUJYTG+NNZhqbDWL8tBZkw==}
 603+    cpu: [x64]
 604+    os: [win32]
 605+
 606+  '@shikijs/[email protected]':
 607+    resolution: {integrity: sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==}
 608+    engines: {node: '>=20'}
 609+
 610+  '@shikijs/[email protected]':
 611+    resolution: {integrity: sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==}
 612+    engines: {node: '>=20'}
 613+
 614+  '@shikijs/[email protected]':
 615+    resolution: {integrity: sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==}
 616+    engines: {node: '>=20'}
 617+
 618+  '@shikijs/[email protected]':
 619+    resolution: {integrity: sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==}
 620+    engines: {node: '>=20'}
 621+
 622+  '@shikijs/[email protected]':
 623+    resolution: {integrity: sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==}
 624+    engines: {node: '>=20'}
 625+
 626+  '@shikijs/[email protected]':
 627+    resolution: {integrity: sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==}
 628+    engines: {node: '>=20'}
 629+
 630+  '@shikijs/[email protected]':
 631+    resolution: {integrity: sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==}
 632+    engines: {node: '>=20'}
 633+
 634+  '@shikijs/[email protected]':
 635+    resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
 636+
 637+  '@simple-git/[email protected]':
 638+    resolution: {integrity: sha512-EtMX6XjRWSastG2SdkmSQByPtJ9dx/NIjnHbpQPCYt62j4RmSx5rgLTGpw0YCjF5h191gZOmBfheOT23cRSFdw==}
 639+
 640+  '@simple-git/[email protected]':
 641+    resolution: {integrity: sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==}
 642+
 643+  '@standard-schema/[email protected]':
 644+    resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
 645+
 646+  '@sveltejs/[email protected]':
 647+    resolution: {integrity: sha512-wgKggnhZVL9Bfx1OaKKTrYY9BFRk6C8UAkQNUcIv1+llzYrIqy+RZm5HPKzn0NpEBvTVhTqB4kQyllZywsRBRQ==}
 648+    peerDependencies:
 649+      acorn: ^8.9.0
 650+
 651+  '@sveltejs/[email protected]':
 652+    resolution: {integrity: sha512-uOfc9eVlI3A37RRSaKcgrheBYPrfJwC9VMqDp8x/O6tlKdcLLvHThSWD0KNIbjQ/d+7bwLGx3vx6aowAcRfd2g==}
 653+    peerDependencies:
 654+      '@sveltejs/kit': ^2.4.0
 655+
 656+  '@sveltejs/[email protected]':
 657+    resolution: {integrity: sha512-UDvEYuZqAMbfB/oXIoqKvbKcb7YczK5zYrzmsGV1zRJk03jntwp8dXiYoIJotxAndsKvcPFtx9H1GRSKFdSHgg==}
 658+    engines: {node: '>=18.13'}
 659+    hasBin: true
 660+    peerDependencies:
 661+      '@opentelemetry/api': ^1.0.0
 662+      '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0
 663+      svelte: ^4.0.0 || ^5.0.0-next.0
 664+      typescript: ^5.3.3 || ^6.0.0
 665+      vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0
 666+    peerDependenciesMeta:
 667+      '@opentelemetry/api':
 668+        optional: true
 669+      typescript:
 670+        optional: true
 671+
 672+  '@sveltejs/[email protected]':
 673+    resolution: {integrity: sha512-VT3qmUb8pRV2QrZjd8iAmtg8lf4W0TIjZbvXtz5MKei/q96teWZgGJyyidJzOjzZzvdq616eSRVeMYIQChUTAQ==}
 674+    engines: {node: '>= 18.0.0'}
 675+
 676+  '@sveltejs/[email protected]':
 677+    resolution: {integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==}
 678+    engines: {node: ^20.19 || ^22.12 || >=24}
 679+    peerDependencies:
 680+      '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0
 681+      svelte: ^5.0.0
 682+      vite: ^6.3.0 || ^7.0.0
 683+
 684+  '@sveltejs/[email protected]':
 685+    resolution: {integrity: sha512-ou/d51QSdTyN26D7h6dSpusAKaZkAiGM55/AKYi+9AGZw7q85hElbjK3kEyzXHhLSnRISHOYzVge6x0jRZ7DXA==}
 686+    engines: {node: ^20.19 || ^22.12 || >=24}
 687+    peerDependencies:
 688+      svelte: ^5.0.0
 689+      vite: ^6.3.0 || ^7.0.0
 690+
 691+  '@tailwindcss/[email protected]':
 692+    resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==}
 693+
 694+  '@tailwindcss/[email protected]':
 695+    resolution: {integrity: sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==}
 696+    engines: {node: '>= 20'}
 697+    cpu: [arm64]
 698+    os: [android]
 699+
 700+  '@tailwindcss/[email protected]':
 701+    resolution: {integrity: sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==}
 702+    engines: {node: '>= 20'}
 703+    cpu: [arm64]
 704+    os: [darwin]
 705+
 706+  '@tailwindcss/[email protected]':
 707+    resolution: {integrity: sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==}
 708+    engines: {node: '>= 20'}
 709+    cpu: [x64]
 710+    os: [darwin]
 711+
 712+  '@tailwindcss/[email protected]':
 713+    resolution: {integrity: sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==}
 714+    engines: {node: '>= 20'}
 715+    cpu: [x64]
 716+    os: [freebsd]
 717+
 718+  '@tailwindcss/[email protected]':
 719+    resolution: {integrity: sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==}
 720+    engines: {node: '>= 20'}
 721+    cpu: [arm]
 722+    os: [linux]
 723+
 724+  '@tailwindcss/[email protected]':
 725+    resolution: {integrity: sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==}
 726+    engines: {node: '>= 20'}
 727+    cpu: [arm64]
 728+    os: [linux]
 729+    libc: [glibc]
 730+
 731+  '@tailwindcss/[email protected]':
 732+    resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==}
 733+    engines: {node: '>= 20'}
 734+    cpu: [arm64]
 735+    os: [linux]
 736+    libc: [musl]
 737+
 738+  '@tailwindcss/[email protected]':
 739+    resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==}
 740+    engines: {node: '>= 20'}
 741+    cpu: [x64]
 742+    os: [linux]
 743+    libc: [glibc]
 744+
 745+  '@tailwindcss/[email protected]':
 746+    resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==}
 747+    engines: {node: '>= 20'}
 748+    cpu: [x64]
 749+    os: [linux]
 750+    libc: [musl]
 751+
 752+  '@tailwindcss/[email protected]':
 753+    resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==}
 754+    engines: {node: '>=14.0.0'}
 755+    cpu: [wasm32]
 756+    bundledDependencies:
 757+      - '@napi-rs/wasm-runtime'
 758+      - '@emnapi/core'
 759+      - '@emnapi/runtime'
 760+      - '@tybys/wasm-util'
 761+      - '@emnapi/wasi-threads'
 762+      - tslib
 763+
 764+  '@tailwindcss/[email protected]':
 765+    resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==}
 766+    engines: {node: '>= 20'}
 767+    cpu: [arm64]
 768+    os: [win32]
 769+
 770+  '@tailwindcss/[email protected]':
 771+    resolution: {integrity: sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==}
 772+    engines: {node: '>= 20'}
 773+    cpu: [x64]
 774+    os: [win32]
 775+
 776+  '@tailwindcss/[email protected]':
 777+    resolution: {integrity: sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==}
 778+    engines: {node: '>= 20'}
 779+
 780+  '@tailwindcss/[email protected]':
 781+    resolution: {integrity: sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==}
 782+    peerDependencies:
 783+      vite: ^5.2.0 || ^6 || ^7 || ^8
 784+
 785+  '@types/[email protected]':
 786+    resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
 787+
 788+  '@types/[email protected]':
 789+    resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
 790+
 791+  '@types/[email protected]':
 792+    resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==}
 793+
 794+  '@types/[email protected]':
 795+    resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
 796+
 797+  '@types/[email protected]':
 798+    resolution: {integrity: sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==}
 799+
 800+  '@types/[email protected]':
 801+    resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
 802+
 803+  '@types/[email protected]':
 804+    resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
 805+
 806+  '@types/[email protected]':
 807+    resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
 808+
 809+  '@ungap/[email protected]':
 810+    resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==}
 811+
 812+  '@xterm/[email protected]':
 813+    resolution: {integrity: sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g==}
 814+
 815+  '@xterm/[email protected]':
 816+    resolution: {integrity: sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg==}
 817+
 818+  [email protected]:
 819+    resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
 820+
 821+  [email protected]:
 822+    resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
 823+    engines: {node: '>=0.4.0'}
 824+    hasBin: true
 825+
 826+  [email protected]:
 827+    resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==}
 828+    engines: {node: '>= 0.4'}
 829+
 830+  [email protected]:
 831+    resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
 832+    engines: {node: '>= 0.4'}
 833+
 834+  [email protected]:
 835+    resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
 836+    engines: {node: '>=18'}
 837+
 838+  [email protected]:
 839+    resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
 840+
 841+  [email protected]:
 842+    resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
 843+
 844+  [email protected]:
 845+    resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
 846+
 847+  [email protected]:
 848+    resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
 849+    engines: {node: '>= 14.16.0'}
 850+
 851+  [email protected]:
 852+    resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
 853+    engines: {node: '>=6'}
 854+
 855+  [email protected]:
 856+    resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
 857+
 858+  [email protected]:
 859+    resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
 860+
 861+  [email protected]:
 862+    resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
 863+    engines: {node: '>= 0.6'}
 864+
 865+  [email protected]:
 866+    resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
 867+    engines: {node: '>=6.0'}
 868+    peerDependencies:
 869+      supports-color: '*'
 870+    peerDependenciesMeta:
 871+      supports-color:
 872+        optional: true
 873+
 874+  [email protected]:
 875+    resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
 876+    engines: {node: '>=0.10.0'}
 877+
 878+  [email protected]:
 879+    resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
 880+    engines: {node: '>=18'}
 881+
 882+  [email protected]:
 883+    resolution: {integrity: sha512-m1pAzaJgZ/gssEqlOhJkPJp8Xly7QyW6xcrkUa2KKcDeDSEMP7X8xipU3snUcfisTQx0w1AGae+9UtJSfVnXGw==}
 884+    engines: {node: '>=18'}
 885+
 886+  [email protected]:
 887+    resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
 888+    engines: {node: '>=12'}
 889+
 890+  [email protected]:
 891+    resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
 892+    engines: {node: '>=6'}
 893+
 894+  [email protected]:
 895+    resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
 896+    engines: {node: '>=8'}
 897+
 898+  [email protected]:
 899+    resolution: {integrity: sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==}
 900+
 901+  [email protected]:
 902+    resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
 903+
 904+  [email protected]:
 905+    resolution: {integrity: sha512-u9gfn+BlbHcyO7vItCIC4z49LJDUt31tODzOfAuJ5R1E7IdlRL6KjugcB9zOpejD+XiR+dDZbsnHSQ3g6A/u8A==}
 906+    engines: {node: '>=12'}
 907+
 908+  [email protected]:
 909+    resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==}
 910+    engines: {node: '>=0.3.1'}
 911+
 912+  [email protected]:
 913+    resolution: {integrity: sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==}
 914+    engines: {node: '>=10.13.0'}
 915+
 916+  [email protected]:
 917+    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
 918+    engines: {node: '>= 0.4'}
 919+
 920+  [email protected]:
 921+    resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==}
 922+    engines: {node: '>=18'}
 923+    hasBin: true
 924+
 925+  [email protected]:
 926+    resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
 927+
 928+  [email protected]:
 929+    resolution: {integrity: sha512-X+t0J3EQKrrw5lgpgjn4hKjD17cHCZBZIcp2OUOyH7teMjH67gNRR2p+b1rMYavBkRN6VfHPWJOPY7w+VwQf/g==}
 930+    peerDependencies:
 931+      '@typescript-eslint/types': ^8.2.0
 932+    peerDependenciesMeta:
 933+      '@typescript-eslint/types':
 934+        optional: true
 935+
 936+  [email protected]:
 937+    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
 938+
 939+  [email protected]:
 940+    resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
 941+    engines: {node: '>=12.0.0'}
 942+    peerDependencies:
 943+      picomatch: ^3 || ^4
 944+    peerDependenciesMeta:
 945+      picomatch:
 946+        optional: true
 947+
 948+  [email protected]:
 949+    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
 950+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
 951+    os: [darwin]
 952+
 953+  [email protected]:
 954+    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
 955+
 956+  [email protected]:
 957+    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
 958+
 959+  [email protected]:
 960+    resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==}
 961+    engines: {node: '>= 0.4'}
 962+
 963+  [email protected]:
 964+    resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
 965+
 966+  [email protected]:
 967+    resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
 968+
 969+  [email protected]:
 970+    resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
 971+    engines: {node: '>=12.0.0'}
 972+
 973+  [email protected]:
 974+    resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
 975+
 976+  [email protected]:
 977+    resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==}
 978+    engines: {node: '>= 0.4'}
 979+
 980+  [email protected]:
 981+    resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
 982+    engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
 983+    hasBin: true
 984+
 985+  [email protected]:
 986+    resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==}
 987+    engines: {node: '>=20'}
 988+
 989+  [email protected]:
 990+    resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
 991+    engines: {node: '>=14.16'}
 992+    hasBin: true
 993+
 994+  [email protected]:
 995+    resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
 996+
 997+  [email protected]:
 998+    resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
 999+
1000+  [email protected]:
1001+    resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
1002+
1003+  [email protected]:
1004+    resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==}
1005+    engines: {node: '>=16'}
1006+
1007+  [email protected]:
1008+    resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
1009+    hasBin: true
1010+
1011+  [email protected]:
1012+    resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
1013+    engines: {node: '>=6'}
1014+
1015+  [email protected]:
1016+    resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
1017+    engines: {node: '>= 12.0.0'}
1018+    cpu: [arm64]
1019+    os: [android]
1020+
1021+  [email protected]:
1022+    resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
1023+    engines: {node: '>= 12.0.0'}
1024+    cpu: [arm64]
1025+    os: [darwin]
1026+
1027+  [email protected]:
1028+    resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
1029+    engines: {node: '>= 12.0.0'}
1030+    cpu: [x64]
1031+    os: [darwin]
1032+
1033+  [email protected]:
1034+    resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
1035+    engines: {node: '>= 12.0.0'}
1036+    cpu: [x64]
1037+    os: [freebsd]
1038+
1039+  [email protected]:
1040+    resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
1041+    engines: {node: '>= 12.0.0'}
1042+    cpu: [arm]
1043+    os: [linux]
1044+
1045+  [email protected]:
1046+    resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
1047+    engines: {node: '>= 12.0.0'}
1048+    cpu: [arm64]
1049+    os: [linux]
1050+    libc: [glibc]
1051+
1052+  [email protected]:
1053+    resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
1054+    engines: {node: '>= 12.0.0'}
1055+    cpu: [arm64]
1056+    os: [linux]
1057+    libc: [musl]
1058+
1059+  [email protected]:
1060+    resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
1061+    engines: {node: '>= 12.0.0'}
1062+    cpu: [x64]
1063+    os: [linux]
1064+    libc: [glibc]
1065+
1066+  [email protected]:
1067+    resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
1068+    engines: {node: '>= 12.0.0'}
1069+    cpu: [x64]
1070+    os: [linux]
1071+    libc: [musl]
1072+
1073+  [email protected]:
1074+    resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
1075+    engines: {node: '>= 12.0.0'}
1076+    cpu: [arm64]
1077+    os: [win32]
1078+
1079+  [email protected]:
1080+    resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
1081+    engines: {node: '>= 12.0.0'}
1082+    cpu: [x64]
1083+    os: [win32]
1084+
1085+  [email protected]:
1086+    resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
1087+    engines: {node: '>= 12.0.0'}
1088+
1089+  [email protected]:
1090+    resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
1091+
1092+  [email protected]:
1093+    resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
1094+
1095+  [email protected]:
1096+    resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==}
1097+
1098+  [email protected]:
1099+    resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
1100+
1101+  [email protected]:
1102+    resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
1103+
1104+  [email protected]:
1105+    resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
1106+
1107+  [email protected]:
1108+    resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
1109+
1110+  [email protected]:
1111+    resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
1112+
1113+  [email protected]:
1114+    resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
1115+    engines: {node: '>=4'}
1116+
1117+  [email protected]:
1118+    resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
1119+    engines: {node: '>=10'}
1120+
1121+  [email protected]:
1122+    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1123+
1124+  [email protected]:
1125+    resolution: {integrity: sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==}
1126+    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1127+    hasBin: true
1128+
1129+  [email protected]:
1130+    resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
1131+
1132+  [email protected]:
1133+    resolution: {integrity: sha512-vORSzHXi4Ofl7HemVWpuudLqCPdaQb4LfpRCUpE5HPxhp4JYscl8zZwxh11p26v2wvW24WMwnMfLjhRLixrfxA==}
1134+
1135+  [email protected]:
1136+    resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==}
1137+    hasBin: true
1138+
1139+  [email protected]:
1140+    resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==}
1141+    engines: {node: '>=12.20.0'}
1142+
1143+  [email protected]:
1144+    resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==}
1145+
1146+  [email protected]:
1147+    resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==}
1148+
1149+  [email protected]:
1150+    resolution: {integrity: sha512-++Zlftm0kVLPmzC06t6epuWmcRMDbI4z5P3NNX979WA/k23+NtSOynEGzsVfZwguKw2mi5umVgnBlJQMwRz4Pg==}
1151+    engines: {node: '>=20'}
1152+
1153+  [email protected]:
1154+    resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1155+
1156+  [email protected]:
1157+    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1158+
1159+  [email protected]:
1160+    resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
1161+    engines: {node: '>=12'}
1162+
1163+  [email protected]:
1164+    resolution: {integrity: sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==}
1165+    engines: {node: ^10 || ^12 || >=14}
1166+
1167+  [email protected]:
1168+    resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==}
1169+    engines: {node: '>=20'}
1170+
1171+  [email protected]:
1172+    resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==}
1173+    engines: {node: '>=20'}
1174+
1175+  [email protected]:
1176+    resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==}
1177+
1178+  [email protected]:
1179+    resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
1180+    engines: {node: '>= 14.18.0'}
1181+
1182+  [email protected]:
1183+    resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
1184+
1185+  [email protected]:
1186+    resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
1187+
1188+  [email protected]:
1189+    resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==}
1190+
1191+  [email protected]:
1192+    resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
1193+    engines: {node: '>= 0.4'}
1194+    hasBin: true
1195+
1196+  [email protected]:
1197+    resolution: {integrity: sha512-KRWwmNLlPw5M7HcdYfm15oBv9n9LPtjzpzCIxS/phwqvPyxHSoKX6Y2YU3pxSPfy0CLquVgsx/j/hBi6OvH1Nw==}
1198+    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1199+    hasBin: true
1200+
1201+  [email protected]:
1202+    resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
1203+    engines: {node: '>=18'}
1204+
1205+  [email protected]:
1206+    resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
1207+    engines: {node: '>=6'}
1208+
1209+  [email protected]:
1210+    resolution: {integrity: sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw==}
1211+
1212+  [email protected]:
1213+    resolution: {integrity: sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==}
1214+    engines: {node: '>=20'}
1215+
1216+  [email protected]:
1217+    resolution: {integrity: sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==}
1218+
1219+  [email protected]:
1220+    resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
1221+    engines: {node: '>=18'}
1222+
1223+  [email protected]:
1224+    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1225+    engines: {node: '>=0.10.0'}
1226+
1227+  [email protected]:
1228+    resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
1229+
1230+  [email protected]:
1231+    resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
1232+
1233+  [email protected]:
1234+    resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1235+    engines: {node: '>= 0.4'}
1236+
1237+  [email protected]:
1238+    resolution: {integrity: sha512-t2scM//ZuVbSY/T2w6FSBw1v9s2NEmh/g+sy1lqtosW5ylBV5AF4wFb1Ts9Kf3MbfPDUDJDZ9L436YT0SPTdvw==}
1239+    engines: {node: '>= 18.0.0'}
1240+    hasBin: true
1241+    peerDependencies:
1242+      svelte: ^4.0.0 || ^5.0.0-next.0
1243+      typescript: ^5.0.0 || ^6.0.0
1244+
1245+  [email protected]:
1246+    resolution: {integrity: sha512-Uqj49lWKB+iSSnneuwiYYJ7MZgkB+eXr0LXBhv4uDuAkXqnWmq65Sxflfvp0Lc6MdKjMUxGaeOKWJqz5SNiVIA==}
1247+    engines: {node: '>=18'}
1248+
1249+  [email protected]:
1250+    resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==}
1251+
1252+  [email protected]:
1253+    resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
1254+    engines: {node: '>=6'}
1255+
1256+  [email protected]:
1257+    resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
1258+    engines: {node: '>=12.0.0'}
1259+
1260+  [email protected]:
1261+    resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
1262+    engines: {node: '>=6'}
1263+
1264+  [email protected]:
1265+    resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
1266+
1267+  [email protected]:
1268+    resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
1269+    engines: {node: '>=14.17'}
1270+    hasBin: true
1271+
1272+  [email protected]:
1273+    resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==}
1274+
1275+  [email protected]:
1276+    resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
1277+
1278+  [email protected]:
1279+    resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
1280+
1281+  [email protected]:
1282+    resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
1283+
1284+  [email protected]:
1285+    resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
1286+
1287+  [email protected]:
1288+    resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
1289+
1290+  [email protected]:
1291+    resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
1292+
1293+  [email protected]:
1294+    resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
1295+
1296+  [email protected]:
1297+    resolution: {integrity: sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==}
1298+    engines: {node: ^20.19.0 || >=22.12.0}
1299+    hasBin: true
1300+    peerDependencies:
1301+      '@types/node': ^20.19.0 || >=22.12.0
1302+      jiti: '>=1.21.0'
1303+      less: ^4.0.0
1304+      lightningcss: ^1.21.0
1305+      sass: ^1.70.0
1306+      sass-embedded: ^1.70.0
1307+      stylus: '>=0.54.8'
1308+      sugarss: ^5.0.0
1309+      terser: ^5.16.0
1310+      tsx: ^4.8.1
1311+      yaml: ^2.4.2
1312+    peerDependenciesMeta:
1313+      '@types/node':
1314+        optional: true
1315+      jiti:
1316+        optional: true
1317+      less:
1318+        optional: true
1319+      lightningcss:
1320+        optional: true
1321+      sass:
1322+        optional: true
1323+      sass-embedded:
1324+        optional: true
1325+      stylus:
1326+        optional: true
1327+      sugarss:
1328+        optional: true
1329+      terser:
1330+        optional: true
1331+      tsx:
1332+        optional: true
1333+      yaml:
1334+        optional: true
1335+
1336+  [email protected]:
1337+    resolution: {integrity: sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==}
1338+    peerDependencies:
1339+      vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
1340+    peerDependenciesMeta:
1341+      vite:
1342+        optional: true
1343+
1344+  [email protected]:
1345+    resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==}
1346+    engines: {node: '>=10.0.0'}
1347+    peerDependencies:
1348+      bufferutil: ^4.0.1
1349+      utf-8-validate: '>=5.0.2'
1350+    peerDependenciesMeta:
1351+      bufferutil:
1352+        optional: true
1353+      utf-8-validate:
1354+        optional: true
1355+
1356+  [email protected]:
1357+    resolution: {integrity: sha512-Hl0ZOAs672vg+06kfujwRhoS6/jehvULrlFkuF2dRu6pHgA8U06h3xqNIqNNU1LTXPcedxByAR4GS6pwQK0mgA==}
1358+    engines: {node: '>=20'}
1359+
1360+  [email protected]:
1361+    resolution: {integrity: sha512-msJxIvYDYcoNL+PJsu+7qmpDWsYmAxTY+2TNYXXF0hzBzBk0BMecOqDOG/EckUoKCuKwObfbugIl8QpqHDXeFA==}
1362+
1363+  [email protected]:
1364+    resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
1365+
1366+snapshots:
1367+
1368+  '@esbuild/[email protected]':
1369+    optional: true
1370+
1371+  '@esbuild/[email protected]':
1372+    optional: true
1373+
1374+  '@esbuild/[email protected]':
1375+    optional: true
1376+
1377+  '@esbuild/[email protected]':
1378+    optional: true
1379+
1380+  '@esbuild/[email protected]':
1381+    optional: true
1382+
1383+  '@esbuild/[email protected]':
1384+    optional: true
1385+
1386+  '@esbuild/[email protected]':
1387+    optional: true
1388+
1389+  '@esbuild/[email protected]':
1390+    optional: true
1391+
1392+  '@esbuild/[email protected]':
1393+    optional: true
1394+
1395+  '@esbuild/[email protected]':
1396+    optional: true
1397+
1398+  '@esbuild/[email protected]':
1399+    optional: true
1400+
1401+  '@esbuild/[email protected]':
1402+    optional: true
1403+
1404+  '@esbuild/[email protected]':
1405+    optional: true
1406+
1407+  '@esbuild/[email protected]':
1408+    optional: true
1409+
1410+  '@esbuild/[email protected]':
1411+    optional: true
1412+
1413+  '@esbuild/[email protected]':
1414+    optional: true
1415+
1416+  '@esbuild/[email protected]':
1417+    optional: true
1418+
1419+  '@esbuild/[email protected]':
1420+    optional: true
1421+
1422+  '@esbuild/[email protected]':
1423+    optional: true
1424+
1425+  '@esbuild/[email protected]':
1426+    optional: true
1427+
1428+  '@esbuild/[email protected]':
1429+    optional: true
1430+
1431+  '@esbuild/[email protected]':
1432+    optional: true
1433+
1434+  '@esbuild/[email protected]':
1435+    optional: true
1436+
1437+  '@esbuild/[email protected]':
1438+    optional: true
1439+
1440+  '@esbuild/[email protected]':
1441+    optional: true
1442+
1443+  '@esbuild/[email protected]':
1444+    optional: true
1445+
1446+  '@jridgewell/[email protected]':
1447+    dependencies:
1448+      '@jridgewell/sourcemap-codec': 1.6.0
1449+      '@jridgewell/trace-mapping': 0.3.31
1450+
1451+  '@jridgewell/[email protected]':
1452+    dependencies:
1453+      '@jridgewell/gen-mapping': 0.3.13
1454+      '@jridgewell/trace-mapping': 0.3.31
1455+
1456+  '@jridgewell/[email protected]': {}
1457+
1458+  '@jridgewell/[email protected]': {}
1459+
1460+  '@jridgewell/[email protected]':
1461+    dependencies:
1462+      '@jridgewell/resolve-uri': 3.1.2
1463+      '@jridgewell/sourcemap-codec': 1.6.0
1464+
1465+  '@kwsites/[email protected]':
1466+    dependencies:
1467+      debug: 4.4.3
1468+    transitivePeerDependencies:
1469+      - supports-color
1470+
1471+  '@kwsites/[email protected]': {}
1472+
1473+  '@napi-rs/[email protected]':
1474+    optional: true
1475+
1476+  '@polka/[email protected]': {}
1477+
1478+  '@profoundlogic/[email protected]':
1479+    dependencies:
1480+      nopt: 1.0.10
1481+
1482+  '@rollup/[email protected]([email protected])':
1483+    dependencies:
1484+      '@rollup/pluginutils': 5.4.0([email protected])
1485+      commondir: 1.0.1
1486+      estree-walker: 2.0.2
1487+      fdir: 6.5.0([email protected])
1488+      is-reference: 1.2.1
1489+      magic-string: 0.30.21
1490+      picomatch: 4.0.7
1491+    optionalDependencies:
1492+      rollup: 4.63.5
1493+
1494+  '@rollup/[email protected]([email protected])':
1495+    dependencies:
1496+      '@rollup/pluginutils': 5.4.0([email protected])
1497+    optionalDependencies:
1498+      rollup: 4.63.5
1499+
1500+  '@rollup/[email protected]([email protected])':
1501+    dependencies:
1502+      '@rollup/pluginutils': 5.4.0([email protected])
1503+      '@types/resolve': 1.20.2
1504+      deepmerge: 4.3.1
1505+      is-module: 1.0.0
1506+      resolve: 1.22.12
1507+    optionalDependencies:
1508+      rollup: 4.63.5
1509+
1510+  '@rollup/[email protected]([email protected])':
1511+    dependencies:
1512+      '@rollup/pluginutils': 5.4.0([email protected])
1513+      magic-string: 0.30.21
1514+    optionalDependencies:
1515+      rollup: 4.63.5
1516+
1517+  '@rollup/[email protected]([email protected])':
1518+    dependencies:
1519+      '@types/estree': 1.0.9
1520+      estree-walker: 2.0.2
1521+      picomatch: 4.0.7
1522+    optionalDependencies:
1523+      rollup: 4.63.5
1524+
1525+  '@rollup/[email protected]':
1526+    optional: true
1527+
1528+  '@rollup/[email protected]':
1529+    optional: true
1530+
1531+  '@rollup/[email protected]':
1532+    optional: true
1533+
1534+  '@rollup/[email protected]':
1535+    optional: true
1536+
1537+  '@rollup/[email protected]':
1538+    optional: true
1539+
1540+  '@rollup/[email protected]':
1541+    optional: true
1542+
1543+  '@rollup/[email protected]':
1544+    optional: true
1545+
1546+  '@rollup/[email protected]':
1547+    optional: true
1548+
1549+  '@rollup/[email protected]':
1550+    optional: true
1551+
1552+  '@rollup/[email protected]':
1553+    optional: true
1554+
1555+  '@rollup/[email protected]':
1556+    optional: true
1557+
1558+  '@rollup/[email protected]':
1559+    optional: true
1560+
1561+  '@rollup/[email protected]':
1562+    optional: true
1563+
1564+  '@rollup/[email protected]':
1565+    optional: true
1566+
1567+  '@rollup/[email protected]':
1568+    optional: true
1569+
1570+  '@rollup/[email protected]':
1571+    optional: true
1572+
1573+  '@rollup/[email protected]':
1574+    optional: true
1575+
1576+  '@rollup/[email protected]':
1577+    optional: true
1578+
1579+  '@rollup/[email protected]':
1580+    optional: true
1581+
1582+  '@rollup/[email protected]':
1583+    optional: true
1584+
1585+  '@rollup/[email protected]':
1586+    optional: true
1587+
1588+  '@rollup/[email protected]':
1589+    optional: true
1590+
1591+  '@rollup/[email protected]':
1592+    optional: true
1593+
1594+  '@rollup/[email protected]':
1595+    optional: true
1596+
1597+  '@rollup/[email protected]':
1598+    optional: true
1599+
1600+  '@shikijs/[email protected]':
1601+    dependencies:
1602+      '@shikijs/primitive': 4.4.3
1603+      '@shikijs/types': 4.4.3
1604+      '@shikijs/vscode-textmate': 10.0.2
1605+      '@types/hast': 3.0.5
1606+      hast-util-to-html: 9.0.5
1607+
1608+  '@shikijs/[email protected]':
1609+    dependencies:
1610+      '@shikijs/types': 4.4.3
1611+      '@shikijs/vscode-textmate': 10.0.2
1612+      oniguruma-to-es: 4.3.6
1613+
1614+  '@shikijs/[email protected]':
1615+    dependencies:
1616+      '@shikijs/types': 4.4.3
1617+      '@shikijs/vscode-textmate': 10.0.2
1618+
1619+  '@shikijs/[email protected]':
1620+    dependencies:
1621+      '@shikijs/types': 4.4.3
1622+
1623+  '@shikijs/[email protected]':
1624+    dependencies:
1625+      '@shikijs/types': 4.4.3
1626+      '@shikijs/vscode-textmate': 10.0.2
1627+      '@types/hast': 3.0.5
1628+
1629+  '@shikijs/[email protected]':
1630+    dependencies:
1631+      '@shikijs/types': 4.4.3
1632+
1633+  '@shikijs/[email protected]':
1634+    dependencies:
1635+      '@shikijs/vscode-textmate': 10.0.2
1636+      '@types/hast': 3.0.5
1637+
1638+  '@shikijs/[email protected]': {}
1639+
1640+  '@simple-git/[email protected]': {}
1641+
1642+  '@simple-git/[email protected]':
1643+    dependencies:
1644+      '@simple-git/args-pathspec': 1.0.4
1645+
1646+  '@standard-schema/[email protected]': {}
1647+
1648+  '@sveltejs/[email protected]([email protected])':
1649+    dependencies:
1650+      acorn: 8.18.0
1651+
1652+  '@sveltejs/[email protected](@sveltejs/[email protected](@sveltejs/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected])))':
1653+    dependencies:
1654+      '@rollup/plugin-commonjs': 29.0.3([email protected])
1655+      '@rollup/plugin-json': 6.1.0([email protected])
1656+      '@rollup/plugin-node-resolve': 16.0.3([email protected])
1657+      '@rollup/plugin-replace': 6.0.3([email protected])
1658+      '@sveltejs/kit': 2.70.3(@sveltejs/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected]))
1659+      rollup: 4.63.5
1660+
1661+  '@sveltejs/[email protected](@sveltejs/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])))([email protected])([email protected])([email protected](@types/[email protected])([email protected])([email protected]))':
1662+    dependencies:
1663+      '@standard-schema/spec': 1.1.0
1664+      '@sveltejs/acorn-typescript': 1.0.13([email protected])
1665+      '@sveltejs/vite-plugin-svelte': 6.2.4([email protected])([email protected](@types/[email protected])([email protected])([email protected]))
1666+      '@types/cookie': 0.6.0
1667+      acorn: 8.18.0
1668+      cookie: 0.6.0
1669+      devalue: 5.9.4
1670+      esm-env: 1.2.2
1671+      kleur: 4.1.5
1672+      magic-string: 0.30.21
1673+      mrmime: 2.0.1
1674+      set-cookie-parser: 3.1.2
1675+      sirv: 3.0.2
1676+      svelte: 5.57.1
1677+      vite: 7.3.6(@types/[email protected])([email protected])([email protected])
1678+    optionalDependencies:
1679+      typescript: 5.9.3
1680+
1681+  '@sveltejs/[email protected]': {}
1682+
1683+  '@sveltejs/[email protected](@sveltejs/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected]))':
1684+    dependencies:
1685+      '@sveltejs/vite-plugin-svelte': 6.2.4([email protected])([email protected](@types/[email protected])([email protected])([email protected]))
1686+      obug: 2.2.1
1687+      svelte: 5.57.1
1688+      vite: 7.3.6(@types/[email protected])([email protected])([email protected])
1689+
1690+  '@sveltejs/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected]))':
1691+    dependencies:
1692+      '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/[email protected]([email protected])([email protected](@types/[email protected])([email protected])([email protected])))([email protected])([email protected](@types/[email protected])([email protected])([email protected]))
1693+      deepmerge: 4.3.1
1694+      magic-string: 0.30.21
1695+      obug: 2.2.1
1696+      svelte: 5.57.1
1697+      vite: 7.3.6(@types/[email protected])([email protected])([email protected])
1698+      vitefu: 1.1.3([email protected](@types/[email protected])([email protected])([email protected]))
1699+
1700+  '@tailwindcss/[email protected]':
1701+    dependencies:
1702+      '@jridgewell/remapping': 2.3.5
1703+      enhanced-resolve: 5.25.1
1704+      jiti: 2.7.0
1705+      lightningcss: 1.32.0
1706+      magic-string: 0.30.21
1707+      source-map-js: 1.2.1
1708+      tailwindcss: 4.3.3
1709+
1710+  '@tailwindcss/[email protected]':
1711+    optional: true
1712+
1713+  '@tailwindcss/[email protected]':
1714+    optional: true
1715+
1716+  '@tailwindcss/[email protected]':
1717+    optional: true
1718+
1719+  '@tailwindcss/[email protected]':
1720+    optional: true
1721+
1722+  '@tailwindcss/[email protected]':
1723+    optional: true
1724+
1725+  '@tailwindcss/[email protected]':
1726+    optional: true
1727+
1728+  '@tailwindcss/[email protected]':
1729+    optional: true
1730+
1731+  '@tailwindcss/[email protected]':
1732+    optional: true
1733+
1734+  '@tailwindcss/[email protected]':
1735+    optional: true
1736+
1737+  '@tailwindcss/[email protected]':
1738+    optional: true
1739+
1740+  '@tailwindcss/[email protected]':
1741+    optional: true
1742+
1743+  '@tailwindcss/[email protected]':
1744+    optional: true
1745+
1746+  '@tailwindcss/[email protected]':
1747+    optionalDependencies:
1748+      '@tailwindcss/oxide-android-arm64': 4.3.3
1749+      '@tailwindcss/oxide-darwin-arm64': 4.3.3
1750+      '@tailwindcss/oxide-darwin-x64': 4.3.3
1751+      '@tailwindcss/oxide-freebsd-x64': 4.3.3
1752+      '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.3
1753+      '@tailwindcss/oxide-linux-arm64-gnu': 4.3.3
1754+      '@tailwindcss/oxide-linux-arm64-musl': 4.3.3
1755+      '@tailwindcss/oxide-linux-x64-gnu': 4.3.3
1756+      '@tailwindcss/oxide-linux-x64-musl': 4.3.3
1757+      '@tailwindcss/oxide-wasm32-wasi': 4.3.3
1758+      '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3
1759+      '@tailwindcss/oxide-win32-x64-msvc': 4.3.3
1760+
1761+  '@tailwindcss/[email protected]([email protected](@types/[email protected])([email protected])([email protected]))':
1762+    dependencies:
1763+      '@tailwindcss/node': 4.3.3
1764+      '@tailwindcss/oxide': 4.3.3
1765+      tailwindcss: 4.3.3
1766+      vite: 7.3.6(@types/[email protected])([email protected])([email protected])
1767+
1768+  '@types/[email protected]': {}
1769+
1770+  '@types/[email protected]': {}
1771+
1772+  '@types/[email protected]':
1773+    dependencies:
1774+      '@types/unist': 3.0.3
1775+
1776+  '@types/[email protected]':
1777+    dependencies:
1778+      '@types/unist': 3.0.3
1779+
1780+  '@types/[email protected]':
1781+    dependencies:
1782+      undici-types: 8.9.0
1783+
1784+  '@types/[email protected]': {}
1785+
1786+  '@types/[email protected]': {}
1787+
1788+  '@types/[email protected]':
1789+    dependencies:
1790+      '@types/node': 26.6.2
1791+
1792+  '@ungap/[email protected]': {}
1793+
1794+  '@xterm/[email protected]': {}
1795+
1796+  '@xterm/[email protected]': {}
1797+
1798+  [email protected]: {}
1799+
1800+  [email protected]: {}
1801+
1802+  [email protected]: {}
1803+
1804+  [email protected]: {}
1805+
1806+  [email protected]:
1807+    dependencies:
1808+      run-applescript: 7.1.0
1809+
1810+  [email protected]: {}
1811+
1812+  [email protected]: {}
1813+
1814+  [email protected]: {}
1815+
1816+  [email protected]:
1817+    dependencies:
1818+      readdirp: 4.1.2
1819+
1820+  [email protected]: {}
1821+
1822+  [email protected]: {}
1823+
1824+  [email protected]: {}
1825+
1826+  [email protected]: {}
1827+
1828+  [email protected]:
1829+    dependencies:
1830+      ms: 2.1.3
1831+
1832+  [email protected]: {}
1833+
1834+  [email protected]: {}
1835+
1836+  [email protected]:
1837+    dependencies:
1838+      bundle-name: 4.1.0
1839+      default-browser-id: 5.0.1
1840+
1841+  [email protected]: {}
1842+
1843+  [email protected]: {}
1844+
1845+  [email protected]: {}
1846+
1847+  [email protected]: {}
1848+
1849+  [email protected]:
1850+    dependencies:
1851+      dequal: 2.0.3
1852+
1853+  [email protected]:
1854+    dependencies:
1855+      '@profoundlogic/hogan': 3.0.4
1856+      diff: 8.0.4
1857+    optionalDependencies:
1858+      highlight.js: 11.11.1
1859+
1860+  [email protected]: {}
1861+
1862+  [email protected]:
1863+    dependencies:
1864+      graceful-fs: 4.2.11
1865+      tapable: 2.3.3
1866+
1867+  [email protected]: {}
1868+
1869+  [email protected]:
1870+    optionalDependencies:
1871+      '@esbuild/aix-ppc64': 0.28.2
1872+      '@esbuild/android-arm': 0.28.2
1873+      '@esbuild/android-arm64': 0.28.2
1874+      '@esbuild/android-x64': 0.28.2
1875+      '@esbuild/darwin-arm64': 0.28.2
1876+      '@esbuild/darwin-x64': 0.28.2
1877+      '@esbuild/freebsd-arm64': 0.28.2
1878+      '@esbuild/freebsd-x64': 0.28.2
1879+      '@esbuild/linux-arm': 0.28.2
1880+      '@esbuild/linux-arm64': 0.28.2
1881+      '@esbuild/linux-ia32': 0.28.2
1882+      '@esbuild/linux-loong64': 0.28.2
1883+      '@esbuild/linux-mips64el': 0.28.2
1884+      '@esbuild/linux-ppc64': 0.28.2
1885+      '@esbuild/linux-riscv64': 0.28.2
1886+      '@esbuild/linux-s390x': 0.28.2
1887+      '@esbuild/linux-x64': 0.28.2
1888+      '@esbuild/netbsd-arm64': 0.28.2
1889+      '@esbuild/netbsd-x64': 0.28.2
1890+      '@esbuild/openbsd-arm64': 0.28.2
1891+      '@esbuild/openbsd-x64': 0.28.2
1892+      '@esbuild/openharmony-arm64': 0.28.2
1893+      '@esbuild/sunos-x64': 0.28.2
1894+      '@esbuild/win32-arm64': 0.28.2
1895+      '@esbuild/win32-ia32': 0.28.2
1896+      '@esbuild/win32-x64': 0.28.2
1897+
1898+  [email protected]: {}
1899+
1900+  [email protected]:
1901+    dependencies:
1902+      '@jridgewell/sourcemap-codec': 1.6.0
1903+
1904+  [email protected]: {}
1905+
1906+  [email protected]([email protected]):
1907+    optionalDependencies:
1908+      picomatch: 4.0.7
1909+
1910+  [email protected]:
1911+    optional: true
1912+
1913+  [email protected]: {}
1914+
1915+  [email protected]: {}
1916+
1917+  [email protected]:
1918+    dependencies:
1919+      function-bind: 1.1.2
1920+
1921+  [email protected]:
1922+    dependencies:
1923+      '@types/hast': 3.0.5
1924+      '@types/unist': 3.0.3
1925+      ccount: 2.0.1
1926+      comma-separated-tokens: 2.0.3
1927+      hast-util-whitespace: 3.0.0
1928+      html-void-elements: 3.0.0
1929+      mdast-util-to-hast: 13.2.1
1930+      property-information: 7.2.0
1931+      space-separated-tokens: 2.0.2
1932+      stringify-entities: 4.0.4
1933+      zwitch: 2.0.4
1934+
1935+  [email protected]:
1936+    dependencies:
1937+      '@types/hast': 3.0.5
1938+
1939+  [email protected]:
1940+    optional: true
1941+
1942+  [email protected]: {}
1943+
1944+  [email protected]:
1945+    dependencies:
1946+      hasown: 2.0.4
1947+
1948+  [email protected]: {}
1949+
1950+  [email protected]: {}
1951+
1952+  [email protected]:
1953+    dependencies:
1954+      is-docker: 3.0.0
1955+
1956+  [email protected]: {}
1957+
1958+  [email protected]:
1959+    dependencies:
1960+      '@types/estree': 1.0.9
1961+
1962+  [email protected]:
1963+    dependencies:
1964+      '@types/estree': 1.0.9
1965+
1966+  [email protected]:
1967+    dependencies:
1968+      is-inside-container: 1.0.0
1969+
1970+  [email protected]: {}
1971+
1972+  [email protected]: {}
1973+
1974+  [email protected]:
1975+    optional: true
1976+
1977+  [email protected]:
1978+    optional: true
1979+
1980+  [email protected]:
1981+    optional: true
1982+
1983+  [email protected]:
1984+    optional: true
1985+
1986+  [email protected]:
1987+    optional: true
1988+
1989+  [email protected]:
1990+    optional: true
1991+
1992+  [email protected]:
1993+    optional: true
1994+
1995+  [email protected]:
1996+    optional: true
1997+
1998+  [email protected]:
1999+    optional: true
2000+
2001+  [email protected]:
2002+    optional: true
2003+
2004+  [email protected]:
2005+    optional: true
2006+
2007+  [email protected]:
2008+    dependencies:
2009+      detect-libc: 2.1.2
2010+    optionalDependencies:
2011+      lightningcss-android-arm64: 1.32.0
2012+      lightningcss-darwin-arm64: 1.32.0
2013+      lightningcss-darwin-x64: 1.32.0
2014+      lightningcss-freebsd-x64: 1.32.0
2015+      lightningcss-linux-arm-gnueabihf: 1.32.0
2016+      lightningcss-linux-arm64-gnu: 1.32.0
2017+      lightningcss-linux-arm64-musl: 1.32.0
2018+      lightningcss-linux-x64-gnu: 1.32.0
2019+      lightningcss-linux-x64-musl: 1.32.0
2020+      lightningcss-win32-arm64-msvc: 1.32.0
2021+      lightningcss-win32-x64-msvc: 1.32.0
2022+
2023+  [email protected]: {}
2024+
2025+  [email protected]:
2026+    dependencies:
2027+      '@jridgewell/sourcemap-codec': 1.6.0
2028+
2029+  [email protected]:
2030+    dependencies:
2031+      '@types/hast': 3.0.5
2032+      '@types/mdast': 4.0.4
2033+      '@ungap/structured-clone': 1.4.0
2034+      devlop: 1.1.0
2035+      micromark-util-sanitize-uri: 2.0.1
2036+      trim-lines: 3.0.1
2037+      unist-util-position: 5.0.0
2038+      unist-util-visit: 5.1.0
2039+      vfile: 6.0.3
2040+
2041+  [email protected]:
2042+    dependencies:
2043+      micromark-util-symbol: 2.0.1
2044+      micromark-util-types: 2.0.2
2045+
2046+  [email protected]: {}
2047+
2048+  [email protected]:
2049+    dependencies:
2050+      micromark-util-character: 2.1.1
2051+      micromark-util-encode: 2.0.1
2052+      micromark-util-symbol: 2.0.1
2053+
2054+  [email protected]: {}
2055+
2056+  [email protected]: {}
2057+
2058+  [email protected]: {}
2059+
2060+  [email protected]: {}
2061+
2062+  [email protected]: {}
2063+
2064+  [email protected]: {}
2065+
2066+  [email protected]: {}
2067+
2068+  [email protected]:
2069+    dependencies:
2070+      node-addon-api: 7.1.1
2071+
2072+  [email protected]:
2073+    dependencies:
2074+      abbrev: 1.1.1
2075+
2076+  [email protected]: {}
2077+
2078+  [email protected]: {}
2079+
2080+  [email protected]:
2081+    dependencies:
2082+      oniguruma-parser: 0.12.2
2083+      regex: 6.1.0
2084+      regex-recursion: 6.0.2
2085+
2086+  [email protected]:
2087+    dependencies:
2088+      default-browser: 5.5.1
2089+      define-lazy-prop: 3.0.0
2090+      is-in-ssh: 1.0.0
2091+      is-inside-container: 1.0.0
2092+      powershell-utils: 0.2.1
2093+      wsl-utils: 1.0.0
2094+
2095+  [email protected]: {}
2096+
2097+  [email protected]: {}
2098+
2099+  [email protected]: {}
2100+
2101+  [email protected]:
2102+    dependencies:
2103+      nanoid: 3.3.19
2104+      picocolors: 1.1.1
2105+      source-map-js: 1.2.1
2106+
2107+  [email protected]: {}
2108+
2109+  [email protected]: {}
2110+
2111+  [email protected]: {}
2112+
2113+  [email protected]: {}
2114+
2115+  [email protected]:
2116+    dependencies:
2117+      regex-utilities: 2.3.0
2118+
2119+  [email protected]: {}
2120+
2121+  [email protected]:
2122+    dependencies:
2123+      regex-utilities: 2.3.0
2124+
2125+  [email protected]:
2126+    dependencies:
2127+      es-errors: 1.3.0
2128+      is-core-module: 2.17.0
2129+      path-parse: 1.0.7
2130+      supports-preserve-symlinks-flag: 1.0.0
2131+
2132+  [email protected]:
2133+    dependencies:
2134+      '@types/estree': 1.0.9
2135+    optionalDependencies:
2136+      '@napi-rs/lzma-linux-x64-gnu': 1.5.1
2137+      '@rollup/rollup-android-arm-eabi': 4.63.5
2138+      '@rollup/rollup-android-arm64': 4.63.5
2139+      '@rollup/rollup-darwin-arm64': 4.63.5
2140+      '@rollup/rollup-darwin-x64': 4.63.5
2141+      '@rollup/rollup-freebsd-arm64': 4.63.5
2142+      '@rollup/rollup-freebsd-x64': 4.63.5
2143+      '@rollup/rollup-linux-arm-gnueabihf': 4.63.5
2144+      '@rollup/rollup-linux-arm-musleabihf': 4.63.5
2145+      '@rollup/rollup-linux-arm64-gnu': 4.63.5
2146+      '@rollup/rollup-linux-arm64-musl': 4.63.5
2147+      '@rollup/rollup-linux-loong64-gnu': 4.63.5
2148+      '@rollup/rollup-linux-loong64-musl': 4.63.5
2149+      '@rollup/rollup-linux-ppc64-gnu': 4.63.5
2150+      '@rollup/rollup-linux-ppc64-musl': 4.63.5
2151+      '@rollup/rollup-linux-riscv64-gnu': 4.63.5
2152+      '@rollup/rollup-linux-riscv64-musl': 4.63.5
2153+      '@rollup/rollup-linux-s390x-gnu': 4.63.5
2154+      '@rollup/rollup-linux-x64-gnu': 4.63.5
2155+      '@rollup/rollup-linux-x64-musl': 4.63.5
2156+      '@rollup/rollup-openbsd-x64': 4.63.5
2157+      '@rollup/rollup-openharmony-arm64': 4.63.5
2158+      '@rollup/rollup-win32-arm64-msvc': 4.63.5
2159+      '@rollup/rollup-win32-ia32-msvc': 4.63.5
2160+      '@rollup/rollup-win32-x64-gnu': 4.63.5
2161+      '@rollup/rollup-win32-x64-msvc': 4.63.5
2162+      fsevents: 2.3.3
2163+
2164+  [email protected]: {}
2165+
2166+  [email protected]:
2167+    dependencies:
2168+      mri: 1.2.0
2169+
2170+  [email protected]: {}
2171+
2172+  [email protected]:
2173+    dependencies:
2174+      '@shikijs/core': 4.4.3
2175+      '@shikijs/engine-javascript': 4.4.3
2176+      '@shikijs/engine-oniguruma': 4.4.3
2177+      '@shikijs/langs': 4.4.3
2178+      '@shikijs/themes': 4.4.3
2179+      '@shikijs/types': 4.4.3
2180+      '@shikijs/vscode-textmate': 10.0.2
2181+      '@types/hast': 3.0.5
2182+
2183+  [email protected]:
2184+    dependencies:
2185+      '@kwsites/file-exists': 1.1.1
2186+      '@kwsites/promise-deferred': 1.1.1
2187+      '@simple-git/args-pathspec': 1.0.4
2188+      '@simple-git/argv-parser': 1.1.1
2189+      debug: 4.4.3
2190+    transitivePeerDependencies:
2191+      - supports-color
2192+
2193+  [email protected]:
2194+    dependencies:
2195+      '@polka/url': 1.0.0-next.29
2196+      mrmime: 2.0.1
2197+      totalist: 3.0.1
2198+
2199+  [email protected]: {}
2200+
2201+  [email protected]: {}
2202+
2203+  [email protected]:
2204+    dependencies:
2205+      character-entities-html4: 2.1.0
2206+      character-entities-legacy: 3.0.0
2207+
2208+  [email protected]: {}
2209+
2210+  [email protected]([email protected])([email protected])([email protected]):
2211+    dependencies:
2212+      '@jridgewell/trace-mapping': 0.3.31
2213+      '@sveltejs/load-config': 0.2.3
2214+      chokidar: 4.0.3
2215+      fdir: 6.5.0([email protected])
2216+      picocolors: 1.1.1
2217+      sade: 1.8.1
2218+      svelte: 5.57.1
2219+      typescript: 5.9.3
2220+    transitivePeerDependencies:
2221+      - picomatch
2222+
2223+  [email protected]:
2224+    dependencies:
2225+      '@jridgewell/remapping': 2.3.5
2226+      '@jridgewell/sourcemap-codec': 1.6.0
2227+      '@sveltejs/acorn-typescript': 1.0.13([email protected])
2228+      '@types/estree': 1.0.9
2229+      acorn: 8.18.0
2230+      aria-query: 5.3.1
2231+      axobject-query: 4.1.0
2232+      clsx: 2.1.1
2233+      devalue: 5.9.4
2234+      esm-env: 1.2.2
2235+      esrap: 2.3.12
2236+      is-reference: 3.0.3
2237+      locate-character: 3.0.0
2238+      magic-string: 0.30.21
2239+      zimmerframe: 1.1.5
2240+    transitivePeerDependencies:
2241+      - '@typescript-eslint/types'
2242+
2243+  [email protected]: {}
2244+
2245+  [email protected]: {}
2246+
2247+  [email protected]:
2248+    dependencies:
2249+      fdir: 6.5.0([email protected])
2250+      picomatch: 4.0.7
2251+
2252+  [email protected]: {}
2253+
2254+  [email protected]: {}
2255+
2256+  [email protected]: {}
2257+
2258+  [email protected]: {}
2259+
2260+  [email protected]:
2261+    dependencies:
2262+      '@types/unist': 3.0.3
2263+
2264+  [email protected]:
2265+    dependencies:
2266+      '@types/unist': 3.0.3
2267+
2268+  [email protected]:
2269+    dependencies:
2270+      '@types/unist': 3.0.3
2271+
2272+  [email protected]:
2273+    dependencies:
2274+      '@types/unist': 3.0.3
2275+      unist-util-is: 6.0.1
2276+
2277+  [email protected]:
2278+    dependencies:
2279+      '@types/unist': 3.0.3
2280+      unist-util-is: 6.0.1
2281+      unist-util-visit-parents: 6.0.2
2282+
2283+  [email protected]:
2284+    dependencies:
2285+      '@types/unist': 3.0.3
2286+      unist-util-stringify-position: 4.0.0
2287+
2288+  [email protected]:
2289+    dependencies:
2290+      '@types/unist': 3.0.3
2291+      vfile-message: 4.0.3
2292+
2293+  [email protected](@types/[email protected])([email protected])([email protected]):
2294+    dependencies:
2295+      esbuild: 0.28.2
2296+      fdir: 6.5.0([email protected])
2297+      picomatch: 4.0.7
2298+      postcss: 8.5.28
2299+      rollup: 4.63.5
2300+      tinyglobby: 0.2.17
2301+    optionalDependencies:
2302+      '@types/node': 26.6.2
2303+      fsevents: 2.3.3
2304+      jiti: 2.7.0
2305+      lightningcss: 1.32.0
2306+
2307+  [email protected]([email protected](@types/[email protected])([email protected])([email protected])):
2308+    optionalDependencies:
2309+      vite: 7.3.6(@types/[email protected])([email protected])([email protected])
2310+
2311+  [email protected]: {}
2312+
2313+  [email protected]:
2314+    dependencies:
2315+      is-wsl: 3.1.1
2316+      powershell-utils: 0.1.0
2317+
2318+  [email protected]: {}
2319+
2320+  [email protected]: {}
A pnpm-workspace.yaml
+3, -0
1@@ -0,0 +1,3 @@
2+allowBuilds:
3+  esbuild: true
4+  node-pty: true
M src/lib/components/CommitDialog.svelte
+2, -2
 1@@ -1,6 +1,6 @@
 2 <script lang="ts">
 3 	import { showCommitDialog } from '$lib/stores/ui.ts';
 4-	import { uncommittedCount, loadUncommittedFiles } from '$lib/stores/files.ts';
 5+	import { uncommittedCount, loadUncommittedFiles, vcs } from '$lib/stores/files.ts';
 6 
 7 	let message = $state('');
 8 	let commitMode = $state<'approved' | 'all'>('approved');
 9@@ -48,7 +48,7 @@
10 	}
11 </script>
12 
13-{#if $showCommitDialog}
14+{#if $showCommitDialog && $vcs !== 'jj'}
15 	<!-- svelte-ignore a11y_click_events_have_key_events -->
16 	<!-- svelte-ignore a11y_no_static_element_interactions -->
17 	<div class="fixed inset-0 bg-black/50 z-50 flex items-center justify-center" onclick={close}>
M src/lib/components/DiffView.svelte
+10, -8
 1@@ -3,7 +3,7 @@
 2 	import type { ReviewThread } from '$lib/types/index.ts';
 3 	import { viewMode, commentingLine } from '$lib/stores/ui.ts';
 4 	import { threadsByFile } from '$lib/stores/review.ts';
 5-	import { resetHunk, diffFiles } from '$lib/stores/files.ts';
 6+	import { resetHunk, diffFiles, vcs } from '$lib/stores/files.ts';
 7 	import CommentEditor from './CommentEditor.svelte';
 8 	import CommentThread from './CommentThread.svelte';
 9 
10@@ -187,13 +187,15 @@
11 					</button>
12 				{/if}
13 				<span class="flex-1 px-2 py-1">{hunk.header}</span>
14-				<button
15-					class="text-accent-red/60 hover:text-accent-red hover:bg-hover transition-colors px-2 py-1 text-xs"
16-					onclick={() => resetHunk(file.path, hunk.header)}
17-					title="Reset this change block"
18-				>
19-					↩ Reset
20-				</button>
21+				{#if $vcs !== 'jj'}
22+					<button
23+						class="text-accent-red/60 hover:text-accent-red hover:bg-hover transition-colors px-2 py-1 text-xs"
24+						onclick={() => resetHunk(file.path, hunk.header)}
25+						title="Reset this change block"
26+					>
27+						↩ Reset
28+					</button>
29+				{/if}
30 			</div>
31 		{/if}
32 
M src/lib/components/Toolbar.svelte
+30, -3
 1@@ -1,18 +1,32 @@
 2 <script lang="ts">
 3 	import { viewMode, showCommitDialog, showExportDialog, theme } from '$lib/stores/ui.ts';
 4 	import { stats, reviewStatus, submitReview } from '$lib/stores/review.ts';
 5-	import { diffMode, diffScope, baseBranch, approvedCount, uncommittedCount, diffStats, loadAllDiffs, setDiffScope, loadUncommittedFiles } from '$lib/stores/files.ts';
 6+	import { diffMode, diffScope, baseBranch, approvedCount, uncommittedCount, diffStats, vcs, loadAllDiffs, setDiffScope, loadUncommittedFiles } from '$lib/stores/files.ts';
 7 
 8 	let showReviewMenu = $state(false);
 9+	let toast = $state<string | null>(null);
10 
11 	function openReviewMenu() {
12 		showReviewMenu = !showReviewMenu;
13 		if (showReviewMenu) loadUncommittedFiles();
14 	}
15 
16+	function showToast(message: string) {
17+		toast = message;
18+		setTimeout(() => {
19+			toast = null;
20+		}, 3000);
21+	}
22+
23 	async function handleApprove() {
24 		await submitReview('approved');
25-		$showCommitDialog = true;
26+		if ($vcs === 'jj') {
27+			// jj commits the working copy automatically, so there is nothing to
28+			// commit — approving just finalizes the review state.
29+			showToast('Review approved');
30+		} else {
31+			$showCommitDialog = true;
32+		}
33 	}
34 
35 	async function handleRequestChanges() {
36@@ -29,6 +43,13 @@
37 <header class="bg-panel border-b border-border px-4 py-2 flex items-center gap-3">
38 	<h1 class="text-sm font-semibold text-primary mr-4">Local Code Review</h1>
39 
40+	<span
41+		class="text-[10px] uppercase tracking-wide px-1.5 py-0.5 rounded border {$vcs === 'jj' ? 'border-accent-blue/40 text-accent-blue' : 'border-border-strong text-muted'}"
42+		title={$vcs === 'jj' ? 'Jujutsu repository' : 'Git repository'}
43+	>
44+		{$vcs}
45+	</span>
46+
47 	<!-- View mode toggle -->
48 	<div class="flex bg-surface rounded overflow-hidden border border-border">
49 		<button
50@@ -160,7 +181,7 @@
51 					disabled={$uncommittedCount.total === 0}
52 					onclick={() => { handleApprove(); showReviewMenu = false; }}
53 				>
54-					<span class="text-accent-green mr-2">✓</span> Approve & Commit
55+					<span class="text-accent-green mr-2">✓</span> {$vcs === 'jj' ? 'Approve' : 'Approve & Commit'}
56 					{#if $uncommittedCount.total === 0}
57 						<span class="text-xs text-muted ml-1">(no uncommitted changes)</span>
58 					{/if}
59@@ -168,4 +189,10 @@
60 			</div>
61 		{/if}
62 	</div>
63+
64+	{#if toast}
65+		<div class="fixed bottom-4 right-4 z-50 bg-panel border border-accent-green/40 text-primary text-sm px-4 py-2 rounded-lg shadow-xl">
66+			{toast}
67+		</div>
68+	{/if}
69 </header>
A src/lib/server/diff-parser.ts
+167, -0
  1@@ -0,0 +1,167 @@
  2+import type { DiffFile, DiffHunk } from '$lib/types/index.ts';
  3+
  4+export function parseDiff(raw: string): DiffFile[] {
  5+	if (!raw.trim()) return [];
  6+
  7+	const files: DiffFile[] = [];
  8+	const fileChunks = raw.split(/^diff --git /m).filter(Boolean);
  9+
 10+	for (const chunk of fileChunks) {
 11+		const lines = chunk.split('\n');
 12+		let path = '';
 13+		let oldPath: string | undefined;
 14+
 15+		// Parse file header
 16+		const headerMatch = lines[0]?.match(/a\/(.+?) b\/(.+)/);
 17+		if (headerMatch) {
 18+			oldPath = headerMatch[1];
 19+			path = headerMatch[2];
 20+			if (oldPath === path) oldPath = undefined;
 21+		}
 22+
 23+		const language = getLanguage(path);
 24+		const hunks: DiffHunk[] = [];
 25+		let currentHunk: DiffHunk | null = null;
 26+		let oldLineNum = 0;
 27+		let newLineNum = 0;
 28+
 29+		for (const line of lines) {
 30+			const hunkMatch = line.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(.*)/);
 31+			if (hunkMatch) {
 32+				const oldStart = parseInt(hunkMatch[1], 10);
 33+				const oldLines = hunkMatch[2] ? parseInt(hunkMatch[2], 10) : 1;
 34+				const newStart = parseInt(hunkMatch[3], 10);
 35+				const newLines = hunkMatch[4] ? parseInt(hunkMatch[4], 10) : 1;
 36+				currentHunk = {
 37+					header: line,
 38+					oldStart,
 39+					oldLines,
 40+					newStart,
 41+					newLines,
 42+					lines: []
 43+				};
 44+				hunks.push(currentHunk);
 45+				oldLineNum = oldStart;
 46+				newLineNum = newStart;
 47+				continue;
 48+			}
 49+
 50+			if (!currentHunk) continue;
 51+
 52+			if (line.startsWith('+')) {
 53+				currentHunk.lines.push({
 54+					type: 'add',
 55+					content: line.substring(1),
 56+					newNumber: newLineNum++
 57+				});
 58+			} else if (line.startsWith('-')) {
 59+				currentHunk.lines.push({
 60+					type: 'del',
 61+					content: line.substring(1),
 62+					oldNumber: oldLineNum++
 63+				});
 64+			} else if (line.startsWith(' ') || line === '') {
 65+				// Only treat as context if we're inside a hunk and it looks like a context line
 66+				if (line.startsWith(' ')) {
 67+					currentHunk.lines.push({
 68+						type: 'context',
 69+						content: line.substring(1),
 70+						oldNumber: oldLineNum++,
 71+						newNumber: newLineNum++
 72+					});
 73+				}
 74+			} else if (line.startsWith('\\')) {
 75+				// "No newline at end of file" marker — skip
 76+			}
 77+		}
 78+
 79+		if (path) {
 80+			files.push({ path, oldPath, hunks, language });
 81+		}
 82+	}
 83+
 84+	return files;
 85+}
 86+
 87+export function getLanguage(filePath: string): string {
 88+	const ext = filePath.split('.').pop()?.toLowerCase() || '';
 89+	const map: Record<string, string> = {
 90+		ts: 'typescript',
 91+		tsx: 'tsx',
 92+		js: 'javascript',
 93+		jsx: 'jsx',
 94+		py: 'python',
 95+		rb: 'ruby',
 96+		go: 'go',
 97+		rs: 'rust',
 98+		java: 'java',
 99+		kt: 'kotlin',
100+		kts: 'kotlin',
101+		swift: 'swift',
102+		cs: 'csharp',
103+		fs: 'fsharp',
104+		php: 'php',
105+		r: 'r',
106+		lua: 'lua',
107+		dart: 'dart',
108+		scala: 'scala',
109+		groovy: 'groovy',
110+		pl: 'perl',
111+		pm: 'perl',
112+		ex: 'elixir',
113+		exs: 'elixir',
114+		erl: 'erlang',
115+		hs: 'haskell',
116+		clj: 'clojure',
117+		css: 'css',
118+		scss: 'scss',
119+		less: 'less',
120+		html: 'html',
121+		htm: 'html',
122+		xml: 'xml',
123+		svg: 'xml',
124+		svelte: 'svelte',
125+		vue: 'vue',
126+		json: 'json',
127+		jsonc: 'jsonc',
128+		yaml: 'yaml',
129+		yml: 'yaml',
130+		toml: 'toml',
131+		ini: 'ini',
132+		md: 'markdown',
133+		mdx: 'mdx',
134+		sh: 'bash',
135+		bash: 'bash',
136+		zsh: 'bash',
137+		fish: 'fish',
138+		ps1: 'powershell',
139+		sql: 'sql',
140+		graphql: 'graphql',
141+		gql: 'graphql',
142+		proto: 'proto',
143+		c: 'c',
144+		cpp: 'cpp',
145+		cc: 'cpp',
146+		cxx: 'cpp',
147+		h: 'c',
148+		hpp: 'cpp',
149+		m: 'objective-c',
150+		mm: 'objective-cpp',
151+		zig: 'zig',
152+		nim: 'nim',
153+		tf: 'hcl',
154+		dockerfile: 'dockerfile',
155+		makefile: 'makefile',
156+		cmake: 'cmake'
157+	};
158+	// Also check filename (no extension)
159+	const filename = filePath.split('/').pop()?.toLowerCase() || '';
160+	const filenameMap: Record<string, string> = {
161+		dockerfile: 'dockerfile',
162+		makefile: 'makefile',
163+		gemfile: 'ruby',
164+		rakefile: 'ruby',
165+		podfile: 'ruby'
166+	};
167+	return map[ext] || filenameMap[filename] || 'text';
168+}
M src/lib/server/export.ts
+1, -1
1@@ -3,7 +3,7 @@ import { join } from 'path';
2 import { spawn } from 'child_process';
3 import type { ReviewExport, ReviewExportFile, ReviewExportThread } from '$lib/types/index.ts';
4 import { readFile } from 'fs/promises';
5-import { getRepoDir, getRepoInfo, getStatus, getFileContent } from './git.ts';
6+import { getRepoDir, getRepoInfo, getStatus, getFileContent } from './vcs.ts';
7 import { getReview, getThreads, getContextFiles } from './review-store.ts';
8 
9 export async function buildExport(): Promise<ReviewExport> {
M src/lib/server/git.ts
+30, -175
  1@@ -1,21 +1,18 @@
  2 import simpleGit, { type SimpleGit } from 'simple-git';
  3-import type { FileChange, DiffFile, DiffHunk, DiffLine, DiffScope } from '$lib/types/index.ts';
  4-import { getWorktreeApprovals } from './review-store.ts';
  5+import type { FileChange, DiffMode, DiffScope } from '$lib/types/index.ts';
  6+import { getWorktreeApprovals, approveWorktreeFile, unapproveWorktreeFile } from './review-store.ts';
  7+import { getRepoDir } from './repo.ts';
  8 
  9 let git: SimpleGit;
 10 
 11 export function getGit(): SimpleGit {
 12 	if (!git) {
 13-		const repoDir = process.env.LCR_REPO_DIR || process.cwd();
 14+		const repoDir = getRepoDir();
 15 		git = simpleGit(repoDir);
 16 	}
 17 	return git;
 18 }
 19 
 20-export function getRepoDir(): string {
 21-	return process.env.LCR_REPO_DIR || process.cwd();
 22-}
 23-
 24 export async function getStatus(): Promise<FileChange[]> {
 25 	const g = getGit();
 26 	const status = await g.status();
 27@@ -150,172 +147,6 @@ export async function getDiff(filePath?: string): Promise<string> {
 28 	return result;
 29 }
 30 
 31-export function parseDiff(raw: string): DiffFile[] {
 32-	if (!raw.trim()) return [];
 33-
 34-	const files: DiffFile[] = [];
 35-	const fileChunks = raw.split(/^diff --git /m).filter(Boolean);
 36-
 37-	for (const chunk of fileChunks) {
 38-		const lines = chunk.split('\n');
 39-		let path = '';
 40-		let oldPath: string | undefined;
 41-
 42-		// Parse file header
 43-		const headerMatch = lines[0]?.match(/a\/(.+?) b\/(.+)/);
 44-		if (headerMatch) {
 45-			oldPath = headerMatch[1];
 46-			path = headerMatch[2];
 47-			if (oldPath === path) oldPath = undefined;
 48-		}
 49-
 50-		const language = getLanguage(path);
 51-		const hunks: DiffHunk[] = [];
 52-		let currentHunk: DiffHunk | null = null;
 53-		let oldLineNum = 0;
 54-		let newLineNum = 0;
 55-
 56-		for (const line of lines) {
 57-			const hunkMatch = line.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(.*)/);
 58-			if (hunkMatch) {
 59-				const oldStart = parseInt(hunkMatch[1], 10);
 60-				const oldLines = hunkMatch[2] ? parseInt(hunkMatch[2], 10) : 1;
 61-				const newStart = parseInt(hunkMatch[3], 10);
 62-				const newLines = hunkMatch[4] ? parseInt(hunkMatch[4], 10) : 1;
 63-				currentHunk = {
 64-					header: line,
 65-					oldStart,
 66-					oldLines,
 67-					newStart,
 68-					newLines,
 69-					lines: []
 70-				};
 71-				hunks.push(currentHunk);
 72-				oldLineNum = oldStart;
 73-				newLineNum = newStart;
 74-				continue;
 75-			}
 76-
 77-			if (!currentHunk) continue;
 78-
 79-			if (line.startsWith('+')) {
 80-				currentHunk.lines.push({
 81-					type: 'add',
 82-					content: line.substring(1),
 83-					newNumber: newLineNum++
 84-				});
 85-			} else if (line.startsWith('-')) {
 86-				currentHunk.lines.push({
 87-					type: 'del',
 88-					content: line.substring(1),
 89-					oldNumber: oldLineNum++
 90-				});
 91-			} else if (line.startsWith(' ') || line === '') {
 92-				// Only treat as context if we're inside a hunk and it looks like a context line
 93-				if (line.startsWith(' ')) {
 94-					currentHunk.lines.push({
 95-						type: 'context',
 96-						content: line.substring(1),
 97-						oldNumber: oldLineNum++,
 98-						newNumber: newLineNum++
 99-					});
100-				}
101-			} else if (line.startsWith('\\')) {
102-				// "No newline at end of file" marker — skip
103-			}
104-		}
105-
106-		if (path) {
107-			files.push({ path, oldPath, hunks, language });
108-		}
109-	}
110-
111-	return files;
112-}
113-
114-function getLanguage(filePath: string): string {
115-	const ext = filePath.split('.').pop()?.toLowerCase() || '';
116-	const map: Record<string, string> = {
117-		ts: 'typescript',
118-		tsx: 'tsx',
119-		js: 'javascript',
120-		jsx: 'jsx',
121-		py: 'python',
122-		rb: 'ruby',
123-		go: 'go',
124-		rs: 'rust',
125-		java: 'java',
126-		kt: 'kotlin',
127-		kts: 'kotlin',
128-		swift: 'swift',
129-		cs: 'csharp',
130-		fs: 'fsharp',
131-		php: 'php',
132-		r: 'r',
133-		lua: 'lua',
134-		dart: 'dart',
135-		scala: 'scala',
136-		groovy: 'groovy',
137-		pl: 'perl',
138-		pm: 'perl',
139-		ex: 'elixir',
140-		exs: 'elixir',
141-		erl: 'erlang',
142-		hs: 'haskell',
143-		clj: 'clojure',
144-		css: 'css',
145-		scss: 'scss',
146-		less: 'less',
147-		html: 'html',
148-		htm: 'html',
149-		xml: 'xml',
150-		svg: 'xml',
151-		svelte: 'svelte',
152-		vue: 'vue',
153-		json: 'json',
154-		jsonc: 'jsonc',
155-		yaml: 'yaml',
156-		yml: 'yaml',
157-		toml: 'toml',
158-		ini: 'ini',
159-		md: 'markdown',
160-		mdx: 'mdx',
161-		sh: 'bash',
162-		bash: 'bash',
163-		zsh: 'bash',
164-		fish: 'fish',
165-		ps1: 'powershell',
166-		sql: 'sql',
167-		graphql: 'graphql',
168-		gql: 'graphql',
169-		proto: 'proto',
170-		c: 'c',
171-		cpp: 'cpp',
172-		cc: 'cpp',
173-		cxx: 'cpp',
174-		h: 'c',
175-		hpp: 'cpp',
176-		m: 'objective-c',
177-		mm: 'objective-cpp',
178-		zig: 'zig',
179-		nim: 'nim',
180-		tf: 'hcl',
181-		dockerfile: 'dockerfile',
182-		makefile: 'makefile',
183-		cmake: 'cmake'
184-	};
185-	// Also check filename (no extension)
186-	const filename = filePath.split('/').pop()?.toLowerCase() || '';
187-	const filenameMap: Record<string, string> = {
188-		dockerfile: 'dockerfile',
189-		makefile: 'makefile',
190-		gemfile: 'ruby',
191-		rakefile: 'ruby',
192-		podfile: 'ruby'
193-	};
194-	return map[ext] || filenameMap[filename] || 'text';
195-}
196-
197 export async function getFileContent(filePath: string, ref: string = 'HEAD'): Promise<string> {
198 	const g = getGit();
199 	try {
200@@ -409,8 +240,6 @@ export async function commit(message: string): Promise<string> {
201 	return result.commit;
202 }
203 
204-export type DiffMode = 'full' | 'unstaged';
205-
206 export async function getDiffByMode(mode: DiffMode, filePath?: string, scope?: DiffScope): Promise<string> {
207 	if (mode === 'unstaged') {
208 		return getUnstagedDiff(filePath);
209@@ -635,3 +464,29 @@ export async function getRepoInfo(): Promise<{ branch: string; repoName: string
210 	const repoName = repoDir.split('/').pop() || 'unknown';
211 	return { branch: branch.trim(), repoName };
212 }
213+
214+// --- Unified VCS interface helpers (git implementation) ---
215+
216+export async function approveFile(filePath: string, scope?: DiffScope): Promise<void> {
217+	if (scope === 'worktree') {
218+		approveWorktreeFile(filePath);
219+	} else {
220+		await stageFile(filePath);
221+	}
222+}
223+
224+export async function unapproveFile(filePath: string, scope?: DiffScope): Promise<void> {
225+	if (scope === 'worktree') {
226+		unapproveWorktreeFile(filePath);
227+	} else {
228+		await unstageFile(filePath);
229+	}
230+}
231+
232+export async function getOldRef(scope: DiffScope = 'uncommitted'): Promise<string> {
233+	if (scope === 'worktree') {
234+		const { mergeBase } = await getBaseBranchInfo();
235+		if (mergeBase) return mergeBase;
236+	}
237+	return 'HEAD';
238+}
A src/lib/server/jj.ts
+230, -0
  1@@ -0,0 +1,230 @@
  2+import { execFile } from 'child_process';
  3+import { promisify } from 'util';
  4+import type { FileChange, DiffMode, DiffScope } from '$lib/types/index.ts';
  5+import { parseDiff } from './diff-parser.ts';
  6+import { getRepoDir } from './repo.ts';
  7+import { getWorktreeApprovals, approveWorktreeFile, unapproveWorktreeFile } from './review-store.ts';
  8+
  9+const execFileAsync = promisify(execFile);
 10+
 11+// jj takes a repository-wide lock for each command. Several API routes issue
 12+// multiple jj calls in parallel, so serialize them through a queue to avoid
 13+// "concurrent modification" failures.
 14+let queue: Promise<unknown> = Promise.resolve();
 15+
 16+function jjExec(args: string[]): Promise<string> {
 17+	const result = queue.then(() =>
 18+		execFileAsync('jj', args, {
 19+			cwd: getRepoDir(),
 20+			encoding: 'utf-8',
 21+			maxBuffer: 64 * 1024 * 1024
 22+		})
 23+	);
 24+	// Keep the queue alive whether or not the command succeeds.
 25+	queue = result.then(
 26+		() => undefined,
 27+		() => undefined
 28+	);
 29+	return result.then((r) => r.stdout);
 30+}
 31+
 32+let jjAvailableCache: boolean | null = null;
 33+
 34+export async function isJjAvailable(): Promise<boolean> {
 35+	if (jjAvailableCache !== null) return jjAvailableCache;
 36+	try {
 37+		await execFileAsync('jj', ['--version'], { cwd: getRepoDir() });
 38+		jjAvailableCache = true;
 39+	} catch {
 40+		jjAvailableCache = false;
 41+	}
 42+	return jjAvailableCache;
 43+}
 44+
 45+// Maps new path -> status/oldPath by inspecting Git-format diff headers.
 46+function parseGitStatuses(raw: string): Map<string, { status: FileChange['status']; oldPath?: string }> {
 47+	const map = new Map<string, { status: FileChange['status']; oldPath?: string }>();
 48+	const chunks = raw.split(/^diff --git /m).filter(Boolean);
 49+	for (const chunk of chunks) {
 50+		const lines = chunk.split('\n');
 51+		const header = lines[0]?.match(/a\/(.+?) b\/(.+)/);
 52+		if (!header) continue;
 53+		const oldPath = header[1];
 54+		const newPath = header[2];
 55+
 56+		let status: FileChange['status'] = 'modified';
 57+		if (lines.some((l) => l.startsWith('new file mode'))) status = 'added';
 58+		else if (lines.some((l) => l.startsWith('deleted file mode'))) status = 'deleted';
 59+		else if (oldPath !== newPath) status = 'renamed';
 60+
 61+		map.set(newPath, { status, oldPath: status === 'renamed' ? oldPath : undefined });
 62+	}
 63+	return map;
 64+}
 65+
 66+function filesFromRaw(raw: string): FileChange[] {
 67+	const parsed = parseDiff(raw);
 68+	const statuses = parseGitStatuses(raw);
 69+	const approvals = getWorktreeApprovals();
 70+
 71+	return parsed.map((f) => {
 72+		const meta = statuses.get(f.path);
 73+		let additions = 0;
 74+		let deletions = 0;
 75+		for (const hunk of f.hunks) {
 76+			for (const line of hunk.lines) {
 77+				if (line.type === 'add') additions++;
 78+				else if (line.type === 'del') deletions++;
 79+			}
 80+		}
 81+		return {
 82+			path: f.path,
 83+			oldPath: meta?.oldPath ?? f.oldPath,
 84+			status: meta?.status ?? 'modified',
 85+			staged: false,
 86+			approved: approvals.has(f.path),
 87+			additions,
 88+			deletions
 89+		};
 90+	});
 91+}
 92+
 93+// Diff revision arguments. `jj diff -r @` already handles merge commits: when @
 94+// has multiple parents jj auto-merges them and diffs the merged result against
 95+// @, which is exactly "changes since the parents". Do not "simplify" this to an
 96+// explicit parents() revset.
 97+async function revArgs(scope?: DiffScope): Promise<string[]> {
 98+	if (scope === 'worktree') {
 99+		const { mergeBase } = await getBaseBranchInfo();
100+		if (mergeBase) return ['--from', mergeBase, '--to', '@'];
101+	}
102+	return ['-r', '@'];
103+}
104+
105+async function diffFor(paths: string[], scope?: DiffScope): Promise<string> {
106+	const args = ['diff', '--git', '--color=never', ...(await revArgs(scope))];
107+	if (paths.length > 0) args.push('--', ...paths);
108+	try {
109+		return await jjExec(args);
110+	} catch {
111+		return '';
112+	}
113+}
114+
115+export async function getStatus(): Promise<FileChange[]> {
116+	return filesFromRaw(await diffFor([], 'uncommitted'));
117+}
118+
119+export async function getWorktreeStatus(): Promise<FileChange[]> {
120+	return filesFromRaw(await diffFor([], 'worktree'));
121+}
122+
123+let cachedBaseBranchInfo: { baseBranch: string | null; mergeBase: string | null } | null = null;
124+
125+export async function getBaseBranchInfo(): Promise<{ baseBranch: string | null; mergeBase: string | null }> {
126+	if (cachedBaseBranchInfo) return cachedBaseBranchInfo;
127+
128+	try {
129+		const id = (await jjExec(['log', '-r', 'trunk()', '--no-graph', '-T', 'commit_id'])).trim();
130+		// trunk() falls back to the root commit when no main-like bookmark exists.
131+		if (!id || /^0+$/.test(id)) {
132+			cachedBaseBranchInfo = { baseBranch: null, mergeBase: null };
133+			return cachedBaseBranchInfo;
134+		}
135+		const bookmarks = (
136+			await jjExec(['log', '-r', 'trunk()', '--no-graph', '-T', 'bookmarks.join(" ")'])
137+		).trim();
138+		const baseBranch = bookmarks.split(/\s+/).filter(Boolean)[0] || 'trunk';
139+		cachedBaseBranchInfo = { baseBranch, mergeBase: id };
140+	} catch {
141+		cachedBaseBranchInfo = { baseBranch: null, mergeBase: null };
142+	}
143+	return cachedBaseBranchInfo;
144+}
145+
146+export async function getOldRef(scope: DiffScope = 'uncommitted'): Promise<string> {
147+	if (scope === 'worktree') {
148+		const { mergeBase } = await getBaseBranchInfo();
149+		if (mergeBase) return mergeBase;
150+	}
151+	return '@-';
152+}
153+
154+export async function getDiffByMode(mode: DiffMode, filePath?: string, scope?: DiffScope): Promise<string> {
155+	if (mode === 'unstaged') {
156+		return getUnstagedDiff(filePath, scope);
157+	}
158+	return diffFor(filePath ? [filePath] : [], scope);
159+}
160+
161+// jj has no staging area. "Needs Review" therefore means "not yet approved" —
162+// approval is tracked in memory rather than in an index.
163+async function getUnstagedDiff(filePath?: string, scope?: DiffScope): Promise<string> {
164+	const approved = getWorktreeApprovals();
165+
166+	if (filePath) {
167+		if (approved.has(filePath)) return '';
168+		return diffFor([filePath], scope);
169+	}
170+
171+	const status = scope === 'worktree' ? await getWorktreeStatus() : await getStatus();
172+	const unapproved = status.filter((f) => !f.approved).map((f) => f.path);
173+	if (unapproved.length === 0) return '';
174+	return diffFor(unapproved, scope);
175+}
176+
177+export async function getFileContent(filePath: string, ref: string = '@-'): Promise<string> {
178+	const rev = ref === 'HEAD' ? '@-' : ref;
179+	try {
180+		return await jjExec(['file', 'show', '-r', rev, '--', filePath]);
181+	} catch {
182+		return '';
183+	}
184+}
185+
186+export async function approveFile(filePath: string, _scope?: DiffScope): Promise<void> {
187+	approveWorktreeFile(filePath);
188+}
189+
190+export async function unapproveFile(filePath: string, _scope?: DiffScope): Promise<void> {
191+	unapproveWorktreeFile(filePath);
192+}
193+
194+export async function resetFile(filePath: string): Promise<void> {
195+	await jjExec(['restore', '--from', '@-', '--', filePath]);
196+}
197+
198+export async function resetHunk(_filePath: string, _hunkHeader: string): Promise<void> {
199+	throw new Error('Hunk reset is not supported in jj repositories; reset the whole file instead.');
200+}
201+
202+export async function commitStaged(_message: string): Promise<string> {
203+	throw new Error('jj changes are committed automatically; there is nothing to commit.');
204+}
205+
206+export async function commitAll(_message: string): Promise<string> {
207+	throw new Error('jj changes are committed automatically; there is nothing to commit.');
208+}
209+
210+export async function getRepoInfo(): Promise<{ branch: string; repoName: string }> {
211+	const repoDir = getRepoDir();
212+	const repoName = repoDir.split('/').pop() || 'unknown';
213+
214+	let branch = '@';
215+	try {
216+		const bookmarks = (
217+			await jjExec(['log', '-r', '@', '--no-graph', '-T', 'bookmarks.join(" ")'])
218+		).trim();
219+		if (bookmarks) {
220+			branch = bookmarks.split(/\s+/)[0];
221+		} else {
222+			const changeId = (
223+				await jjExec(['log', '-r', '@', '--no-graph', '-T', 'commit_id.short()'])
224+			).trim();
225+			if (changeId) branch = changeId;
226+		}
227+	} catch {
228+		// Leave the placeholder branch
229+	}
230+	return { branch, repoName };
231+}
M src/lib/server/pty-session.ts
+1, -1
1@@ -1,7 +1,7 @@
2 import { join } from 'path';
3 import { EventEmitter } from 'events';
4 import { findClaude } from './export.ts';
5-import { getRepoDir } from './git.ts';
6+import { getRepoDir } from './vcs.ts';
7 
8 // node-pty is a native module — dynamic import to avoid bundling issues
9 let pty: typeof import('node-pty') | null = null;
A src/lib/server/repo.ts
+3, -0
1@@ -0,0 +1,3 @@
2+export function getRepoDir(): string {
3+	return process.env.LCR_REPO_DIR || process.cwd();
4+}
A src/lib/server/vcs.ts
+105, -0
  1@@ -0,0 +1,105 @@
  2+import { existsSync } from 'fs';
  3+import { join } from 'path';
  4+import type { FileChange, DiffMode, DiffScope } from '$lib/types/index.ts';
  5+import { getRepoDir } from './repo.ts';
  6+import * as git from './git.ts';
  7+import * as jj from './jj.ts';
  8+
  9+export { getRepoDir };
 10+export { parseDiff, getLanguage } from './diff-parser.ts';
 11+export type { DiffMode };
 12+
 13+export type VcsKind = 'git' | 'jj';
 14+
 15+let cachedKind: VcsKind | null = null;
 16+
 17+/**
 18+ * Detect which VCS client to use. A `.jj/` directory wins over `.git` (jj repos
 19+ * are often colocated with git), as long as the `jj` binary is actually
 20+ * available. Falls back to git with a warning otherwise.
 21+ */
 22+export async function getVcsKind(): Promise<VcsKind> {
 23+	if (cachedKind) return cachedKind;
 24+
 25+	const repoDir = getRepoDir();
 26+	const hasJj = existsSync(join(repoDir, '.jj'));
 27+	const hasGit = existsSync(join(repoDir, '.git'));
 28+
 29+	if (hasJj && (await jj.isJjAvailable())) {
 30+		cachedKind = 'jj';
 31+		return cachedKind;
 32+	}
 33+
 34+	if (hasJj && !hasGit) {
 35+		throw new Error(
 36+			'Found a .jj directory but the `jj` CLI is not available on PATH. Install jujutsu to review this repository.'
 37+		);
 38+	}
 39+
 40+	if (hasJj) {
 41+		console.warn('  Warning: .jj directory found but `jj` is unavailable; falling back to git.');
 42+	}
 43+
 44+	cachedKind = 'git';
 45+	return cachedKind;
 46+}
 47+
 48+async function impl(): Promise<typeof git | typeof jj> {
 49+	return (await getVcsKind()) === 'jj' ? jj : git;
 50+}
 51+
 52+export async function getStatus(): Promise<FileChange[]> {
 53+	return (await impl()).getStatus();
 54+}
 55+
 56+export async function getWorktreeStatus(): Promise<FileChange[]> {
 57+	return (await impl()).getWorktreeStatus();
 58+}
 59+
 60+export async function getBaseBranchInfo(): Promise<{ baseBranch: string | null; mergeBase: string | null }> {
 61+	return (await impl()).getBaseBranchInfo();
 62+}
 63+
 64+export async function getOldRef(scope: DiffScope = 'uncommitted'): Promise<string> {
 65+	return (await impl()).getOldRef(scope);
 66+}
 67+
 68+export async function getDiffByMode(
 69+	mode: DiffMode,
 70+	filePath?: string,
 71+	scope?: DiffScope
 72+): Promise<string> {
 73+	return (await impl()).getDiffByMode(mode, filePath, scope);
 74+}
 75+
 76+export async function getFileContent(filePath: string, ref: string = 'HEAD'): Promise<string> {
 77+	return (await impl()).getFileContent(filePath, ref);
 78+}
 79+
 80+export async function approveFile(filePath: string, scope?: DiffScope): Promise<void> {
 81+	return (await impl()).approveFile(filePath, scope);
 82+}
 83+
 84+export async function unapproveFile(filePath: string, scope?: DiffScope): Promise<void> {
 85+	return (await impl()).unapproveFile(filePath, scope);
 86+}
 87+
 88+export async function resetFile(filePath: string): Promise<void> {
 89+	return (await impl()).resetFile(filePath);
 90+}
 91+
 92+export async function resetHunk(filePath: string, hunkHeader: string): Promise<void> {
 93+	return (await impl()).resetHunk(filePath, hunkHeader);
 94+}
 95+
 96+export async function commitStaged(message: string): Promise<string> {
 97+	return (await impl()).commitStaged(message);
 98+}
 99+
100+export async function commitAll(message: string): Promise<string> {
101+	return (await impl()).commitAll(message);
102+}
103+
104+export async function getRepoInfo(): Promise<{ branch: string; repoName: string }> {
105+	return (await impl()).getRepoInfo();
106+}
M src/lib/stores/files.ts
+11, -0
 1@@ -12,6 +12,17 @@ export const loading = writable(false);
 2 export const diffMode = writable<DiffMode>('full');
 3 export const diffScope = writable<DiffScope>('uncommitted');
 4 export const baseBranch = writable<string | null>(null);
 5+export const vcs = writable<'git' | 'jj'>('git');
 6+
 7+export async function loadRepoInfo() {
 8+	try {
 9+		const res = await fetch('/api/repo');
10+		const data = await res.json();
11+		if (data.vcs === 'jj' || data.vcs === 'git') vcs.set(data.vcs);
12+	} catch {
13+		// Keep the git default
14+	}
15+}
16 
17 export const selectedDiff = derived([diffFiles, selectedFile], ([$diffFiles, $selectedFile]) => {
18 	if (!$selectedFile) return null;
M src/lib/types/diff.ts
+2, -0
1@@ -35,3 +35,5 @@ export interface DiffLine {
2 }
3 
4 export type DiffScope = 'uncommitted' | 'worktree';
5+
6+export type DiffMode = 'full' | 'unstaged';
M src/routes/+page.svelte
+2, -1
 1@@ -6,7 +6,7 @@
 2 	import CommitDialog from '$lib/components/CommitDialog.svelte';
 3 	import ExportDialog from '$lib/components/ExportDialog.svelte';
 4 	import TerminalPanel from '$lib/components/TerminalPanel.svelte';
 5-	import { files, selectedFile, selectedDiff, selectedFileData, loadFiles, loadAllDiffs, toggleApproval, diffScope, diffMode } from '$lib/stores/files.ts';
 6+	import { files, selectedFile, selectedDiff, selectedFileData, loadFiles, loadAllDiffs, loadRepoInfo, toggleApproval, diffScope, diffMode } from '$lib/stores/files.ts';
 7 	import { loadComments } from '$lib/stores/review.ts';
 8 	import { sidebarOpen } from '$lib/stores/ui.ts';
 9 	import { toggleTerminal } from '$lib/stores/terminal.ts';
10@@ -39,6 +39,7 @@
11 
12 	onMount(async () => {
13 		try {
14+			await loadRepoInfo();
15 			await loadFiles();
16 			await loadAllDiffs();
17 			await loadComments();
M src/routes/api/comments/+server.ts
+1, -1
1@@ -8,7 +8,7 @@ import {
2 	getStats,
3 	markOutdated
4 } from '$lib/server/review-store.ts';
5-import { getRepoDir } from '$lib/server/git.ts';
6+import { getRepoDir } from '$lib/server/vcs.ts';
7 import { readFile } from 'fs/promises';
8 import { join } from 'path';
9 import type { RequestHandler } from './$types.ts';
M src/routes/api/commit/+server.ts
+1, -1
1@@ -1,5 +1,5 @@
2 import { json } from '@sveltejs/kit';
3-import { commitStaged, commitAll } from '$lib/server/git.ts';
4+import { commitStaged, commitAll } from '$lib/server/vcs.ts';
5 import { clearAll } from '$lib/server/review-store.ts';
6 import type { RequestHandler } from './$types.ts';
7 
M src/routes/api/context/+server.ts
+1, -1
1@@ -1,5 +1,5 @@
2 import { json } from '@sveltejs/kit';
3-import { getRepoDir } from '$lib/server/git.ts';
4+import { getRepoDir } from '$lib/server/vcs.ts';
5 import { highlightLines } from '$lib/server/highlighter.ts';
6 import { readFile } from 'fs/promises';
7 import { join } from 'path';
M src/routes/api/diff/+server.ts
+3, -8
 1@@ -1,11 +1,10 @@
 2 import { json } from '@sveltejs/kit';
 3-import { getDiffByMode, parseDiff, getFileContent, getBaseBranchInfo } from '$lib/server/git.ts';
 4-import type { DiffMode } from '$lib/server/git.ts';
 5+import { getDiffByMode, parseDiff, getFileContent, getOldRef, getRepoDir } from '$lib/server/vcs.ts';
 6+import type { DiffMode } from '$lib/types/index.ts';
 7 import type { DiffFile, DiffScope } from '$lib/types/index.ts';
 8 import { highlightLines } from '$lib/server/highlighter.ts';
 9 import { readFile } from 'fs/promises';
10 import { join } from 'path';
11-import { getRepoDir } from '$lib/server/git.ts';
12 import type { RequestHandler } from './$types.ts';
13 
14 async function applyHighlighting(files: DiffFile[], oldRef: string = 'HEAD'): Promise<void> {
15@@ -100,11 +99,7 @@ export const GET: RequestHandler = async ({ url }) => {
16 		}
17 
18 		// Determine the old ref for syntax highlighting
19-		let oldRef = 'HEAD';
20-		if (scope === 'worktree') {
21-			const { mergeBase } = await getBaseBranchInfo();
22-			if (mergeBase) oldRef = mergeBase;
23-		}
24+		const oldRef = await getOldRef(scope);
25 
26 		// Skip highlighting for very large files
27 		const filesToHighlight = parsed.filter((f) => (f.totalLines || 0) <= MAX_LINES_FOR_HIGHLIGHTING);
M src/routes/api/files/+server.ts
+3, -14
 1@@ -1,6 +1,5 @@
 2 import { json } from '@sveltejs/kit';
 3-import { getStatus, getWorktreeStatus, getBaseBranchInfo, stageFile, unstageFile, resetFile, resetHunk } from '$lib/server/git.ts';
 4-import { approveWorktreeFile, unapproveWorktreeFile } from '$lib/server/review-store.ts';
 5+import { getStatus, getWorktreeStatus, getBaseBranchInfo, approveFile, unapproveFile, resetFile, resetHunk } from '$lib/server/vcs.ts';
 6 import type { DiffScope } from '$lib/types/index.ts';
 7 import type { RequestHandler } from './$types.ts';
 8 
 9@@ -31,20 +30,10 @@ export const POST: RequestHandler = async ({ request }) => {
10 			return json({ error: 'Missing path or action' }, { status: 400 });
11 		}
12 
13-		const isWorktree = scope === 'worktree';
14-
15 		if (action === 'approve') {
16-			if (isWorktree) {
17-				approveWorktreeFile(path);
18-			} else {
19-				await stageFile(path);
20-			}
21+			await approveFile(path, scope);
22 		} else if (action === 'unapprove') {
23-			if (isWorktree) {
24-				unapproveWorktreeFile(path);
25-			} else {
26-				await unstageFile(path);
27-			}
28+			await unapproveFile(path, scope);
29 		} else if (action === 'reset') {
30 			await resetFile(path);
31 		} else if (action === 'reset-hunk') {
A src/routes/api/repo/+server.ts
+12, -0
 1@@ -0,0 +1,12 @@
 2+import { json } from '@sveltejs/kit';
 3+import { getRepoInfo, getVcsKind } from '$lib/server/vcs.ts';
 4+import type { RequestHandler } from './$types.ts';
 5+
 6+export const GET: RequestHandler = async () => {
 7+	try {
 8+		const [vcs, info] = await Promise.all([getVcsKind(), getRepoInfo()]);
 9+		return json({ vcs, ...info });
10+	} catch (err) {
11+		return json({ error: String(err) }, { status: 500 });
12+	}
13+};