Radish alpha
r
rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
Radicle web interface
Radicle
Git
Update svelte to v5.0
Sebastian Martinez committed 1 year ago
commit 50318285f89b568c5a0fa51e205906dc43a73883
parent 0d7a96e
32 files changed +859 -834
modified package-lock.json
@@ -28,14 +28,14 @@
        "marked-katex-extension": "^5.1.2",
        "marked-linkify-it": "^3.1.11",
        "md5": "^2.3.0",
-
        "svelte": "^4.2.19",
+
        "svelte": "^5.0.0",
        "twemoji": "^14.0.2",
        "zod": "^3.23.8"
      },
      "devDependencies": {
        "@eslint/js": "^9.11.1",
        "@playwright/test": "^1.47.2",
-
        "@sveltejs/vite-plugin-svelte": "^3.1.2",
+
        "@sveltejs/vite-plugin-svelte": "^4.0.0",
        "@tsconfig/svelte": "^5.0.4",
        "@types/config": "^3.3.5",
        "@types/dompurify": "^3.0.5",
@@ -49,7 +49,7 @@
        "config": "^3.3.12",
        "eslint": "^9.11.1",
        "eslint-config-prettier": "^9.1.0",
-
        "eslint-plugin-svelte": "^2.44.0",
+
        "eslint-plugin-svelte": "^2.45.1",
        "execa": "^9.4.0",
        "get-port": "^7.1.0",
        "globals": "^15.9.0",
@@ -57,7 +57,7 @@
        "prettier": "^3.3.3",
        "prettier-plugin-svelte": "^3.2.6",
        "svelte-check": "^4.0.2",
-
        "svelte-eslint-parser": "^0.41.1",
+
        "svelte-eslint-parser": "^0.42.0",
        "typescript": "^5.6.2",
        "typescript-eslint": "^8.7.0",
        "vite": "^5.4.7",
@@ -450,36 +450,51 @@
      }
    },
    "node_modules/@eslint-community/eslint-utils": {
-
      "version": "4.4.0",
-
      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
-
      "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+
      "version": "4.4.1",
+
      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
+
      "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==",
      "dev": true,
      "dependencies": {
-
        "eslint-visitor-keys": "^3.3.0"
+
        "eslint-visitor-keys": "^3.4.3"
      },
      "engines": {
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
      },
+
      "funding": {
+
        "url": "https://opencollective.com/eslint"
+
      },
      "peerDependencies": {
        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
      }
    },
+
    "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+
      "version": "3.4.3",
+
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+
      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+
      "dev": true,
+
      "engines": {
+
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+
      },
+
      "funding": {
+
        "url": "https://opencollective.com/eslint"
+
      }
+
    },
    "node_modules/@eslint-community/regexpp": {
-
      "version": "4.11.1",
-
      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
-
      "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
+
      "version": "4.12.1",
+
      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+
      "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
      "dev": true,
      "engines": {
        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
      }
    },
    "node_modules/@eslint/config-array": {
-
      "version": "0.18.0",
-
      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz",
-
      "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==",
+
      "version": "0.19.2",
+
      "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
+
      "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
      "dev": true,
      "dependencies": {
-
        "@eslint/object-schema": "^2.1.4",
+
        "@eslint/object-schema": "^2.1.6",
        "debug": "^4.3.1",
        "minimatch": "^3.1.2"
      },
@@ -510,18 +525,21 @@
      }
    },
    "node_modules/@eslint/core": {
-
      "version": "0.6.0",
-
      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz",
-
      "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==",
+
      "version": "0.10.0",
+
      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz",
+
      "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==",
      "dev": true,
+
      "dependencies": {
+
        "@types/json-schema": "^7.0.15"
+
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
      }
    },
    "node_modules/@eslint/eslintrc": {
-
      "version": "3.1.0",
-
      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz",
-
      "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==",
+
      "version": "3.2.0",
+
      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz",
+
      "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==",
      "dev": true,
      "dependencies": {
        "ajv": "^6.12.4",
@@ -576,29 +594,30 @@
      }
    },
    "node_modules/@eslint/js": {
-
      "version": "9.11.1",
-
      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.11.1.tgz",
-
      "integrity": "sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==",
+
      "version": "9.19.0",
+
      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz",
+
      "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==",
      "dev": true,
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
      }
    },
    "node_modules/@eslint/object-schema": {
-
      "version": "2.1.4",
-
      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz",
-
      "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==",
+
      "version": "2.1.6",
+
      "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+
      "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
      "dev": true,
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
      }
    },
    "node_modules/@eslint/plugin-kit": {
-
      "version": "0.2.0",
-
      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz",
-
      "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==",
+
      "version": "0.2.5",
+
      "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz",
+
      "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==",
      "dev": true,
      "dependencies": {
+
        "@eslint/core": "^0.10.0",
        "levn": "^0.4.1"
      },
      "engines": {
@@ -620,6 +639,41 @@
        "@hapi/hoek": "^9.0.0"
      }
    },
+
    "node_modules/@humanfs/core": {
+
      "version": "0.19.1",
+
      "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+
      "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+
      "dev": true,
+
      "engines": {
+
        "node": ">=18.18.0"
+
      }
+
    },
+
    "node_modules/@humanfs/node": {
+
      "version": "0.16.6",
+
      "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+
      "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+
      "dev": true,
+
      "dependencies": {
+
        "@humanfs/core": "^0.19.1",
+
        "@humanwhocodes/retry": "^0.3.0"
+
      },
+
      "engines": {
+
        "node": ">=18.18.0"
+
      }
+
    },
+
    "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+
      "version": "0.3.1",
+
      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+
      "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+
      "dev": true,
+
      "engines": {
+
        "node": ">=18.18"
+
      },
+
      "funding": {
+
        "type": "github",
+
        "url": "https://github.com/sponsors/nzakas"
+
      }
+
    },
    "node_modules/@humanwhocodes/module-importer": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -634,9 +688,9 @@
      }
    },
    "node_modules/@humanwhocodes/retry": {
-
      "version": "0.3.0",
-
      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz",
-
      "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==",
+
      "version": "0.4.1",
+
      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
+
      "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
      "dev": true,
      "engines": {
        "node": ">=18.18"
@@ -647,9 +701,9 @@
      }
    },
    "node_modules/@jridgewell/gen-mapping": {
-
      "version": "0.3.5",
-
      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
-
      "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
+
      "version": "0.3.8",
+
      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+
      "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
      "dependencies": {
        "@jridgewell/set-array": "^1.2.1",
        "@jridgewell/sourcemap-codec": "^1.4.10",
@@ -725,12 +779,12 @@
      }
    },
    "node_modules/@playwright/test": {
-
      "version": "1.47.2",
-
      "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.47.2.tgz",
-
      "integrity": "sha512-jTXRsoSPONAs8Za9QEQdyjFn+0ZQFjCiIztAIF6bi1HqhBzG9Ma7g1WotyiGqFSBRZjIEqMdT8RUlbk1QVhzCQ==",
+
      "version": "1.50.1",
+
      "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.50.1.tgz",
+
      "integrity": "sha512-Jii3aBg+CEDpgnuDxEp/h7BimHcUTDlpEtce89xEumlJ5ef2hqepZ+PWp1DDpYC/VO9fmWVI1IlEaoI5fK9FXQ==",
      "dev": true,
      "dependencies": {
-
        "playwright": "1.47.2"
+
        "playwright": "1.50.1"
      },
      "bin": {
        "playwright": "cli.js"
@@ -754,9 +808,9 @@
      }
    },
    "node_modules/@rollup/rollup-android-arm-eabi": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz",
-
      "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.32.1.tgz",
+
      "integrity": "sha512-/pqA4DmqyCm8u5YIDzIdlLcEmuvxb0v8fZdFhVMszSpDTgbQKdw3/mB3eMUHIbubtJ6F9j+LtmyCnHTEqIHyzA==",
      "cpu": [
        "arm"
      ],
@@ -767,9 +821,9 @@
      ]
    },
    "node_modules/@rollup/rollup-android-arm64": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz",
-
      "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.32.1.tgz",
+
      "integrity": "sha512-If3PDskT77q7zgqVqYuj7WG3WC08G1kwXGVFi9Jr8nY6eHucREHkfpX79c0ACAjLj3QIWKPJR7w4i+f5EdLH5Q==",
      "cpu": [
        "arm64"
      ],
@@ -780,9 +834,9 @@
      ]
    },
    "node_modules/@rollup/rollup-darwin-arm64": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz",
-
      "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.32.1.tgz",
+
      "integrity": "sha512-zCpKHioQ9KgZToFp5Wvz6zaWbMzYQ2LJHQ+QixDKq52KKrF65ueu6Af4hLlLWHjX1Wf/0G5kSJM9PySW9IrvHA==",
      "cpu": [
        "arm64"
      ],
@@ -793,9 +847,9 @@
      ]
    },
    "node_modules/@rollup/rollup-darwin-x64": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz",
-
      "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.32.1.tgz",
+
      "integrity": "sha512-sFvF+t2+TyUo/ZQqUcifrJIgznx58oFZbdHS9TvHq3xhPVL9nOp+yZ6LKrO9GWTP+6DbFtoyLDbjTpR62Mbr3Q==",
      "cpu": [
        "x64"
      ],
@@ -805,10 +859,36 @@
        "darwin"
      ]
    },
+
    "node_modules/@rollup/rollup-freebsd-arm64": {
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.32.1.tgz",
+
      "integrity": "sha512-NbOa+7InvMWRcY9RG+B6kKIMD/FsnQPH0MWUvDlQB1iXnF/UcKSudCXZtv4lW+C276g3w5AxPbfry5rSYvyeYA==",
+
      "cpu": [
+
        "arm64"
+
      ],
+
      "dev": true,
+
      "optional": true,
+
      "os": [
+
        "freebsd"
+
      ]
+
    },
+
    "node_modules/@rollup/rollup-freebsd-x64": {
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.32.1.tgz",
+
      "integrity": "sha512-JRBRmwvHPXR881j2xjry8HZ86wIPK2CcDw0EXchE1UgU0ubWp9nvlT7cZYKc6bkypBt745b4bglf3+xJ7hXWWw==",
+
      "cpu": [
+
        "x64"
+
      ],
+
      "dev": true,
+
      "optional": true,
+
      "os": [
+
        "freebsd"
+
      ]
+
    },
    "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz",
-
      "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.32.1.tgz",
+
      "integrity": "sha512-PKvszb+9o/vVdUzCCjL0sKHukEQV39tD3fepXxYrHE3sTKrRdCydI7uldRLbjLmDA3TFDmh418XH19NOsDRH8g==",
      "cpu": [
        "arm"
      ],
@@ -819,9 +899,9 @@
      ]
    },
    "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz",
-
      "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.32.1.tgz",
+
      "integrity": "sha512-9WHEMV6Y89eL606ReYowXuGF1Yb2vwfKWKdD1A5h+OYnPZSJvxbEjxTRKPgi7tkP2DSnW0YLab1ooy+i/FQp/Q==",
      "cpu": [
        "arm"
      ],
@@ -832,9 +912,9 @@
      ]
    },
    "node_modules/@rollup/rollup-linux-arm64-gnu": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz",
-
      "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.32.1.tgz",
+
      "integrity": "sha512-tZWc9iEt5fGJ1CL2LRPw8OttkCBDs+D8D3oEM8mH8S1ICZCtFJhD7DZ3XMGM8kpqHvhGUTvNUYVDnmkj4BDXnw==",
      "cpu": [
        "arm64"
      ],
@@ -845,9 +925,9 @@
      ]
    },
    "node_modules/@rollup/rollup-linux-arm64-musl": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz",
-
      "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.32.1.tgz",
+
      "integrity": "sha512-FTYc2YoTWUsBz5GTTgGkRYYJ5NGJIi/rCY4oK/I8aKowx1ToXeoVVbIE4LGAjsauvlhjfl0MYacxClLld1VrOw==",
      "cpu": [
        "arm64"
      ],
@@ -857,10 +937,23 @@
        "linux"
      ]
    },
+
    "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.32.1.tgz",
+
      "integrity": "sha512-F51qLdOtpS6P1zJVRzYM0v6MrBNypyPEN1GfMiz0gPu9jN8ScGaEFIZQwteSsGKg799oR5EaP7+B2jHgL+d+Kw==",
+
      "cpu": [
+
        "loong64"
+
      ],
+
      "dev": true,
+
      "optional": true,
+
      "os": [
+
        "linux"
+
      ]
+
    },
    "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz",
-
      "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.32.1.tgz",
+
      "integrity": "sha512-wO0WkfSppfX4YFm5KhdCCpnpGbtgQNj/tgvYzrVYFKDpven8w2N6Gg5nB6w+wAMO3AIfSTWeTjfVe+uZ23zAlg==",
      "cpu": [
        "ppc64"
      ],
@@ -871,9 +964,9 @@
      ]
    },
    "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz",
-
      "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.32.1.tgz",
+
      "integrity": "sha512-iWswS9cIXfJO1MFYtI/4jjlrGb/V58oMu4dYJIKnR5UIwbkzR0PJ09O0PDZT0oJ3LYWXBSWahNf/Mjo6i1E5/g==",
      "cpu": [
        "riscv64"
      ],
@@ -884,9 +977,9 @@
      ]
    },
    "node_modules/@rollup/rollup-linux-s390x-gnu": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz",
-
      "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.32.1.tgz",
+
      "integrity": "sha512-RKt8NI9tebzmEthMnfVgG3i/XeECkMPS+ibVZjZ6mNekpbbUmkNWuIN2yHsb/mBPyZke4nlI4YqIdFPgKuoyQQ==",
      "cpu": [
        "s390x"
      ],
@@ -897,9 +990,9 @@
      ]
    },
    "node_modules/@rollup/rollup-linux-x64-gnu": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz",
-
      "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.32.1.tgz",
+
      "integrity": "sha512-WQFLZ9c42ECqEjwg/GHHsouij3pzLXkFdz0UxHa/0OM12LzvX7DzedlY0SIEly2v18YZLRhCRoHZDxbBSWoGYg==",
      "cpu": [
        "x64"
      ],
@@ -910,9 +1003,9 @@
      ]
    },
    "node_modules/@rollup/rollup-linux-x64-musl": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz",
-
      "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.32.1.tgz",
+
      "integrity": "sha512-BLoiyHDOWoS3uccNSADMza6V6vCNiphi94tQlVIL5de+r6r/CCQuNnerf+1g2mnk2b6edp5dk0nhdZ7aEjOBsA==",
      "cpu": [
        "x64"
      ],
@@ -923,9 +1016,9 @@
      ]
    },
    "node_modules/@rollup/rollup-win32-arm64-msvc": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz",
-
      "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.32.1.tgz",
+
      "integrity": "sha512-w2l3UnlgYTNNU+Z6wOR8YdaioqfEnwPjIsJ66KxKAf0p+AuL2FHeTX6qvM+p/Ue3XPBVNyVSfCrfZiQh7vZHLQ==",
      "cpu": [
        "arm64"
      ],
@@ -936,9 +1029,9 @@
      ]
    },
    "node_modules/@rollup/rollup-win32-ia32-msvc": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz",
-
      "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.32.1.tgz",
+
      "integrity": "sha512-Am9H+TGLomPGkBnaPWie4F3x+yQ2rr4Bk2jpwy+iV+Gel9jLAu/KqT8k3X4jxFPW6Zf8OMnehyutsd+eHoq1WQ==",
      "cpu": [
        "ia32"
      ],
@@ -949,9 +1042,9 @@
      ]
    },
    "node_modules/@rollup/rollup-win32-x64-msvc": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz",
-
      "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.32.1.tgz",
+
      "integrity": "sha512-ar80GhdZb4DgmW3myIS9nRFYcpJRSME8iqWgzH2i44u+IdrzmiXVxeFnExQ5v4JYUSpg94bWjevMG8JHf1Da5Q==",
      "cpu": [
        "x64"
      ],
@@ -1001,41 +1094,40 @@
      }
    },
    "node_modules/@sveltejs/vite-plugin-svelte": {
-
      "version": "3.1.2",
-
      "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz",
-
      "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==",
+
      "version": "4.0.4",
+
      "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.4.tgz",
+
      "integrity": "sha512-0ba1RQ/PHen5FGpdSrW7Y3fAMQjrXantECALeOiOdBdzR5+5vPP6HVZRLmZaQL+W8m++o+haIAKq5qT+MiZ7VA==",
      "dev": true,
      "dependencies": {
-
        "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0",
-
        "debug": "^4.3.4",
+
        "@sveltejs/vite-plugin-svelte-inspector": "^3.0.0-next.0||^3.0.0",
+
        "debug": "^4.3.7",
        "deepmerge": "^4.3.1",
        "kleur": "^4.1.5",
-
        "magic-string": "^0.30.10",
-
        "svelte-hmr": "^0.16.0",
-
        "vitefu": "^0.2.5"
+
        "magic-string": "^0.30.12",
+
        "vitefu": "^1.0.3"
      },
      "engines": {
-
        "node": "^18.0.0 || >=20"
+
        "node": "^18.0.0 || ^20.0.0 || >=22"
      },
      "peerDependencies": {
-
        "svelte": "^4.0.0 || ^5.0.0-next.0",
+
        "svelte": "^5.0.0-next.96 || ^5.0.0",
        "vite": "^5.0.0"
      }
    },
    "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
-
      "version": "2.1.0",
-
      "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz",
-
      "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==",
+
      "version": "3.0.1",
+
      "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-3.0.1.tgz",
+
      "integrity": "sha512-2CKypmj1sM4GE7HjllT7UKmo4Q6L5xFRd7VMGEWhYnZ+wc6AUVU01IBd7yUi6WnFndEwWoMNOd6e8UjoN0nbvQ==",
      "dev": true,
      "dependencies": {
-
        "debug": "^4.3.4"
+
        "debug": "^4.3.7"
      },
      "engines": {
-
        "node": "^18.0.0 || >=20"
+
        "node": "^18.0.0 || ^20.0.0 || >=22"
      },
      "peerDependencies": {
-
        "@sveltejs/vite-plugin-svelte": "^3.0.0",
-
        "svelte": "^4.0.0 || ^5.0.0-next.0",
+
        "@sveltejs/vite-plugin-svelte": "^4.0.0-next.0||^4.0.0",
+
        "svelte": "^5.0.0-next.96 || ^5.0.0",
        "vite": "^5.0.0"
      }
    },
@@ -1052,12 +1144,13 @@
      "dev": true
    },
    "node_modules/@types/dompurify": {
-
      "version": "3.0.5",
-
      "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz",
-
      "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==",
+
      "version": "3.2.0",
+
      "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.2.0.tgz",
+
      "integrity": "sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg==",
+
      "deprecated": "This is a stub types definition. dompurify provides its own type definitions, so you do not need this installed.",
      "dev": true,
      "dependencies": {
-
        "@types/trusted-types": "*"
+
        "dompurify": "*"
      }
    },
    "node_modules/@types/estree": {
@@ -1082,7 +1175,8 @@
    "node_modules/@types/katex": {
      "version": "0.16.7",
      "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz",
-
      "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ=="
+
      "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==",
+
      "dev": true
    },
    "node_modules/@types/linkify-it": {
      "version": "5.0.0",
@@ -1090,9 +1184,9 @@
      "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q=="
    },
    "node_modules/@types/lodash": {
-
      "version": "4.17.9",
-
      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.9.tgz",
-
      "integrity": "sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==",
+
      "version": "4.17.15",
+
      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz",
+
      "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==",
      "dev": true
    },
    "node_modules/@types/md5": {
@@ -1110,9 +1204,9 @@
      }
    },
    "node_modules/@types/node": {
-
      "version": "20.16.6",
-
      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.6.tgz",
-
      "integrity": "sha512-T7PpxM/6yeDE+AdlVysT62BX6/bECZOmQAgiFg5NoBd5MQheZ3tzal7f1wvzfiEcmrcJNRi2zRr2nY2zF+0uqw==",
+
      "version": "20.17.16",
+
      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.16.tgz",
+
      "integrity": "sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==",
      "dev": true,
      "dependencies": {
        "undici-types": "~6.19.2"
@@ -1122,7 +1216,7 @@
      "version": "2.0.7",
      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
      "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
-
      "dev": true
+
      "optional": true
    },
    "node_modules/@types/unist": {
      "version": "3.0.3",
@@ -1139,20 +1233,20 @@
      }
    },
    "node_modules/@typescript-eslint/eslint-plugin": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.7.0.tgz",
-
      "integrity": "sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.22.0.tgz",
+
      "integrity": "sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw==",
      "dev": true,
      "dependencies": {
        "@eslint-community/regexpp": "^4.10.0",
-
        "@typescript-eslint/scope-manager": "8.7.0",
-
        "@typescript-eslint/type-utils": "8.7.0",
-
        "@typescript-eslint/utils": "8.7.0",
-
        "@typescript-eslint/visitor-keys": "8.7.0",
+
        "@typescript-eslint/scope-manager": "8.22.0",
+
        "@typescript-eslint/type-utils": "8.22.0",
+
        "@typescript-eslint/utils": "8.22.0",
+
        "@typescript-eslint/visitor-keys": "8.22.0",
        "graphemer": "^1.4.0",
        "ignore": "^5.3.1",
        "natural-compare": "^1.4.0",
-
        "ts-api-utils": "^1.3.0"
+
        "ts-api-utils": "^2.0.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1163,24 +1257,20 @@
      },
      "peerDependencies": {
        "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
-
        "eslint": "^8.57.0 || ^9.0.0"
-
      },
-
      "peerDependenciesMeta": {
-
        "typescript": {
-
          "optional": true
-
        }
+
        "eslint": "^8.57.0 || ^9.0.0",
+
        "typescript": ">=4.8.4 <5.8.0"
      }
    },
    "node_modules/@typescript-eslint/parser": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.7.0.tgz",
-
      "integrity": "sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.22.0.tgz",
+
      "integrity": "sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/scope-manager": "8.7.0",
-
        "@typescript-eslint/types": "8.7.0",
-
        "@typescript-eslint/typescript-estree": "8.7.0",
-
        "@typescript-eslint/visitor-keys": "8.7.0",
+
        "@typescript-eslint/scope-manager": "8.22.0",
+
        "@typescript-eslint/types": "8.22.0",
+
        "@typescript-eslint/typescript-estree": "8.22.0",
+
        "@typescript-eslint/visitor-keys": "8.22.0",
        "debug": "^4.3.4"
      },
      "engines": {
@@ -1191,22 +1281,18 @@
        "url": "https://opencollective.com/typescript-eslint"
      },
      "peerDependencies": {
-
        "eslint": "^8.57.0 || ^9.0.0"
-
      },
-
      "peerDependenciesMeta": {
-
        "typescript": {
-
          "optional": true
-
        }
+
        "eslint": "^8.57.0 || ^9.0.0",
+
        "typescript": ">=4.8.4 <5.8.0"
      }
    },
    "node_modules/@typescript-eslint/scope-manager": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz",
-
      "integrity": "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.22.0.tgz",
+
      "integrity": "sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/types": "8.7.0",
-
        "@typescript-eslint/visitor-keys": "8.7.0"
+
        "@typescript-eslint/types": "8.22.0",
+
        "@typescript-eslint/visitor-keys": "8.22.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1217,15 +1303,15 @@
      }
    },
    "node_modules/@typescript-eslint/type-utils": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.7.0.tgz",
-
      "integrity": "sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.22.0.tgz",
+
      "integrity": "sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/typescript-estree": "8.7.0",
-
        "@typescript-eslint/utils": "8.7.0",
+
        "@typescript-eslint/typescript-estree": "8.22.0",
+
        "@typescript-eslint/utils": "8.22.0",
        "debug": "^4.3.4",
-
        "ts-api-utils": "^1.3.0"
+
        "ts-api-utils": "^2.0.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1234,16 +1320,15 @@
        "type": "opencollective",
        "url": "https://opencollective.com/typescript-eslint"
      },
-
      "peerDependenciesMeta": {
-
        "typescript": {
-
          "optional": true
-
        }
+
      "peerDependencies": {
+
        "eslint": "^8.57.0 || ^9.0.0",
+
        "typescript": ">=4.8.4 <5.8.0"
      }
    },
    "node_modules/@typescript-eslint/types": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz",
-
      "integrity": "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.22.0.tgz",
+
      "integrity": "sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==",
      "dev": true,
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1254,19 +1339,19 @@
      }
    },
    "node_modules/@typescript-eslint/typescript-estree": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz",
-
      "integrity": "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.22.0.tgz",
+
      "integrity": "sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/types": "8.7.0",
-
        "@typescript-eslint/visitor-keys": "8.7.0",
+
        "@typescript-eslint/types": "8.22.0",
+
        "@typescript-eslint/visitor-keys": "8.22.0",
        "debug": "^4.3.4",
        "fast-glob": "^3.3.2",
        "is-glob": "^4.0.3",
        "minimatch": "^9.0.4",
        "semver": "^7.6.0",
-
        "ts-api-utils": "^1.3.0"
+
        "ts-api-utils": "^2.0.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1275,22 +1360,20 @@
        "type": "opencollective",
        "url": "https://opencollective.com/typescript-eslint"
      },
-
      "peerDependenciesMeta": {
-
        "typescript": {
-
          "optional": true
-
        }
+
      "peerDependencies": {
+
        "typescript": ">=4.8.4 <5.8.0"
      }
    },
    "node_modules/@typescript-eslint/utils": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz",
-
      "integrity": "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.22.0.tgz",
+
      "integrity": "sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==",
      "dev": true,
      "dependencies": {
        "@eslint-community/eslint-utils": "^4.4.0",
-
        "@typescript-eslint/scope-manager": "8.7.0",
-
        "@typescript-eslint/types": "8.7.0",
-
        "@typescript-eslint/typescript-estree": "8.7.0"
+
        "@typescript-eslint/scope-manager": "8.22.0",
+
        "@typescript-eslint/types": "8.22.0",
+
        "@typescript-eslint/typescript-estree": "8.22.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1300,17 +1383,18 @@
        "url": "https://opencollective.com/typescript-eslint"
      },
      "peerDependencies": {
-
        "eslint": "^8.57.0 || ^9.0.0"
+
        "eslint": "^8.57.0 || ^9.0.0",
+
        "typescript": ">=4.8.4 <5.8.0"
      }
    },
    "node_modules/@typescript-eslint/visitor-keys": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz",
-
      "integrity": "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz",
+
      "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/types": "8.7.0",
-
        "eslint-visitor-keys": "^3.4.3"
+
        "@typescript-eslint/types": "8.22.0",
+
        "eslint-visitor-keys": "^4.2.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1321,19 +1405,19 @@
      }
    },
    "node_modules/@ungap/structured-clone": {
-
      "version": "1.2.0",
-
      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
-
      "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
+
      "version": "1.3.0",
+
      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+
      "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="
    },
    "node_modules/@vitest/expect": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.1.tgz",
-
      "integrity": "sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.8.tgz",
+
      "integrity": "sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==",
      "dev": true,
      "dependencies": {
-
        "@vitest/spy": "2.1.1",
-
        "@vitest/utils": "2.1.1",
-
        "chai": "^5.1.1",
+
        "@vitest/spy": "2.1.8",
+
        "@vitest/utils": "2.1.8",
+
        "chai": "^5.1.2",
        "tinyrainbow": "^1.2.0"
      },
      "funding": {
@@ -1341,21 +1425,20 @@
      }
    },
    "node_modules/@vitest/mocker": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.1.tgz",
-
      "integrity": "sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.8.tgz",
+
      "integrity": "sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==",
      "dev": true,
      "dependencies": {
-
        "@vitest/spy": "^2.1.0-beta.1",
+
        "@vitest/spy": "2.1.8",
        "estree-walker": "^3.0.3",
-
        "magic-string": "^0.30.11"
+
        "magic-string": "^0.30.12"
      },
      "funding": {
        "url": "https://opencollective.com/vitest"
      },
      "peerDependencies": {
-
        "@vitest/spy": "2.1.1",
-
        "msw": "^2.3.5",
+
        "msw": "^2.4.9",
        "vite": "^5.0.0"
      },
      "peerDependenciesMeta": {
@@ -1368,9 +1451,9 @@
      }
    },
    "node_modules/@vitest/pretty-format": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.1.tgz",
-
      "integrity": "sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz",
+
      "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==",
      "dev": true,
      "dependencies": {
        "tinyrainbow": "^1.2.0"
@@ -1380,12 +1463,12 @@
      }
    },
    "node_modules/@vitest/runner": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.1.tgz",
-
      "integrity": "sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.8.tgz",
+
      "integrity": "sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==",
      "dev": true,
      "dependencies": {
-
        "@vitest/utils": "2.1.1",
+
        "@vitest/utils": "2.1.8",
        "pathe": "^1.1.2"
      },
      "funding": {
@@ -1393,13 +1476,13 @@
      }
    },
    "node_modules/@vitest/snapshot": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.1.tgz",
-
      "integrity": "sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.8.tgz",
+
      "integrity": "sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==",
      "dev": true,
      "dependencies": {
-
        "@vitest/pretty-format": "2.1.1",
-
        "magic-string": "^0.30.11",
+
        "@vitest/pretty-format": "2.1.8",
+
        "magic-string": "^0.30.12",
        "pathe": "^1.1.2"
      },
      "funding": {
@@ -1407,25 +1490,25 @@
      }
    },
    "node_modules/@vitest/spy": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.1.tgz",
-
      "integrity": "sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.8.tgz",
+
      "integrity": "sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==",
      "dev": true,
      "dependencies": {
-
        "tinyspy": "^3.0.0"
+
        "tinyspy": "^3.0.2"
      },
      "funding": {
        "url": "https://opencollective.com/vitest"
      }
    },
    "node_modules/@vitest/utils": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.1.tgz",
-
      "integrity": "sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz",
+
      "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==",
      "dev": true,
      "dependencies": {
-
        "@vitest/pretty-format": "2.1.1",
-
        "loupe": "^3.1.1",
+
        "@vitest/pretty-format": "2.1.8",
+
        "loupe": "^3.1.2",
        "tinyrainbow": "^1.2.0"
      },
      "funding": {
@@ -1433,9 +1516,9 @@
      }
    },
    "node_modules/@wooorm/starry-night": {
-
      "version": "3.5.0",
-
      "resolved": "https://registry.npmjs.org/@wooorm/starry-night/-/starry-night-3.5.0.tgz",
-
      "integrity": "sha512-nYnfdeWS0ApqIFqr4ezLjr6pyYuqiG5Ywc2aJ4u1EY3qzf2oCTfLv7sMjEQSuSzPWUIH+a39eVbGUiRrFKZElA==",
+
      "version": "3.6.0",
+
      "resolved": "https://registry.npmjs.org/@wooorm/starry-night/-/starry-night-3.6.0.tgz",
+
      "integrity": "sha512-AoDrqWZCZVymY48BClDaSuLgOe5vnl99S4hrqqg5OJ44x9NHo4s5LzOypKC3e6jGIUqHDfaDMvou8pelkq3dCw==",
      "dependencies": {
        "@types/hast": "^3.0.0",
        "import-meta-resolve": "^4.0.0",
@@ -1448,9 +1531,9 @@
      }
    },
    "node_modules/acorn": {
-
      "version": "8.12.1",
-
      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-
      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+
      "version": "8.14.0",
+
      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+
      "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
      "bin": {
        "acorn": "bin/acorn"
      },
@@ -1467,6 +1550,14 @@
        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
      }
    },
+
    "node_modules/acorn-typescript": {
+
      "version": "1.4.13",
+
      "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz",
+
      "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==",
+
      "peerDependencies": {
+
        "acorn": ">=8.9.0"
+
      }
+
    },
    "node_modules/ajv": {
      "version": "6.12.6",
      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -1483,15 +1574,6 @@
        "url": "https://github.com/sponsors/epoberezkin"
      }
    },
-
    "node_modules/ansi-regex": {
-
      "version": "5.0.1",
-
      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-
      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-
      "dev": true,
-
      "engines": {
-
        "node": ">=8"
-
      }
-
    },
    "node_modules/ansi-styles": {
      "version": "4.3.0",
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -1507,19 +1589,6 @@
        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
      }
    },
-
    "node_modules/anymatch": {
-
      "version": "3.1.3",
-
      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
-
      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
-
      "dev": true,
-
      "dependencies": {
-
        "normalize-path": "^3.0.0",
-
        "picomatch": "^2.0.4"
-
      },
-
      "engines": {
-
        "node": ">= 8"
-
      }
-
    },
    "node_modules/argparse": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -1557,9 +1626,9 @@
      "dev": true
    },
    "node_modules/axios": {
-
      "version": "1.7.7",
-
      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
-
      "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+
      "version": "1.7.9",
+
      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
+
      "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
      "dev": true,
      "dependencies": {
        "follow-redirects": "^1.15.6",
@@ -1610,18 +1679,6 @@
        }
      ]
    },
-
    "node_modules/binary-extensions": {
-
      "version": "2.3.0",
-
      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
-
      "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
-
      "dev": true,
-
      "engines": {
-
        "node": ">=8"
-
      },
-
      "funding": {
-
        "url": "https://github.com/sponsors/sindresorhus"
-
      }
-
    },
    "node_modules/brace-expansion": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
@@ -1702,9 +1759,9 @@
      }
    },
    "node_modules/chai": {
-
      "version": "5.1.1",
-
      "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz",
-
      "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==",
+
      "version": "5.1.2",
+
      "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz",
+
      "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==",
      "dev": true,
      "dependencies": {
        "assertion-error": "^2.0.1",
@@ -1718,9 +1775,9 @@
      }
    },
    "node_modules/chalk": {
-
      "version": "5.3.0",
-
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
-
      "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+
      "version": "5.4.1",
+
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
+
      "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
      "dev": true,
      "engines": {
        "node": "^12.17.0 || ^14.13 || >=16.0.0"
@@ -1765,51 +1822,26 @@
      }
    },
    "node_modules/chokidar": {
-
      "version": "3.6.0",
-
      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
-
      "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+
      "version": "4.0.3",
+
      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+
      "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
      "dev": true,
      "dependencies": {
-
        "anymatch": "~3.1.2",
-
        "braces": "~3.0.2",
-
        "glob-parent": "~5.1.2",
-
        "is-binary-path": "~2.1.0",
-
        "is-glob": "~4.0.1",
-
        "normalize-path": "~3.0.0",
-
        "readdirp": "~3.6.0"
+
        "readdirp": "^4.0.1"
      },
      "engines": {
-
        "node": ">= 8.10.0"
+
        "node": ">= 14.16.0"
      },
      "funding": {
        "url": "https://paulmillr.com/funding/"
-
      },
-
      "optionalDependencies": {
-
        "fsevents": "~2.3.2"
      }
    },
-
    "node_modules/chokidar/node_modules/glob-parent": {
-
      "version": "5.1.2",
-
      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-
      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-
      "dev": true,
-
      "dependencies": {
-
        "is-glob": "^4.0.1"
-
      },
+
    "node_modules/clsx": {
+
      "version": "2.1.1",
+
      "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+
      "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
      "engines": {
-
        "node": ">= 6"
-
      }
-
    },
-
    "node_modules/code-red": {
-
      "version": "1.0.4",
-
      "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
-
      "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
-
      "dependencies": {
-
        "@jridgewell/sourcemap-codec": "^1.4.15",
-
        "@types/estree": "^1.0.1",
-
        "acorn": "^8.10.0",
-
        "estree-walker": "^3.0.3",
-
        "periscopic": "^3.1.0"
+
        "node": ">=6"
      }
    },
    "node_modules/color-convert": {
@@ -1884,9 +1916,9 @@
      }
    },
    "node_modules/cross-spawn": {
-
      "version": "7.0.3",
-
      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-
      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+
      "version": "7.0.6",
+
      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+
      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
      "dev": true,
      "dependencies": {
        "path-key": "^3.1.0",
@@ -1905,18 +1937,6 @@
        "node": "*"
      }
    },
-
    "node_modules/css-tree": {
-
      "version": "2.3.1",
-
      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
-
      "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
-
      "dependencies": {
-
        "mdn-data": "2.0.30",
-
        "source-map-js": "^1.0.1"
-
      },
-
      "engines": {
-
        "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
-
      }
-
    },
    "node_modules/cssesc": {
      "version": "3.0.0",
      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@@ -1930,9 +1950,9 @@
      }
    },
    "node_modules/debug": {
-
      "version": "4.3.7",
-
      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
-
      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+
      "version": "4.4.0",
+
      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+
      "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
      "dev": true,
      "dependencies": {
        "ms": "^2.1.3"
@@ -2000,9 +2020,12 @@
      }
    },
    "node_modules/dompurify": {
-
      "version": "3.1.6",
-
      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
-
      "integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ=="
+
      "version": "3.2.4",
+
      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz",
+
      "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==",
+
      "optionalDependencies": {
+
        "@types/trusted-types": "^2.0.7"
+
      }
    },
    "node_modules/entities": {
      "version": "4.5.0",
@@ -2016,6 +2039,12 @@
        "url": "https://github.com/fb55/entities?sponsor=1"
      }
    },
+
    "node_modules/es-module-lexer": {
+
      "version": "1.6.0",
+
      "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
+
      "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
+
      "dev": true
+
    },
    "node_modules/esbuild": {
      "version": "0.21.5",
      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
@@ -2067,31 +2096,31 @@
      }
    },
    "node_modules/eslint": {
-
      "version": "9.11.1",
-
      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.11.1.tgz",
-
      "integrity": "sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==",
+
      "version": "9.19.0",
+
      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz",
+
      "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==",
      "dev": true,
      "dependencies": {
        "@eslint-community/eslint-utils": "^4.2.0",
-
        "@eslint-community/regexpp": "^4.11.0",
-
        "@eslint/config-array": "^0.18.0",
-
        "@eslint/core": "^0.6.0",
-
        "@eslint/eslintrc": "^3.1.0",
-
        "@eslint/js": "9.11.1",
-
        "@eslint/plugin-kit": "^0.2.0",
+
        "@eslint-community/regexpp": "^4.12.1",
+
        "@eslint/config-array": "^0.19.0",
+
        "@eslint/core": "^0.10.0",
+
        "@eslint/eslintrc": "^3.2.0",
+
        "@eslint/js": "9.19.0",
+
        "@eslint/plugin-kit": "^0.2.5",
+
        "@humanfs/node": "^0.16.6",
        "@humanwhocodes/module-importer": "^1.0.1",
-
        "@humanwhocodes/retry": "^0.3.0",
-
        "@nodelib/fs.walk": "^1.2.8",
+
        "@humanwhocodes/retry": "^0.4.1",
        "@types/estree": "^1.0.6",
        "@types/json-schema": "^7.0.15",
        "ajv": "^6.12.4",
        "chalk": "^4.0.0",
-
        "cross-spawn": "^7.0.2",
+
        "cross-spawn": "^7.0.6",
        "debug": "^4.3.2",
        "escape-string-regexp": "^4.0.0",
-
        "eslint-scope": "^8.0.2",
-
        "eslint-visitor-keys": "^4.0.0",
-
        "espree": "^10.1.0",
+
        "eslint-scope": "^8.2.0",
+
        "eslint-visitor-keys": "^4.2.0",
+
        "espree": "^10.3.0",
        "esquery": "^1.5.0",
        "esutils": "^2.0.2",
        "fast-deep-equal": "^3.1.3",
@@ -2101,14 +2130,11 @@
        "ignore": "^5.2.0",
        "imurmurhash": "^0.1.4",
        "is-glob": "^4.0.0",
-
        "is-path-inside": "^3.0.3",
        "json-stable-stringify-without-jsonify": "^1.0.1",
        "lodash.merge": "^4.6.2",
        "minimatch": "^3.1.2",
        "natural-compare": "^1.4.0",
-
        "optionator": "^0.9.3",
-
        "strip-ansi": "^6.0.1",
-
        "text-table": "^0.2.0"
+
        "optionator": "^0.9.3"
      },
      "bin": {
        "eslint": "bin/eslint.js"
@@ -2156,22 +2182,22 @@
      }
    },
    "node_modules/eslint-plugin-svelte": {
-
      "version": "2.44.0",
-
      "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.44.0.tgz",
-
      "integrity": "sha512-wav4MOs02vBb1WjvTCYItwJCxMkuk2Z4p+K/eyjL0N/z7ahXLP+0LtQQjiKc2ezuif7GnZLbD1F3o1VHzSvdVg==",
+
      "version": "2.46.1",
+
      "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.46.1.tgz",
+
      "integrity": "sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==",
      "dev": true,
      "dependencies": {
        "@eslint-community/eslint-utils": "^4.4.0",
        "@jridgewell/sourcemap-codec": "^1.4.15",
        "eslint-compat-utils": "^0.5.1",
        "esutils": "^2.0.3",
-
        "known-css-properties": "^0.34.0",
+
        "known-css-properties": "^0.35.0",
        "postcss": "^8.4.38",
        "postcss-load-config": "^3.1.4",
        "postcss-safe-parser": "^6.0.0",
        "postcss-selector-parser": "^6.1.0",
        "semver": "^7.6.2",
-
        "svelte-eslint-parser": "^0.41.1"
+
        "svelte-eslint-parser": "^0.43.0"
      },
      "engines": {
        "node": "^14.17.0 || >=16.0.0"
@@ -2181,7 +2207,7 @@
      },
      "peerDependencies": {
        "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0",
-
        "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0-next.191"
+
        "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0"
      },
      "peerDependenciesMeta": {
        "svelte": {
@@ -2189,23 +2215,23 @@
        }
      }
    },
-
    "node_modules/eslint-scope": {
-
      "version": "8.0.2",
-
      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz",
-
      "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==",
+
    "node_modules/eslint-plugin-svelte/node_modules/eslint-scope": {
+
      "version": "7.2.2",
+
      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+
      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
      "dev": true,
      "dependencies": {
        "esrecurse": "^4.3.0",
        "estraverse": "^5.2.0"
      },
      "engines": {
-
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
      },
      "funding": {
        "url": "https://opencollective.com/eslint"
      }
    },
-
    "node_modules/eslint-visitor-keys": {
+
    "node_modules/eslint-plugin-svelte/node_modules/eslint-visitor-keys": {
      "version": "3.4.3",
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
@@ -2217,6 +2243,78 @@
        "url": "https://opencollective.com/eslint"
      }
    },
+
    "node_modules/eslint-plugin-svelte/node_modules/espree": {
+
      "version": "9.6.1",
+
      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+
      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+
      "dev": true,
+
      "dependencies": {
+
        "acorn": "^8.9.0",
+
        "acorn-jsx": "^5.3.2",
+
        "eslint-visitor-keys": "^3.4.1"
+
      },
+
      "engines": {
+
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+
      },
+
      "funding": {
+
        "url": "https://opencollective.com/eslint"
+
      }
+
    },
+
    "node_modules/eslint-plugin-svelte/node_modules/svelte-eslint-parser": {
+
      "version": "0.43.0",
+
      "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.43.0.tgz",
+
      "integrity": "sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==",
+
      "dev": true,
+
      "dependencies": {
+
        "eslint-scope": "^7.2.2",
+
        "eslint-visitor-keys": "^3.4.3",
+
        "espree": "^9.6.1",
+
        "postcss": "^8.4.39",
+
        "postcss-scss": "^4.0.9"
+
      },
+
      "engines": {
+
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+
      },
+
      "funding": {
+
        "url": "https://github.com/sponsors/ota-meshi"
+
      },
+
      "peerDependencies": {
+
        "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0"
+
      },
+
      "peerDependenciesMeta": {
+
        "svelte": {
+
          "optional": true
+
        }
+
      }
+
    },
+
    "node_modules/eslint-scope": {
+
      "version": "8.2.0",
+
      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz",
+
      "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
+
      "dev": true,
+
      "dependencies": {
+
        "esrecurse": "^4.3.0",
+
        "estraverse": "^5.2.0"
+
      },
+
      "engines": {
+
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+
      },
+
      "funding": {
+
        "url": "https://opencollective.com/eslint"
+
      }
+
    },
+
    "node_modules/eslint-visitor-keys": {
+
      "version": "4.2.0",
+
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+
      "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+
      "dev": true,
+
      "engines": {
+
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+
      },
+
      "funding": {
+
        "url": "https://opencollective.com/eslint"
+
      }
+
    },
    "node_modules/eslint/node_modules/brace-expansion": {
      "version": "1.1.11",
      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -2243,18 +2341,6 @@
        "url": "https://github.com/chalk/chalk?sponsor=1"
      }
    },
-
    "node_modules/eslint/node_modules/eslint-visitor-keys": {
-
      "version": "4.0.0",
-
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
-
      "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
-
      "dev": true,
-
      "engines": {
-
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-
      },
-
      "funding": {
-
        "url": "https://opencollective.com/eslint"
-
      }
-
    },
    "node_modules/eslint/node_modules/minimatch": {
      "version": "3.1.2",
      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -2267,15 +2353,20 @@
        "node": "*"
      }
    },
+
    "node_modules/esm-env": {
+
      "version": "1.2.2",
+
      "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz",
+
      "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="
+
    },
    "node_modules/espree": {
-
      "version": "10.1.0",
-
      "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
-
      "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
+
      "version": "10.3.0",
+
      "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+
      "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
      "dev": true,
      "dependencies": {
-
        "acorn": "^8.12.0",
+
        "acorn": "^8.14.0",
        "acorn-jsx": "^5.3.2",
-
        "eslint-visitor-keys": "^4.0.0"
+
        "eslint-visitor-keys": "^4.2.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -2284,18 +2375,6 @@
        "url": "https://opencollective.com/eslint"
      }
    },
-
    "node_modules/espree/node_modules/eslint-visitor-keys": {
-
      "version": "4.0.0",
-
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
-
      "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
-
      "dev": true,
-
      "engines": {
-
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-
      },
-
      "funding": {
-
        "url": "https://opencollective.com/eslint"
-
      }
-
    },
    "node_modules/esquery": {
      "version": "1.6.0",
      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
@@ -2308,6 +2387,14 @@
        "node": ">=0.10"
      }
    },
+
    "node_modules/esrap": {
+
      "version": "1.4.3",
+
      "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.3.tgz",
+
      "integrity": "sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw==",
+
      "dependencies": {
+
        "@jridgewell/sourcemap-codec": "^1.4.15"
+
      }
+
    },
    "node_modules/esrecurse": {
      "version": "4.3.0",
      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -2333,6 +2420,7 @@
      "version": "3.0.3",
      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
      "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+
      "dev": true,
      "dependencies": {
        "@types/estree": "^1.0.0"
      }
@@ -2347,9 +2435,9 @@
      }
    },
    "node_modules/execa": {
-
      "version": "9.4.0",
-
      "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz",
-
      "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==",
+
      "version": "9.5.2",
+
      "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz",
+
      "integrity": "sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==",
      "dev": true,
      "dependencies": {
        "@sindresorhus/merge-streams": "^4.0.0",
@@ -2372,6 +2460,15 @@
        "url": "https://github.com/sindresorhus/execa?sponsor=1"
      }
    },
+
    "node_modules/expect-type": {
+
      "version": "1.1.0",
+
      "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz",
+
      "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==",
+
      "dev": true,
+
      "engines": {
+
        "node": ">=12.0.0"
+
      }
+
    },
    "node_modules/extend-shallow": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
@@ -2390,16 +2487,16 @@
      "dev": true
    },
    "node_modules/fast-glob": {
-
      "version": "3.3.2",
-
      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
-
      "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+
      "version": "3.3.3",
+
      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+
      "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
      "dev": true,
      "dependencies": {
        "@nodelib/fs.stat": "^2.0.2",
        "@nodelib/fs.walk": "^1.2.3",
        "glob-parent": "^5.1.2",
        "merge2": "^1.3.0",
-
        "micromatch": "^4.0.4"
+
        "micromatch": "^4.0.8"
      },
      "engines": {
        "node": ">=8.6.0"
@@ -2430,9 +2527,9 @@
      "dev": true
    },
    "node_modules/fastq": {
-
      "version": "1.17.1",
-
      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
-
      "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+
      "version": "1.19.0",
+
      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz",
+
      "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==",
      "dev": true,
      "dependencies": {
        "reusify": "^1.0.4"
@@ -2507,9 +2604,9 @@
      }
    },
    "node_modules/flatted": {
-
      "version": "3.3.1",
-
      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
-
      "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
+
      "version": "3.3.2",
+
      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz",
+
      "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==",
      "dev": true
    },
    "node_modules/follow-redirects": {
@@ -2533,9 +2630,9 @@
      }
    },
    "node_modules/form-data": {
-
      "version": "4.0.0",
-
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
-
      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+
      "version": "4.0.1",
+
      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
+
      "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
      "dev": true,
      "dependencies": {
        "asynckit": "^0.4.0",
@@ -2582,18 +2679,9 @@
      }
    },
    "node_modules/fuzzysort": {
-
      "version": "3.0.2",
-
      "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-3.0.2.tgz",
-
      "integrity": "sha512-ZyahVgxvckB1Qosn7YGWLDJJp2XlyaQ2WmZeI+d0AzW0AMqVYnz5N89G6KAKa6m/LOtv+kzJn4lhDF/yVg11Cg=="
-
    },
-
    "node_modules/get-func-name": {
-
      "version": "2.0.2",
-
      "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz",
-
      "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==",
-
      "dev": true,
-
      "engines": {
-
        "node": "*"
-
      }
+
      "version": "3.1.0",
+
      "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-3.1.0.tgz",
+
      "integrity": "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ=="
    },
    "node_modules/get-port": {
      "version": "7.1.0",
@@ -2636,9 +2724,9 @@
      }
    },
    "node_modules/globals": {
-
      "version": "15.9.0",
-
      "resolved": "https://registry.npmjs.org/globals/-/globals-15.9.0.tgz",
-
      "integrity": "sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==",
+
      "version": "15.14.0",
+
      "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz",
+
      "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==",
      "dev": true,
      "engines": {
        "node": ">=18"
@@ -2659,9 +2747,9 @@
      "dev": true
    },
    "node_modules/happy-dom": {
-
      "version": "15.7.4",
-
      "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-15.7.4.tgz",
-
      "integrity": "sha512-r1vadDYGMtsHAAsqhDuk4IpPvr6N8MGKy5ntBo7tSdim+pWDxus2PNqOcOt8LuDZ4t3KJHE+gCuzupcx/GKnyQ==",
+
      "version": "15.11.7",
+
      "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-15.11.7.tgz",
+
      "integrity": "sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==",
      "dev": true,
      "dependencies": {
        "entities": "^4.5.0",
@@ -2696,9 +2784,9 @@
      }
    },
    "node_modules/hast-util-to-html": {
-
      "version": "9.0.3",
-
      "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz",
-
      "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==",
+
      "version": "9.0.4",
+
      "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz",
+
      "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==",
      "dependencies": {
        "@types/hast": "^3.0.0",
        "@types/unist": "^3.0.0",
@@ -2809,18 +2897,6 @@
        "node": ">=0.8.19"
      }
    },
-
    "node_modules/is-binary-path": {
-
      "version": "2.1.0",
-
      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
-
      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
-
      "dev": true,
-
      "dependencies": {
-
        "binary-extensions": "^2.0.0"
-
      },
-
      "engines": {
-
        "node": ">=8"
-
      }
-
    },
    "node_modules/is-buffer": {
      "version": "1.1.6",
      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
@@ -2864,15 +2940,6 @@
        "node": ">=0.12.0"
      }
    },
-
    "node_modules/is-path-inside": {
-
      "version": "3.0.3",
-
      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-
      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-
      "dev": true,
-
      "engines": {
-
        "node": ">=8"
-
      }
-
    },
    "node_modules/is-plain-obj": {
      "version": "4.1.0",
      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
@@ -2886,11 +2953,11 @@
      }
    },
    "node_modules/is-reference": {
-
      "version": "3.0.2",
-
      "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
-
      "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
+
      "version": "3.0.3",
+
      "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
+
      "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
      "dependencies": {
-
        "@types/estree": "*"
+
        "@types/estree": "^1.0.6"
      }
    },
    "node_modules/is-stream": {
@@ -2989,9 +3056,9 @@
      }
    },
    "node_modules/katex": {
-
      "version": "0.16.11",
-
      "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz",
-
      "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==",
+
      "version": "0.16.21",
+
      "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz",
+
      "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==",
      "funding": [
        "https://opencollective.com/katex",
        "https://github.com/sponsors/katex"
@@ -3031,9 +3098,9 @@
      }
    },
    "node_modules/known-css-properties": {
-
      "version": "0.34.0",
-
      "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz",
-
      "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==",
+
      "version": "0.35.0",
+
      "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz",
+
      "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==",
      "dev": true
    },
    "node_modules/levn": {
@@ -3098,34 +3165,31 @@
      "dev": true
    },
    "node_modules/loupe": {
-
      "version": "3.1.1",
-
      "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz",
-
      "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==",
-
      "dev": true,
-
      "dependencies": {
-
        "get-func-name": "^2.0.1"
-
      }
+
      "version": "3.1.3",
+
      "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
+
      "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
+
      "dev": true
    },
    "node_modules/lru-cache": {
-
      "version": "11.0.1",
-
      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz",
-
      "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==",
+
      "version": "11.0.2",
+
      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz",
+
      "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==",
      "engines": {
        "node": "20 || >=22"
      }
    },
    "node_modules/magic-string": {
-
      "version": "0.30.11",
-
      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz",
-
      "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
+
      "version": "0.30.17",
+
      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+
      "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
      "dependencies": {
        "@jridgewell/sourcemap-codec": "^1.5.0"
      }
    },
    "node_modules/marked": {
-
      "version": "14.1.2",
-
      "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.2.tgz",
-
      "integrity": "sha512-f3r0yqpz31VXiDB/wj9GaOB0a2PRLQl6vJmXiFrniNwjkKdvakqJRULhjFKJpxOchlCRiG5fcacoUZY5Xa6PEQ==",
+
      "version": "14.1.4",
+
      "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.4.tgz",
+
      "integrity": "sha512-vkVZ8ONmUdPnjCKc5uTRvmkRbx4EAi2OkTOXmfTDhZz3OFqMNBM1oTTWwTr4HY4uAEojhzPf+Fy8F1DWa3Sndg==",
      "bin": {
        "marked": "bin/marked.js"
      },
@@ -3134,11 +3198,11 @@
      }
    },
    "node_modules/marked-emoji": {
-
      "version": "1.4.2",
-
      "resolved": "https://registry.npmjs.org/marked-emoji/-/marked-emoji-1.4.2.tgz",
-
      "integrity": "sha512-2sP+bp2z76dwbILzQ7ijy2PyjjAJR3iAZCzaNGThD2UijFUBeidkn6MoCdX/j47tPIcWt9nwnjqRQPd01ZrfdA==",
+
      "version": "1.4.3",
+
      "resolved": "https://registry.npmjs.org/marked-emoji/-/marked-emoji-1.4.3.tgz",
+
      "integrity": "sha512-HDZx1VOmzu7XT2QNKWfrHGbNRMTWKj9XD78yrcH1madD30HpGLMODPOmKr/e7CA7NKKXkpXXNdndQn++ysXmHg==",
      "peerDependencies": {
-
        "marked": ">=4 <15"
+
        "marked": ">=4 <16"
      }
    },
    "node_modules/marked-footnote": {
@@ -3150,27 +3214,24 @@
      }
    },
    "node_modules/marked-katex-extension": {
-
      "version": "5.1.2",
-
      "resolved": "https://registry.npmjs.org/marked-katex-extension/-/marked-katex-extension-5.1.2.tgz",
-
      "integrity": "sha512-jRtacvDAPULKBWArDno0IGpzzpUw12yb8OaEsv3dTlvcIr21+mF9kD+Bxo2m/ErX/2ZIml6zFVMnpxCpqx3stw==",
-
      "dependencies": {
-
        "@types/katex": "^0.16.7"
-
      },
+
      "version": "5.1.4",
+
      "resolved": "https://registry.npmjs.org/marked-katex-extension/-/marked-katex-extension-5.1.4.tgz",
+
      "integrity": "sha512-GQOio4vCp0laxB1IY+2oNVo5nbn82yWMDP/jILRYHmyu2WXMVlXCB+krq2/U2fQn+V9j8aqDmnNdrsgqG2AkGQ==",
      "peerDependencies": {
        "katex": ">=0.16 <0.17",
-
        "marked": ">=4 <15"
+
        "marked": ">=4 <16"
      }
    },
    "node_modules/marked-linkify-it": {
-
      "version": "3.1.11",
-
      "resolved": "https://registry.npmjs.org/marked-linkify-it/-/marked-linkify-it-3.1.11.tgz",
-
      "integrity": "sha512-xcrc9c4PMQdUoEO8dE6HLW80ShrolXBqqmJz1c9XdM5t/D0fzXXZ+FJOM4wqhs1AOfpjLipPQKmkcxA5cSFykw==",
+
      "version": "3.1.12",
+
      "resolved": "https://registry.npmjs.org/marked-linkify-it/-/marked-linkify-it-3.1.12.tgz",
+
      "integrity": "sha512-zKTioxO4NSQgImhESOUSTL3J/KjSmaJGNNUoc/FzQtK0vhK2+ND2JFvJSR43tjeShO4AgJe3RLdnYIJtw3xRRw==",
      "dependencies": {
        "@types/linkify-it": "^5.0.0",
        "linkify-it": "^5.0.0"
      },
      "peerDependencies": {
-
        "marked": ">=4 <15"
+
        "marked": ">=4 <16"
      }
    },
    "node_modules/md5": {
@@ -3203,11 +3264,6 @@
        "url": "https://opencollective.com/unified"
      }
    },
-
    "node_modules/mdn-data": {
-
      "version": "2.0.30",
-
      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
-
      "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
-
    },
    "node_modules/merge2": {
      "version": "1.4.1",
      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
@@ -3218,9 +3274,9 @@
      }
    },
    "node_modules/micromark-util-character": {
-
      "version": "2.1.0",
-
      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz",
-
      "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==",
+
      "version": "2.1.1",
+
      "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+
      "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
      "funding": [
        {
          "type": "GitHub Sponsors",
@@ -3237,9 +3293,9 @@
      }
    },
    "node_modules/micromark-util-encode": {
-
      "version": "2.0.0",
-
      "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz",
-
      "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==",
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+
      "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
      "funding": [
        {
          "type": "GitHub Sponsors",
@@ -3252,9 +3308,9 @@
      ]
    },
    "node_modules/micromark-util-sanitize-uri": {
-
      "version": "2.0.0",
-
      "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz",
-
      "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==",
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+
      "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
      "funding": [
        {
          "type": "GitHub Sponsors",
@@ -3272,9 +3328,9 @@
      }
    },
    "node_modules/micromark-util-symbol": {
-
      "version": "2.0.0",
-
      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz",
-
      "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==",
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+
      "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
      "funding": [
        {
          "type": "GitHub Sponsors",
@@ -3287,9 +3343,9 @@
      ]
    },
    "node_modules/micromark-util-types": {
-
      "version": "2.0.0",
-
      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
-
      "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
+
      "version": "2.0.1",
+
      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
+
      "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
      "funding": [
        {
          "type": "GitHub Sponsors",
@@ -3375,9 +3431,9 @@
      "dev": true
    },
    "node_modules/nanoid": {
-
      "version": "3.3.7",
-
      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
-
      "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+
      "version": "3.3.8",
+
      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+
      "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
      "dev": true,
      "funding": [
        {
@@ -3398,15 +3454,6 @@
      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
      "dev": true
    },
-
    "node_modules/normalize-path": {
-
      "version": "3.0.0",
-
      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
-
      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
-
      "dev": true,
-
      "engines": {
-
        "node": ">=0.10.0"
-
      }
-
    },
    "node_modules/npm-run-path": {
      "version": "6.0.0",
      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
@@ -3539,20 +3586,10 @@
        "node": ">= 14.16"
      }
    },
-
    "node_modules/periscopic": {
-
      "version": "3.1.0",
-
      "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
-
      "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
-
      "dependencies": {
-
        "@types/estree": "^1.0.0",
-
        "estree-walker": "^3.0.0",
-
        "is-reference": "^3.0.0"
-
      }
-
    },
    "node_modules/picocolors": {
-
      "version": "1.1.0",
-
      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
-
      "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
+
      "version": "1.1.1",
+
      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+
      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
      "dev": true
    },
    "node_modules/picomatch": {
@@ -3568,12 +3605,12 @@
      }
    },
    "node_modules/playwright": {
-
      "version": "1.47.2",
-
      "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.2.tgz",
-
      "integrity": "sha512-nx1cLMmQWqmA3UsnjaaokyoUpdVaaDhJhMoxX2qj3McpjnsqFHs516QAKYhqHAgOP+oCFTEOCOAaD1RgD/RQfA==",
+
      "version": "1.50.1",
+
      "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.50.1.tgz",
+
      "integrity": "sha512-G8rwsOQJ63XG6BbKj2w5rHeavFjy5zynBA9zsJMMtBoe/Uf757oG12NXz6e6OirF7RCrTVAKFXbLmn1RbL7Qaw==",
      "dev": true,
      "dependencies": {
-
        "playwright-core": "1.47.2"
+
        "playwright-core": "1.50.1"
      },
      "bin": {
        "playwright": "cli.js"
@@ -3586,9 +3623,9 @@
      }
    },
    "node_modules/playwright-core": {
-
      "version": "1.47.2",
-
      "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.2.tgz",
-
      "integrity": "sha512-3JvMfF+9LJfe16l7AbSmU555PaTl2tPyQsVInqm3id16pdDfvZ8TTZ/pyzmkbDrZTQefyzU7AIHlZqQnxpqHVQ==",
+
      "version": "1.50.1",
+
      "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.50.1.tgz",
+
      "integrity": "sha512-ra9fsNWayuYumt+NiM069M6OkcRb1FZSK8bgi66AtpFoWkg2+y0bJSNmkFrWhMbEBbVKC/EruAHH3g0zmtwGmQ==",
      "dev": true,
      "bin": {
        "playwright-core": "cli.js"
@@ -3598,9 +3635,9 @@
      }
    },
    "node_modules/postcss": {
-
      "version": "8.4.47",
-
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
-
      "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
+
      "version": "8.5.1",
+
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
+
      "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
      "dev": true,
      "funding": [
        {
@@ -3617,8 +3654,8 @@
        }
      ],
      "dependencies": {
-
        "nanoid": "^3.3.7",
-
        "picocolors": "^1.1.0",
+
        "nanoid": "^3.3.8",
+
        "picocolors": "^1.1.1",
        "source-map-js": "^1.2.1"
      },
      "engines": {
@@ -3719,9 +3756,9 @@
      }
    },
    "node_modules/prettier": {
-
      "version": "3.3.3",
-
      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
-
      "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
+
      "version": "3.4.2",
+
      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+
      "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
      "dev": true,
      "bin": {
        "prettier": "bin/prettier.cjs"
@@ -3734,9 +3771,9 @@
      }
    },
    "node_modules/prettier-plugin-svelte": {
-
      "version": "3.2.6",
-
      "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.6.tgz",
-
      "integrity": "sha512-Y1XWLw7vXUQQZmgv1JAEiLcErqUniAF2wO7QJsw8BVMvpLET2dI5WpEIEJx1r11iHVdSMzQxivyfrH9On9t2IQ==",
+
      "version": "3.3.3",
+
      "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.3.tgz",
+
      "integrity": "sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==",
      "dev": true,
      "peerDependencies": {
        "prettier": "^3.0.0",
@@ -3744,9 +3781,9 @@
      }
    },
    "node_modules/pretty-ms": {
-
      "version": "9.1.0",
-
      "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz",
-
      "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==",
+
      "version": "9.2.0",
+
      "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
+
      "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==",
      "dev": true,
      "dependencies": {
        "parse-ms": "^4.0.0"
@@ -3803,15 +3840,16 @@
      ]
    },
    "node_modules/readdirp": {
-
      "version": "3.6.0",
-
      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
-
      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+
      "version": "4.1.1",
+
      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz",
+
      "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==",
      "dev": true,
-
      "dependencies": {
-
        "picomatch": "^2.2.1"
-
      },
      "engines": {
-
        "node": ">=8.10.0"
+
        "node": ">= 14.18.0"
+
      },
+
      "funding": {
+
        "type": "individual",
+
        "url": "https://paulmillr.com/funding/"
      }
    },
    "node_modules/resolve-from": {
@@ -3834,12 +3872,12 @@
      }
    },
    "node_modules/rollup": {
-
      "version": "4.22.4",
-
      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz",
-
      "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==",
+
      "version": "4.32.1",
+
      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.32.1.tgz",
+
      "integrity": "sha512-z+aeEsOeEa3mEbS1Tjl6sAZ8NE3+AalQz1RJGj81M+fizusbdDMoEJwdJNHfaB40Scr4qNu+welOfes7maKonA==",
      "dev": true,
      "dependencies": {
-
        "@types/estree": "1.0.5"
+
        "@types/estree": "1.0.6"
      },
      "bin": {
        "rollup": "dist/bin/rollup"
@@ -3849,31 +3887,28 @@
        "npm": ">=8.0.0"
      },
      "optionalDependencies": {
-
        "@rollup/rollup-android-arm-eabi": "4.22.4",
-
        "@rollup/rollup-android-arm64": "4.22.4",
-
        "@rollup/rollup-darwin-arm64": "4.22.4",
-
        "@rollup/rollup-darwin-x64": "4.22.4",
-
        "@rollup/rollup-linux-arm-gnueabihf": "4.22.4",
-
        "@rollup/rollup-linux-arm-musleabihf": "4.22.4",
-
        "@rollup/rollup-linux-arm64-gnu": "4.22.4",
-
        "@rollup/rollup-linux-arm64-musl": "4.22.4",
-
        "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4",
-
        "@rollup/rollup-linux-riscv64-gnu": "4.22.4",
-
        "@rollup/rollup-linux-s390x-gnu": "4.22.4",
-
        "@rollup/rollup-linux-x64-gnu": "4.22.4",
-
        "@rollup/rollup-linux-x64-musl": "4.22.4",
-
        "@rollup/rollup-win32-arm64-msvc": "4.22.4",
-
        "@rollup/rollup-win32-ia32-msvc": "4.22.4",
-
        "@rollup/rollup-win32-x64-msvc": "4.22.4",
+
        "@rollup/rollup-android-arm-eabi": "4.32.1",
+
        "@rollup/rollup-android-arm64": "4.32.1",
+
        "@rollup/rollup-darwin-arm64": "4.32.1",
+
        "@rollup/rollup-darwin-x64": "4.32.1",
+
        "@rollup/rollup-freebsd-arm64": "4.32.1",
+
        "@rollup/rollup-freebsd-x64": "4.32.1",
+
        "@rollup/rollup-linux-arm-gnueabihf": "4.32.1",
+
        "@rollup/rollup-linux-arm-musleabihf": "4.32.1",
+
        "@rollup/rollup-linux-arm64-gnu": "4.32.1",
+
        "@rollup/rollup-linux-arm64-musl": "4.32.1",
+
        "@rollup/rollup-linux-loongarch64-gnu": "4.32.1",
+
        "@rollup/rollup-linux-powerpc64le-gnu": "4.32.1",
+
        "@rollup/rollup-linux-riscv64-gnu": "4.32.1",
+
        "@rollup/rollup-linux-s390x-gnu": "4.32.1",
+
        "@rollup/rollup-linux-x64-gnu": "4.32.1",
+
        "@rollup/rollup-linux-x64-musl": "4.32.1",
+
        "@rollup/rollup-win32-arm64-msvc": "4.32.1",
+
        "@rollup/rollup-win32-ia32-msvc": "4.32.1",
+
        "@rollup/rollup-win32-x64-msvc": "4.32.1",
        "fsevents": "~2.3.2"
      }
    },
-
    "node_modules/rollup/node_modules/@types/estree": {
-
      "version": "1.0.5",
-
      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
-
      "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
-
      "dev": true
-
    },
    "node_modules/run-parallel": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -3931,9 +3966,9 @@
      }
    },
    "node_modules/semver": {
-
      "version": "7.6.3",
-
      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-
      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+
      "version": "7.7.0",
+
      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz",
+
      "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==",
      "dev": true,
      "bin": {
        "semver": "bin/semver.js"
@@ -3985,6 +4020,7 @@
      "version": "1.2.1",
      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
      "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+
      "dev": true,
      "engines": {
        "node": ">=0.10.0"
      }
@@ -4005,9 +4041,9 @@
      "dev": true
    },
    "node_modules/std-env": {
-
      "version": "3.7.0",
-
      "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
-
      "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
+
      "version": "3.8.0",
+
      "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz",
+
      "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==",
      "dev": true
    },
    "node_modules/stringify-entities": {
@@ -4023,18 +4059,6 @@
        "url": "https://github.com/sponsors/wooorm"
      }
    },
-
    "node_modules/strip-ansi": {
-
      "version": "6.0.1",
-
      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-
      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-
      "dev": true,
-
      "dependencies": {
-
        "ansi-regex": "^5.0.1"
-
      },
-
      "engines": {
-
        "node": ">=8"
-
      }
-
    },
    "node_modules/strip-bom-string": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz",
@@ -4080,37 +4104,37 @@
      }
    },
    "node_modules/svelte": {
-
      "version": "4.2.19",
-
      "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz",
-
      "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==",
-
      "dependencies": {
-
        "@ampproject/remapping": "^2.2.1",
-
        "@jridgewell/sourcemap-codec": "^1.4.15",
-
        "@jridgewell/trace-mapping": "^0.3.18",
-
        "@types/estree": "^1.0.1",
-
        "acorn": "^8.9.0",
-
        "aria-query": "^5.3.0",
-
        "axobject-query": "^4.0.0",
-
        "code-red": "^1.0.3",
-
        "css-tree": "^2.3.1",
-
        "estree-walker": "^3.0.3",
-
        "is-reference": "^3.0.1",
+
      "version": "5.19.6",
+
      "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.19.6.tgz",
+
      "integrity": "sha512-6ydekB3qyqUal+UhfMjmVOjRGtxysR8vuiMhi2nwuBtPJWnctVlsGspjVFB05qmR+TXI1emuqtZt81c0XiFleA==",
+
      "dependencies": {
+
        "@ampproject/remapping": "^2.3.0",
+
        "@jridgewell/sourcemap-codec": "^1.5.0",
+
        "@types/estree": "^1.0.5",
+
        "acorn": "^8.12.1",
+
        "acorn-typescript": "^1.4.13",
+
        "aria-query": "^5.3.1",
+
        "axobject-query": "^4.1.0",
+
        "clsx": "^2.1.1",
+
        "esm-env": "^1.2.1",
+
        "esrap": "^1.4.3",
+
        "is-reference": "^3.0.3",
        "locate-character": "^3.0.0",
-
        "magic-string": "^0.30.4",
-
        "periscopic": "^3.1.0"
+
        "magic-string": "^0.30.11",
+
        "zimmerframe": "^1.1.2"
      },
      "engines": {
-
        "node": ">=16"
+
        "node": ">=18"
      }
    },
    "node_modules/svelte-check": {
-
      "version": "4.0.2",
-
      "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.0.2.tgz",
-
      "integrity": "sha512-w2yqcG9ELJe2RJCnAvB7v0OgkHhL3czzz/tVoxGFfO6y4mOrF6QHCDhXijeXzsU7LVKEwWS3Qd9tza4JBuDxqA==",
+
      "version": "4.1.4",
+
      "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.4.tgz",
+
      "integrity": "sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==",
      "dev": true,
      "dependencies": {
        "@jridgewell/trace-mapping": "^0.3.25",
-
        "chokidar": "^3.4.1",
+
        "chokidar": "^4.0.1",
        "fdir": "^6.2.0",
        "picocolors": "^1.0.0",
        "sade": "^1.7.4"
@@ -4127,9 +4151,9 @@
      }
    },
    "node_modules/svelte-check/node_modules/fdir": {
-
      "version": "6.3.0",
-
      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.3.0.tgz",
-
      "integrity": "sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==",
+
      "version": "6.4.3",
+
      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
+
      "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
      "dev": true,
      "peerDependencies": {
        "picomatch": "^3 || ^4"
@@ -4155,9 +4179,9 @@
      }
    },
    "node_modules/svelte-eslint-parser": {
-
      "version": "0.41.1",
-
      "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.41.1.tgz",
-
      "integrity": "sha512-08ndI6zTghzI8SuJAFpvMbA/haPSGn3xz19pjre19yYMw8Nw/wQJ2PrZBI/L8ijGTgtkWCQQiLLy+Z1tfaCwNA==",
+
      "version": "0.42.0",
+
      "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-0.42.0.tgz",
+
      "integrity": "sha512-e7LyqFPTuF43ZYhKOf0Gq1lzP+G64iWVJXAIcwVxohGx5FFyqdUkw7DEXNjZ+Fm+TAA98zPmDqWvgD1OpyMi5A==",
      "dev": true,
      "dependencies": {
        "eslint-scope": "^7.2.2",
@@ -4197,6 +4221,18 @@
        "url": "https://opencollective.com/eslint"
      }
    },
+
    "node_modules/svelte-eslint-parser/node_modules/eslint-visitor-keys": {
+
      "version": "3.4.3",
+
      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+
      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+
      "dev": true,
+
      "engines": {
+
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+
      },
+
      "funding": {
+
        "url": "https://opencollective.com/eslint"
+
      }
+
    },
    "node_modules/svelte-eslint-parser/node_modules/espree": {
      "version": "9.6.1",
      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
@@ -4214,24 +4250,6 @@
        "url": "https://opencollective.com/eslint"
      }
    },
-
    "node_modules/svelte-hmr": {
-
      "version": "0.16.0",
-
      "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz",
-
      "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==",
-
      "dev": true,
-
      "engines": {
-
        "node": "^12.20 || ^14.13.1 || >= 16"
-
      },
-
      "peerDependencies": {
-
        "svelte": "^3.19.0 || ^4.0.0"
-
      }
-
    },
-
    "node_modules/text-table": {
-
      "version": "0.2.0",
-
      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-
      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-
      "dev": true
-
    },
    "node_modules/tinybench": {
      "version": "2.9.0",
      "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
@@ -4239,15 +4257,15 @@
      "dev": true
    },
    "node_modules/tinyexec": {
-
      "version": "0.3.0",
-
      "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz",
-
      "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==",
+
      "version": "0.3.2",
+
      "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+
      "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
      "dev": true
    },
    "node_modules/tinypool": {
-
      "version": "1.0.1",
-
      "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz",
-
      "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==",
+
      "version": "1.0.2",
+
      "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
+
      "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
      "dev": true,
      "engines": {
        "node": "^18.0.0 || >=20.0.0"
@@ -4293,21 +4311,21 @@
      }
    },
    "node_modules/ts-api-utils": {
-
      "version": "1.3.0",
-
      "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz",
-
      "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==",
+
      "version": "2.0.0",
+
      "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz",
+
      "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==",
      "dev": true,
      "engines": {
-
        "node": ">=16"
+
        "node": ">=18.12"
      },
      "peerDependencies": {
-
        "typescript": ">=4.2.0"
+
        "typescript": ">=4.8.4"
      }
    },
    "node_modules/tslib": {
-
      "version": "2.7.0",
-
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
-
      "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA=="
+
      "version": "2.8.1",
+
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+
      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
    },
    "node_modules/twemoji": {
      "version": "14.0.2",
@@ -4338,9 +4356,9 @@
      }
    },
    "node_modules/typescript": {
-
      "version": "5.6.2",
-
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
-
      "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
+
      "version": "5.7.3",
+
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
+
      "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
      "dev": true,
      "bin": {
        "tsc": "bin/tsc",
@@ -4351,14 +4369,14 @@
      }
    },
    "node_modules/typescript-eslint": {
-
      "version": "8.7.0",
-
      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.7.0.tgz",
-
      "integrity": "sha512-nEHbEYJyHwsuf7c3V3RS7Saq+1+la3i0ieR3qP0yjqWSzVmh8Drp47uOl9LjbPANac4S7EFSqvcYIKXUUwIfIQ==",
+
      "version": "8.22.0",
+
      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.22.0.tgz",
+
      "integrity": "sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/eslint-plugin": "8.7.0",
-
        "@typescript-eslint/parser": "8.7.0",
-
        "@typescript-eslint/utils": "8.7.0"
+
        "@typescript-eslint/eslint-plugin": "8.22.0",
+
        "@typescript-eslint/parser": "8.22.0",
+
        "@typescript-eslint/utils": "8.22.0"
      },
      "engines": {
        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4367,10 +4385,9 @@
        "type": "opencollective",
        "url": "https://opencollective.com/typescript-eslint"
      },
-
      "peerDependenciesMeta": {
-
        "typescript": {
-
          "optional": true
-
        }
+
      "peerDependencies": {
+
        "eslint": "^8.57.0 || ^9.0.0",
+
        "typescript": ">=4.8.4 <5.8.0"
      }
    },
    "node_modules/uc.micro": {
@@ -4509,9 +4526,9 @@
      }
    },
    "node_modules/vite": {
-
      "version": "5.4.7",
-
      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.7.tgz",
-
      "integrity": "sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==",
+
      "version": "5.4.14",
+
      "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz",
+
      "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==",
      "dev": true,
      "dependencies": {
        "esbuild": "^0.21.3",
@@ -4568,13 +4585,14 @@
      }
    },
    "node_modules/vite-node": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.1.tgz",
-
      "integrity": "sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.8.tgz",
+
      "integrity": "sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==",
      "dev": true,
      "dependencies": {
        "cac": "^6.7.14",
-
        "debug": "^4.3.6",
+
        "debug": "^4.3.7",
+
        "es-module-lexer": "^1.5.4",
        "pathe": "^1.1.2",
        "vite": "^5.0.0"
      },
@@ -4612,12 +4630,12 @@
      }
    },
    "node_modules/vitefu": {
-
      "version": "0.2.5",
-
      "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
-
      "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==",
+
      "version": "1.0.5",
+
      "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.5.tgz",
+
      "integrity": "sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==",
      "dev": true,
      "peerDependencies": {
-
        "vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
+
        "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
      },
      "peerDependenciesMeta": {
        "vite": {
@@ -4626,29 +4644,30 @@
      }
    },
    "node_modules/vitest": {
-
      "version": "2.1.1",
-
      "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.1.tgz",
-
      "integrity": "sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==",
-
      "dev": true,
-
      "dependencies": {
-
        "@vitest/expect": "2.1.1",
-
        "@vitest/mocker": "2.1.1",
-
        "@vitest/pretty-format": "^2.1.1",
-
        "@vitest/runner": "2.1.1",
-
        "@vitest/snapshot": "2.1.1",
-
        "@vitest/spy": "2.1.1",
-
        "@vitest/utils": "2.1.1",
-
        "chai": "^5.1.1",
-
        "debug": "^4.3.6",
-
        "magic-string": "^0.30.11",
+
      "version": "2.1.8",
+
      "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.8.tgz",
+
      "integrity": "sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==",
+
      "dev": true,
+
      "dependencies": {
+
        "@vitest/expect": "2.1.8",
+
        "@vitest/mocker": "2.1.8",
+
        "@vitest/pretty-format": "^2.1.8",
+
        "@vitest/runner": "2.1.8",
+
        "@vitest/snapshot": "2.1.8",
+
        "@vitest/spy": "2.1.8",
+
        "@vitest/utils": "2.1.8",
+
        "chai": "^5.1.2",
+
        "debug": "^4.3.7",
+
        "expect-type": "^1.1.0",
+
        "magic-string": "^0.30.12",
        "pathe": "^1.1.2",
-
        "std-env": "^3.7.0",
+
        "std-env": "^3.8.0",
        "tinybench": "^2.9.0",
-
        "tinyexec": "^0.3.0",
-
        "tinypool": "^1.0.0",
+
        "tinyexec": "^0.3.1",
+
        "tinypool": "^1.0.1",
        "tinyrainbow": "^1.2.0",
        "vite": "^5.0.0",
-
        "vite-node": "2.1.1",
+
        "vite-node": "2.1.8",
        "why-is-node-running": "^2.3.0"
      },
      "bin": {
@@ -4663,8 +4682,8 @@
      "peerDependencies": {
        "@edge-runtime/vm": "*",
        "@types/node": "^18.0.0 || >=20.0.0",
-
        "@vitest/browser": "2.1.1",
-
        "@vitest/ui": "2.1.1",
+
        "@vitest/browser": "2.1.8",
+
        "@vitest/ui": "2.1.8",
        "happy-dom": "*",
        "jsdom": "*"
      },
@@ -4695,17 +4714,17 @@
      "integrity": "sha512-poJU8iHIWnC3vgphJnrLZyI3YdqRlR27xzqDmpPXYzA93R4Gk8z7T6oqDzDoHjoikA2aS82crdXFkjELCdJsjQ=="
    },
    "node_modules/vscode-textmate": {
-
      "version": "9.1.0",
-
      "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.1.0.tgz",
-
      "integrity": "sha512-lxKSVp2DkFOx9RDAvpiYUrB9/KT1fAfi1aE8CBGstP8N7rLF+Seifj8kDA198X0mYj1CjQUC+81+nQf8CO0nVA=="
+
      "version": "9.2.0",
+
      "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-9.2.0.tgz",
+
      "integrity": "sha512-rkvG4SraZQaPSN/5XjwKswdU0OP9MF28QjrYzUBbhb8QyG3ljB1Ky996m++jiI7KdiAP2CkBiQZd9pqEDTClqA=="
    },
    "node_modules/wait-on": {
-
      "version": "8.0.1",
-
      "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.1.tgz",
-
      "integrity": "sha512-1wWQOyR2LVVtaqrcIL2+OM+x7bkpmzVROa0Nf6FryXkS+er5Sa1kzFGjzZRqLnHa3n1rACFLeTwUqE1ETL9Mig==",
+
      "version": "8.0.2",
+
      "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-8.0.2.tgz",
+
      "integrity": "sha512-qHlU6AawrgAIHlueGQHQ+ETcPLAauXbnoTKl3RKq20W0T8x0DKVAo5xWIYjHSyvHxQlcYbFdR0jp4T9bDVITFA==",
      "dev": true,
      "dependencies": {
-
        "axios": "^1.7.7",
+
        "axios": "^1.7.9",
        "joi": "^17.13.3",
        "lodash": "^4.17.21",
        "minimist": "^1.2.8",
@@ -4818,10 +4837,15 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
+
    "node_modules/zimmerframe": {
+
      "version": "1.1.2",
+
      "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz",
+
      "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w=="
+
    },
    "node_modules/zod": {
-
      "version": "3.23.8",
-
      "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
-
      "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
+
      "version": "3.24.1",
+
      "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz",
+
      "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==",
      "funding": {
        "url": "https://github.com/sponsors/colinhacks"
      }
modified package.json
@@ -22,7 +22,7 @@
  "devDependencies": {
    "@eslint/js": "^9.11.1",
    "@playwright/test": "^1.47.2",
-
    "@sveltejs/vite-plugin-svelte": "^3.1.2",
+
    "@sveltejs/vite-plugin-svelte": "^4.0.0",
    "@tsconfig/svelte": "^5.0.4",
    "@types/config": "^3.3.5",
    "@types/dompurify": "^3.0.5",
@@ -36,7 +36,7 @@
    "config": "^3.3.12",
    "eslint": "^9.11.1",
    "eslint-config-prettier": "^9.1.0",
-
    "eslint-plugin-svelte": "^2.44.0",
+
    "eslint-plugin-svelte": "^2.45.1",
    "execa": "^9.4.0",
    "get-port": "^7.1.0",
    "globals": "^15.9.0",
@@ -44,7 +44,7 @@
    "prettier": "^3.3.3",
    "prettier-plugin-svelte": "^3.2.6",
    "svelte-check": "^4.0.2",
-
    "svelte-eslint-parser": "^0.41.1",
+
    "svelte-eslint-parser": "^0.42.0",
    "typescript": "^5.6.2",
    "typescript-eslint": "^8.7.0",
    "vite": "^5.4.7",
@@ -72,7 +72,7 @@
    "marked-katex-extension": "^5.1.2",
    "marked-linkify-it": "^3.1.11",
    "md5": "^2.3.0",
-
    "svelte": "^4.2.19",
+
    "svelte": "^5.0.0",
    "twemoji": "^14.0.2",
    "zod": "^3.23.8"
  }
modified scripts/check
@@ -2,6 +2,6 @@
set -e

npx tsc --noEmit
-
npx svelte-check --tsconfig tsconfig.json --fail-on-warnings --compiler-warnings missing-custom-element-compile-options:ignore
+
npx svelte-check --tsconfig tsconfig.json --fail-on-warnings --compiler-warnings options_missing_custom_element:ignore
npx eslint --cache --cache-location node_modules/.cache/eslint --max-warnings 0 .
npx prettier "**/*.@(ts|js|svelte|json|css|html|yml)" --ignore-path .gitignore --check --cache
modified src/App/FullscreenModalPortal.svelte
@@ -35,7 +35,8 @@
      tabindex="0"
      class="overlay"
      on:click={hide}
-
      style:cursor={$modalStore.disableHide ? "not-allowed" : "default"} />
+
      style:cursor={$modalStore.disableHide ? "not-allowed" : "default"}>
+
    </div>
    <div class="content">
      <svelte:component this={$modalStore.component} {...$modalStore.props} />
    </div>
modified src/App/Help.svelte
@@ -31,7 +31,7 @@
  </div>

  {#if !hideShortcuts}
-
    <div class="divider" />
+
    <div class="divider"></div>
    <div class="item">
      Keyboard shortcuts <KeyHint>?</KeyHint>
    </div>
modified src/App/LoadingBar.svelte
@@ -23,4 +23,5 @@
  role="progressbar"
  aria-label="Page loading"
  class="loading-bar"
-
  class:visible={$isLoading} />
+
  class:visible={$isLoading}>
+
</div>
modified src/App/MobileFooter.svelte
@@ -53,7 +53,7 @@

      <div slot="popover">
        <Help hideShortcuts />
-
        <div class="divider" />
+
        <div class="divider"></div>
        <Settings />
      </div>
    </Popover>
modified src/App/Settings.svelte
@@ -52,7 +52,7 @@
          }}>
          <Icon name="sun" />
        </Button>
-
        <div class="global-spacer" />
+
        <div class="global-spacer"></div>
        <Button
          ariaLabel="Dark Mode"
          styleBorderRadius="0"
@@ -65,7 +65,7 @@
          }}>
          <Icon name="moon" />
        </Button>
-
        <div class="global-spacer" />
+
        <div class="global-spacer"></div>
        <Button
          ariaLabel="System Theme"
          styleBorderRadius="0"
@@ -93,7 +93,7 @@
              : "not-selected"}>
            {font.displayName}
          </Button>
-
          <div class="global-spacer" />
+
          <div class="global-spacer"></div>
        {/each}
      </Radio>
    </div>
modified src/components/Button.svelte
@@ -1,4 +1,4 @@
-
<script lang="ts" strictEvents>
+
<script lang="ts">
  export let ariaLabel: string | undefined = undefined;
  export let title: string | undefined = undefined;
  export let variant:
modified src/components/Clipboard.svelte
@@ -1,6 +1,6 @@
<svelte:options customElement="radicle-clipboard" />

-
<script lang="ts" strictEvents>
+
<script lang="ts">
  import debounce from "lodash/debounce";
  import { createEventDispatcher } from "svelte";

modified src/components/Command.svelte
@@ -1,13 +1,11 @@
<script lang="ts">
-
  import { SvelteComponent } from "svelte";
-

  import Clipboard from "@app/components/Clipboard.svelte";

  export let command: string;
  export let fullWidth: boolean = false;
  export let showPrompt: boolean = true;

-
  let clipboard: SvelteComponent;
+
  let clipboard: Clipboard;
</script>

<style>
modified src/components/Comment.svelte
@@ -51,9 +51,6 @@
    left: -2.5px;
    background-color: var(--color-fill-separator);
  }
-
  .icon {
-
    color: var(--color-fill-gray);
-
  }
  .card-metadata {
    color: var(--color-fill-gray);
    font-size: var(--font-size-small);
@@ -101,10 +98,10 @@
<div class="card" class:card-empty-body={!body} {id} class:reply={isReply}>
  <div style:position="relative">
    {#if isReply}
-
      <div class="reply-dot" />
+
      <div class="reply-dot"></div>
    {/if}
    {#if isLastReply}
-
      <div class="connector-line" />
+
      <div class="connector-line"></div>
    {/if}
    <div class="card-header" class:card-header-no-icon={isReply}>
      <slot class="icon" name="icon" />
modified src/components/ExpandButton.svelte
@@ -1,4 +1,4 @@
-
<script lang="ts" strictEvents>
+
<script lang="ts">
  import { createEventDispatcher } from "svelte";

  import IconButton from "./IconButton.svelte";
modified src/components/IconButton.svelte
@@ -1,4 +1,4 @@
-
<script lang="ts" strictEvent>
+
<script lang="ts">
  import { createEventDispatcher } from "svelte";

  import Loading from "./Loading.svelte";
modified src/components/Link.svelte
@@ -1,4 +1,4 @@
-
<script lang="ts" strictEvents>
+
<script lang="ts">
  import type { Route } from "@app/lib/router/definitions";

  import { createEventDispatcher } from "svelte";
modified src/components/Loading.svelte
@@ -160,10 +160,10 @@
      class:center
      class:margins
      class:condensed>
-
      <div class="bounce1" style="" />
+
      <div class="bounce1" style=""></div>
      {#if !condensed}
-
        <div class="bounce2" />
-
        <div class="bounce3" />
+
        <div class="bounce2"></div>
+
        <div class="bounce3"></div>
      {/if}
    </div>
  </div>
modified src/components/Markdown.svelte
@@ -517,12 +517,14 @@
{#if frontMatter && frontMatter.length > 0}
  <div class="front-matter">
    <table>
-
      {#each frontMatter as [key, val]}
-
        <tr>
-
          <td><span class="txt-bold">{key}</span></td>
-
          <td>{val}</td>
-
        </tr>
-
      {/each}
+
      <tbody>
+
        {#each frontMatter as [key, val]}
+
          <tr>
+
            <td><span class="txt-bold">{key}</span></td>
+
            <td>{val}</td>
+
          </tr>
+
        {/each}
+
      </tbody>
    </table>
  </div>
{/if}
modified src/components/RepoCard.svelte
@@ -142,7 +142,7 @@
  }}>
  <div class="repo-card" class:compact>
    <div class="activity">
-
      <div class="fadeout-overlay" />
+
      <div class="fadeout-overlay"></div>
      <ActivityDiagram
        id={repo.rid}
        viewBoxHeight={200}
modified src/components/TextInput.svelte
@@ -1,4 +1,4 @@
-
<script lang="ts" strictEvents>
+
<script lang="ts">
  import debounce from "lodash/debounce";
  import { createEventDispatcher } from "svelte";
  import { onMount } from "svelte";
modified src/index.ts
@@ -1,6 +1,7 @@
import App from "@app/App.svelte";
+
import { mount } from "svelte";

-
const app = new App({
+
const app = mount(App, {
  target: document.body,
});

modified src/lib/modal.ts
@@ -1,11 +1,11 @@
-
import type { ComponentProps, ComponentType, SvelteComponent } from "svelte";
+
import type { Component, ComponentProps } from "svelte";

import { derived, get, writable } from "svelte/store";

type HideCallback = () => void;

type Modal = {
-
  component: ComponentType;
+
  component: Component;
  props: Record<string, unknown>;
  hideCallback?: HideCallback;
  disableHide?: boolean;
@@ -42,15 +42,14 @@ export function hide(): void {
  store.set(undefined);
}

-
interface ShowArgs<T extends SvelteComponent> {
-
  component: ComponentType<T>;
+
interface ShowArgs<T extends Component> {
+
  component: T;
  props: ComponentProps<T>;
  hideCallback?: HideCallback;
}

-
export function show<Component extends SvelteComponent>(
-
  args: ShowArgs<Component>,
-
): void {
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
+
export function show<T extends Component<any>>(args: ShowArgs<T>): void {
  // Defocus any active input elements, so that we can always close an open
  // modal via the `esc` hotkey.
  if (document.activeElement instanceof HTMLElement) {
@@ -59,9 +58,8 @@ export function show<Component extends SvelteComponent>(
  store.set(args);
}

-
export function toggle<Component extends SvelteComponent>(
-
  args: ShowArgs<Component>,
-
): void {
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
+
export function toggle<T extends Component<any>>(args: ShowArgs<T>): void {
  const stored = get(modalStore);

  if (stored && stored.component === args.component) {
modified src/modals/ColorPaletteModal.svelte
@@ -143,7 +143,8 @@
                  class:unused={!usedColors.includes(color)}
                  title={color}
                  class="color"
-
                  style:background-color={`var(${color})`} />
+
                  style:background-color={`var(${color})`}>
+
                </div>
              </div>
            {/each}
          </div>
modified src/views/nodes/View.svelte
@@ -322,7 +322,7 @@
          <PolicyExplainer seedingPolicy={node.config?.seedingPolicy} />
          <div class="sidebar-item">
            <Seeding count={stats.repos.total}>
-
              <div style:width="2rem" />
+
              <div style:width="2rem"></div>
            </Seeding>
          </div>
          <div class="sidebar-item">
modified src/views/repos/Changeset/FileDiff.svelte
@@ -452,65 +452,67 @@
    {#if fileDiff.type === "plain"}
      {#if fileDiff.hunks.length > 0 && !preview}
        <table class="diff" data-file-diff-select>
-
          {#each fileDiff.hunks as hunk, hunkIdx}
-
            <tr
-
              class="diff-line hunk-header"
-
              class:selected={hunkHeaderSelected(selection, hunkIdx)}>
-
              <td colspan={2} style:position="relative">
-
                <div class="selection-indicator-left" />
-
              </td>
-
              <td
-
                colspan={6}
-
                class="diff-expand-header"
-
                style:position="relative">
-
                {hunk.header}
-
                <div class="selection-indicator-right" />
-
              </td>
-
            </tr>
-
            {#each hunk.lines as line, lineIdx}
+
          <tbody>
+
            {#each fileDiff.hunks as hunk, hunkIdx}
              <tr
-
                style:position="relative"
-
                class={`diff-line type-${line.type}`}
-
                class:selection-start={selection?.startHunk === hunkIdx &&
-
                  selection.startLine === lineIdx}
-
                class:selection-end={(selection?.endHunk === hunkIdx &&
-
                  selection.endLine === lineIdx) ||
-
                  (selection?.startHunk === hunkIdx &&
-
                    selection.startLine === lineIdx &&
-
                    selection?.endHunk === undefined)}
-
                class:selected={isLineSelected(selection, hunkIdx, lineIdx)}>
-
                <td
-
                  id={[filePath, "H" + hunkIdx, "L" + lineIdx].join("-")}
-
                  class="diff-line-number left"
-
                  on:click={e => selectLine(hunkIdx, lineIdx, e)}>
-
                  <div class="selection-indicator-left" />
-
                  {lineNumberL(line)}
+
                class="diff-line hunk-header"
+
                class:selected={hunkHeaderSelected(selection, hunkIdx)}>
+
                <td colspan={2} style:position="relative">
+
                  <div class="selection-indicator-left"></div>
                </td>
                <td
-
                  class="diff-line-number right"
-
                  on:click={e => selectLine(hunkIdx, lineIdx, e)}>
-
                  {lineNumberR(line)}
-
                </td>
-
                <td class="diff-line-type" data-line-type={line.type}>
-
                  {lineSign(line)}
+
                  colspan={6}
+
                  class="diff-expand-header"
+
                  style:position="relative">
+
                  {hunk.header}
+
                  <div class="selection-indicator-right"></div>
                </td>
-
                <td class="diff-line-content">
-
                  {#if highlighting}
-
                    {#if line.type === "addition" && highlighting.new}
-
                      {@html highlighting.new[line.lineNo - 1]}
-
                    {:else if line.type === "context" && highlighting.new}
-
                      {@html highlighting.new[line.lineNoNew - 1]}
-
                    {:else if line.type === "deletion" && highlighting.old}
-
                      {@html highlighting.old[line.lineNo - 1]}
-
                    {/if}
-
                  {:else}
-
                    {line.line}
-
                  {/if}
-
                </td>
-
                <div class="selection-indicator-right" />
              </tr>
+
              {#each hunk.lines as line, lineIdx}
+
                <tr
+
                  style:position="relative"
+
                  class={`diff-line type-${line.type}`}
+
                  class:selection-start={selection?.startHunk === hunkIdx &&
+
                    selection.startLine === lineIdx}
+
                  class:selection-end={(selection?.endHunk === hunkIdx &&
+
                    selection.endLine === lineIdx) ||
+
                    (selection?.startHunk === hunkIdx &&
+
                      selection.startLine === lineIdx &&
+
                      selection?.endHunk === undefined)}
+
                  class:selected={isLineSelected(selection, hunkIdx, lineIdx)}>
+
                  <td
+
                    id={[filePath, "H" + hunkIdx, "L" + lineIdx].join("-")}
+
                    class="diff-line-number left"
+
                    on:click={e => selectLine(hunkIdx, lineIdx, e)}>
+
                    <div class="selection-indicator-left"></div>
+
                    {lineNumberL(line)}
+
                  </td>
+
                  <td
+
                    class="diff-line-number right"
+
                    on:click={e => selectLine(hunkIdx, lineIdx, e)}>
+
                    {lineNumberR(line)}
+
                  </td>
+
                  <td class="diff-line-type" data-line-type={line.type}>
+
                    {lineSign(line)}
+
                  </td>
+
                  <td class="diff-line-content">
+
                    {#if highlighting}
+
                      {#if line.type === "addition" && highlighting.new}
+
                        {@html highlighting.new[line.lineNo - 1]}
+
                      {:else if line.type === "context" && highlighting.new}
+
                        {@html highlighting.new[line.lineNoNew - 1]}
+
                      {:else if line.type === "deletion" && highlighting.old}
+
                        {@html highlighting.old[line.lineNo - 1]}
+
                      {/if}
+
                    {:else}
+
                      {line.line}
+
                    {/if}
+
                  </td>
+
                  <td class="selection-indicator-right"></td>
+
                </tr>
+
              {/each}
            {/each}
-
          {/each}
+
          </tbody>
        </table>
      {:else if isImagePath(filePath) && extension && content}
        <div style:margin="1rem 0" style:text-align="center">
modified src/views/repos/Cob/Revision.svelte
@@ -102,6 +102,7 @@
    previousRevBase !== revisionBase
      ? revisionBase
      : (previousRevBase ?? revisionBase);
+
  $: baseMismatch = previousRevBase !== revisionBase;

  onMount(async () => {
    try {
@@ -321,7 +322,6 @@
            items={previousRevOid && previousRevId
              ? [revisionBase, previousRevOid]
              : [revisionBase]}>
-
            {@const baseMismatch = previousRevBase !== revisionBase}
            <Link
              let:item
              disabled={item !== revisionBase && baseMismatch}
@@ -439,7 +439,7 @@
          <div class="commits">
            {#each response.commits.toReversed() as commit}
              <div class="commit" style:position="relative">
-
                <div class="commit-dot" />
+
                <div class="commit-dot"></div>
                <CobCommitTeaser {commit} {baseUrl} {repoId} />
              </div>
            {/each}
@@ -464,13 +464,13 @@
    {#if timelines.length > 0}
      {#each timelines as element}
        {#if element.type === "thread"}
-
          <div class="connector" />
+
          <div class="connector"></div>
          <Thread
            {baseUrl}
            thread={element.inner}
            rawPath={rawPath(revisionBase)} />
        {:else if element.type === "merge"}
-
          <div class="connector" />
+
          <div class="connector"></div>
          <div class="action merge">
            <div class="authorship-header">
              <div style:color="var(--color-fill-primary)">
@@ -496,7 +496,7 @@
          </div>
        {:else if element.type === "review"}
          {@const [author, review] = element.inner}
-
          <div class="connector" />
+
          <div class="connector"></div>
          <div
            class="action"
            class:comment-review={review.verdict === null}
modified src/views/repos/Header/CloneButton.svelte
@@ -58,7 +58,7 @@
          <Icon name="logo" />
          Radicle
        </Button>
-
        <div class="global-spacer" />
+
        <div class="global-spacer"></div>
        <Button
          styleWidth="100%"
          styleBorderRadius="0"
modified src/views/repos/Issue.svelte
@@ -230,7 +230,7 @@
      </CobHeader>
      <div class="bottom">
        {#if threads.length > 0}
-
          <div class="connector" />
+
          <div class="connector"></div>
          <div class="threads">
            {#each threads as thread, i (thread.root.id)}
              <ThreadComponent
@@ -240,7 +240,7 @@
                  repo.payloads["xyz.radicle.project"].meta.head,
                )} />
              {#if i < threads.length - 1}
-
                <div class="connector" />
+
                <div class="connector"></div>
              {/if}
            {/each}
          </div>
modified src/views/repos/Patch.svelte
@@ -403,7 +403,7 @@
      </CobHeader>

      <div class="tabs">
-
        <div class="tabs-spacer" />
+
        <div class="tabs-spacer"></div>
        <Radio styleGap="0.375rem">
          {#each Object.entries(tabs) as [name, { route, icon }]}
            <Link {route}>
@@ -438,7 +438,7 @@
            </div>
          </div>
        {/if}
-
        <div class="tabs-spacer" />
+
        <div class="tabs-spacer"></div>
      </div>
      <div class="bottom">
        {#if view.name === "changes"}
modified src/views/repos/Source/Blob.svelte
@@ -172,7 +172,7 @@
            }}>
            <Icon name="eye-open" />Preview
          </Button>
-
          <div class="global-spacer" />
+
          <div class="global-spacer"></div>
        </Radio>
      {/if}
      <a href="{rawPath}/{blob.path}" target="_blank" rel="noreferrer">
modified src/views/repos/Source/Tree.svelte
@@ -1,4 +1,4 @@
-
<script lang="ts" strictEvents>
+
<script lang="ts">
  import type { BaseUrl, Tree } from "@http-client";

  import { createEventDispatcher } from "svelte";
modified src/views/repos/Source/Tree/Folder.svelte
@@ -1,4 +1,4 @@
-
<script lang="ts" strictEvents>
+
<script lang="ts">
  import type { BaseUrl, Tree } from "@http-client";

  import { createEventDispatcher } from "svelte";
modified tests/e2e/repo/commit.spec.ts
@@ -41,8 +41,8 @@ test("modified file", async ({ page }) => {
  ).toBeVisible();

  // Diff.
-
  await expect(page.getByText("-	# Git test repository")).toBeVisible();
-
  await expect(page.getByText("+	Updated readme")).toBeVisible();
+
  await expect(page.getByText("# Git test repository")).toBeVisible();
+
  await expect(page.getByText("Updated readme")).toBeVisible();
});

test("created file", async ({ page }) => {