-
Community-made Plugins
-
Write your own plugins in C#, F#, Python, JavaScript or TypeScript.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Spotify Premium- fow5040
-
Control your Spotify directly from Flow Launcher
-
-
-
-
-
-
-
-
-
-
-
-
Steam Search- Garulf
-
Search your Steam Game library and launch the game
-
-
-
-
-
-
-
-
-
-
-
-
Obsidian Notes- Garulf
-
Search through your Obsidian notes
-
-
-
-
-
-
-
-
-
-
-
-
Github-Notification- Garulf
-
View your GitHub notifications directly from Flow Launcher
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Flow Launcher is a free and open-source software
-
Support this project.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..80f97be
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,7108 @@
+{
+ "name": "flow-launcher-website",
+ "version": "0.0.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "flow-launcher-website",
+ "version": "0.0.1",
+ "dependencies": {
+ "@astrojs/svelte": "^7.0.2",
+ "astro": "^5.1.0",
+ "fflate": "^0.8.2",
+ "fslightbox": "^3.4.2",
+ "sass": "^1.83.0",
+ "svelte": "^5.16.0",
+ "svelte-awesome-color-picker": "^3.1.4",
+ "swiper": "^11.1.15",
+ "typescript": "^5.7.2"
+ },
+ "devDependencies": {
+ "@astrojs/language-server": "^2.15.4",
+ "@rollup/plugin-yaml": "^4.1.2",
+ "@types/node": "^22.10.2",
+ "svelte-language-server": "^0.17.8",
+ "typescript-svelte-plugin": "^0.3.45"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@astrojs/compiler": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.3.tgz",
+ "integrity": "sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==",
+ "license": "MIT"
+ },
+ "node_modules/@astrojs/internal-helpers": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.4.2.tgz",
+ "integrity": "sha512-EdDWkC3JJVcpGpqJAU/5hSk2LKXyG3mNGkzGoAuyK+xoPHbaVdSuIWoN1QTnmK3N/gGfaaAfM8gO2KDCAW7S3w==",
+ "license": "MIT"
+ },
+ "node_modules/@astrojs/language-server": {
+ "version": "2.15.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.15.4.tgz",
+ "integrity": "sha512-JivzASqTPR2bao9BWsSc/woPHH7OGSGc9aMxXL4U6egVTqBycB3ZHdBJPuOCVtcGLrzdWTosAqVPz1BVoxE0+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/compiler": "^2.10.3",
+ "@astrojs/yaml2ts": "^0.2.2",
+ "@jridgewell/sourcemap-codec": "^1.4.15",
+ "@volar/kit": "~2.4.7",
+ "@volar/language-core": "~2.4.7",
+ "@volar/language-server": "~2.4.7",
+ "@volar/language-service": "~2.4.7",
+ "fast-glob": "^3.2.12",
+ "muggle-string": "^0.4.1",
+ "volar-service-css": "0.0.62",
+ "volar-service-emmet": "0.0.62",
+ "volar-service-html": "0.0.62",
+ "volar-service-prettier": "0.0.62",
+ "volar-service-typescript": "0.0.62",
+ "volar-service-typescript-twoslash-queries": "0.0.62",
+ "volar-service-yaml": "0.0.62",
+ "vscode-html-languageservice": "^5.2.0",
+ "vscode-uri": "^3.0.8"
+ },
+ "bin": {
+ "astro-ls": "bin/nodeServer.js"
+ },
+ "peerDependencies": {
+ "prettier": "^3.0.0",
+ "prettier-plugin-astro": ">=0.11.0"
+ },
+ "peerDependenciesMeta": {
+ "prettier": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@astrojs/markdown-remark": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.0.1.tgz",
+ "integrity": "sha512-CTSYijj25NfxgZi15TU3CwPwgyD1/7yA3FcdcNmB9p94nydupiUbrIiq3IqeTp2m5kCVzxbPZeC7fTwEOaNyGw==",
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/prism": "3.2.0",
+ "github-slugger": "^2.0.0",
+ "hast-util-from-html": "^2.0.3",
+ "hast-util-to-text": "^4.0.2",
+ "import-meta-resolve": "^4.1.0",
+ "js-yaml": "^4.1.0",
+ "mdast-util-definitions": "^6.0.0",
+ "rehype-raw": "^7.0.0",
+ "rehype-stringify": "^10.0.1",
+ "remark-gfm": "^4.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-rehype": "^11.1.1",
+ "remark-smartypants": "^3.0.2",
+ "shiki": "^1.23.1",
+ "unified": "^11.0.5",
+ "unist-util-remove-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "unist-util-visit-parents": "^6.0.1",
+ "vfile": "^6.0.3"
+ }
+ },
+ "node_modules/@astrojs/prism": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz",
+ "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==",
+ "license": "MIT",
+ "dependencies": {
+ "prismjs": "^1.29.0"
+ },
+ "engines": {
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0"
+ }
+ },
+ "node_modules/@astrojs/svelte": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/@astrojs/svelte/-/svelte-7.0.3.tgz",
+ "integrity": "sha512-cUR9lQ7p3LPZnWpGb7uWBHVzF6wbRbCkyGgEG20EQTx4Am2OyACM/xqZ3KuDKZJQd3HcqKbjkWX/nTJePpNDRw==",
+ "license": "MIT",
+ "dependencies": {
+ "@sveltejs/vite-plugin-svelte": "^5.0.1",
+ "svelte2tsx": "^0.7.22",
+ "vite": "^6.0.5"
+ },
+ "engines": {
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0"
+ },
+ "peerDependencies": {
+ "astro": "^5.0.0",
+ "svelte": "^5.1.16",
+ "typescript": "^5.3.3"
+ }
+ },
+ "node_modules/@astrojs/telemetry": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.0.tgz",
+ "integrity": "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ci-info": "^4.1.0",
+ "debug": "^4.3.7",
+ "dlv": "^1.1.3",
+ "dset": "^3.1.4",
+ "is-docker": "^3.0.0",
+ "is-wsl": "^3.1.0",
+ "which-pm-runs": "^1.1.0"
+ },
+ "engines": {
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0"
+ }
+ },
+ "node_modules/@astrojs/yaml2ts": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@astrojs/yaml2ts/-/yaml2ts-0.2.2.tgz",
+ "integrity": "sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yaml": "^2.5.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
+ "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.25.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
+ "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz",
+ "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.26.3"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.26.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
+ "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.25.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@emmetio/abbreviation": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz",
+ "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@emmetio/scanner": "^1.0.4"
+ }
+ },
+ "node_modules/@emmetio/css-abbreviation": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz",
+ "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@emmetio/scanner": "^1.0.4"
+ }
+ },
+ "node_modules/@emmetio/css-parser": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.0.tgz",
+ "integrity": "sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@emmetio/stream-reader": "^2.2.0",
+ "@emmetio/stream-reader-utils": "^0.1.0"
+ }
+ },
+ "node_modules/@emmetio/html-matcher": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz",
+ "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@emmetio/scanner": "^1.0.0"
+ }
+ },
+ "node_modules/@emmetio/scanner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz",
+ "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@emmetio/stream-reader": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz",
+ "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@emmetio/stream-reader-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz",
+ "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
+ "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
+ "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
+ "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
+ "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
+ "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
+ "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
+ "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
+ "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+ "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
+ "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+ "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
+ "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.0.5"
+ }
+ },
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
+ "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-s390x": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
+ "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-s390x": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linux-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+ "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
+ "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+ "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+ }
+ },
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
+ "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/runtime": "^1.2.0"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-ia32": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
+ "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@img/sharp-win32-x64": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
+ "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@oslojs/encoding": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz",
+ "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==",
+ "license": "MIT"
+ },
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz",
+ "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3",
+ "is-glob": "^4.0.3",
+ "micromatch": "^4.0.5",
+ "node-addon-api": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.0",
+ "@parcel/watcher-darwin-arm64": "2.5.0",
+ "@parcel/watcher-darwin-x64": "2.5.0",
+ "@parcel/watcher-freebsd-x64": "2.5.0",
+ "@parcel/watcher-linux-arm-glibc": "2.5.0",
+ "@parcel/watcher-linux-arm-musl": "2.5.0",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.0",
+ "@parcel/watcher-linux-arm64-musl": "2.5.0",
+ "@parcel/watcher-linux-x64-glibc": "2.5.0",
+ "@parcel/watcher-linux-x64-musl": "2.5.0",
+ "@parcel/watcher-win32-arm64": "2.5.0",
+ "@parcel/watcher-win32-ia32": "2.5.0",
+ "@parcel/watcher-win32-x64": "2.5.0"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz",
+ "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz",
+ "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz",
+ "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz",
+ "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz",
+ "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz",
+ "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz",
+ "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz",
+ "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz",
+ "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz",
+ "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz",
+ "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz",
+ "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz",
+ "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/@rollup/plugin-yaml": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-yaml/-/plugin-yaml-4.1.2.tgz",
+ "integrity": "sha512-RpupciIeZMUqhgFE97ba0s98mOFS7CWzN3EJNhJkqSv9XLlWYtwVdtE6cDw6ASOF/sZVFS7kRJXftaqM2Vakdw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "js-yaml": "^4.1.0",
+ "tosource": "^2.0.0-alpha.3"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
+ "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz",
+ "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz",
+ "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz",
+ "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz",
+ "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz",
+ "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz",
+ "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz",
+ "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz",
+ "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz",
+ "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz",
+ "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz",
+ "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz",
+ "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz",
+ "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz",
+ "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz",
+ "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz",
+ "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz",
+ "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz",
+ "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz",
+ "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@shikijs/core": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.25.1.tgz",
+ "integrity": "sha512-0j5k3ZkLTQViOuNzPVyWGoW1zgH3kiFdUT/JOCkTm7TU74mz+dF+NID+YoiCBzHQxgsDpcGYPjKDJRcuVLSt4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/engine-javascript": "1.25.1",
+ "@shikijs/engine-oniguruma": "1.25.1",
+ "@shikijs/types": "1.25.1",
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "@types/hast": "^3.0.4",
+ "hast-util-to-html": "^9.0.4"
+ }
+ },
+ "node_modules/@shikijs/engine-javascript": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.25.1.tgz",
+ "integrity": "sha512-zQ7UWKnRCfD/Q1M+XOSyjsbhpE0qv8LUnmn82HYCeOsgAHgUZGEDIQ63bbuK3kU5sQg+2CtI+dPfOqD/mjSY9w==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.25.1",
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "oniguruma-to-es": "0.10.0"
+ }
+ },
+ "node_modules/@shikijs/engine-oniguruma": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.25.1.tgz",
+ "integrity": "sha512-iKPMh3H+0USHtWfZ1irfMTH6tGmIUFSnqt3E2K8BgI1VEsqiPh0RYkG2WTwzNiM1/WHN4FzYx/nrKR7PDHiRyw==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.25.1",
+ "@shikijs/vscode-textmate": "^9.3.1"
+ }
+ },
+ "node_modules/@shikijs/langs": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.25.1.tgz",
+ "integrity": "sha512-hdYjq9aRJplAzGe2qF51PR9IDgEoyGb4IkXvr3Ts6lEdg4Z8M/kdknKRo2EIuv3IR/aKkJXTlBQRM+wr3t20Ew==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.25.1"
+ }
+ },
+ "node_modules/@shikijs/themes": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.25.1.tgz",
+ "integrity": "sha512-JO0lDn4LgGqg5QKvgich5ScUmC2okK+LxM9a3iLUH7YMeI2c8UGXThuJv6sZduS7pdJbYQHPrvWq9t/V4GhpbQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/types": "1.25.1"
+ }
+ },
+ "node_modules/@shikijs/types": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.25.1.tgz",
+ "integrity": "sha512-dceqFUoO95eY4tpOj3OGq8wE8EgJ4ey6Me1HQEu5UbwIYszFndEll/bjlB8Kp9wl4fx3uM7n4+y9XCYuDBmcXA==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/@shikijs/vscode-textmate": {
+ "version": "9.3.1",
+ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.1.tgz",
+ "integrity": "sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==",
+ "license": "MIT"
+ },
+ "node_modules/@sveltejs/vite-plugin-svelte": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.0.3.tgz",
+ "integrity": "sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==",
+ "license": "MIT",
+ "dependencies": {
+ "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1",
+ "debug": "^4.4.0",
+ "deepmerge": "^4.3.1",
+ "kleur": "^4.1.5",
+ "magic-string": "^0.30.15",
+ "vitefu": "^1.0.4"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22"
+ },
+ "peerDependencies": {
+ "svelte": "^5.0.0",
+ "vite": "^6.0.0"
+ }
+ },
+ "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz",
+ "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.7"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22"
+ },
+ "peerDependencies": {
+ "@sveltejs/vite-plugin-svelte": "^5.0.0",
+ "svelte": "^5.0.0",
+ "vite": "^6.0.0"
+ }
+ },
+ "node_modules/@types/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/debug": {
+ "version": "4.1.12",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
+ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/hast": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/mdast": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
+ "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/ms": {
+ "version": "0.7.34",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
+ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
+ "license": "MIT"
+ },
+ "node_modules/@types/nlcst": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz",
+ "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "22.10.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.3.tgz",
+ "integrity": "sha512-DifAyw4BkrufCILvD3ucnuN8eydUfc/C1GlyrnI+LK6543w5/L3VeVgf05o3B4fqSXP1dKYLOZsKfutpxPzZrw==",
+ "devOptional": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.20.0"
+ }
+ },
+ "node_modules/@types/unist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
+ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==",
+ "license": "MIT"
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz",
+ "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==",
+ "license": "ISC"
+ },
+ "node_modules/@volar/kit": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.11.tgz",
+ "integrity": "sha512-ups5RKbMzMCr6RKafcCqDRnJhJDNWqo2vfekwOAj6psZ15v5TlcQFQAyokQJ3wZxVkzxrQM+TqTRDENfQEXpmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-service": "2.4.11",
+ "@volar/typescript": "2.4.11",
+ "typesafe-path": "^0.2.2",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/@volar/language-core": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.11.tgz",
+ "integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/source-map": "2.4.11"
+ }
+ },
+ "node_modules/@volar/language-server": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.11.tgz",
+ "integrity": "sha512-W9P8glH1M8LGREJ7yHRCANI5vOvTrRO15EMLdmh5WNF9sZYSEbQxiHKckZhvGIkbeR1WAlTl3ORTrJXUghjk7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-core": "2.4.11",
+ "@volar/language-service": "2.4.11",
+ "@volar/typescript": "2.4.11",
+ "path-browserify": "^1.0.1",
+ "request-light": "^0.7.0",
+ "vscode-languageserver": "^9.0.1",
+ "vscode-languageserver-protocol": "^3.17.5",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
+ }
+ },
+ "node_modules/@volar/language-service": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.11.tgz",
+ "integrity": "sha512-KIb6g8gjUkS2LzAJ9bJCLIjfsJjeRtmXlu7b2pDFGD3fNqdbC53cCAKzgWDs64xtQVKYBU13DLWbtSNFtGuMLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-core": "2.4.11",
+ "vscode-languageserver-protocol": "^3.17.5",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
+ }
+ },
+ "node_modules/@volar/source-map": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.11.tgz",
+ "integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@volar/typescript": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.11.tgz",
+ "integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@volar/language-core": "2.4.11",
+ "path-browserify": "^1.0.1",
+ "vscode-uri": "^3.0.8"
+ }
+ },
+ "node_modules/@vscode/emmet-helper": {
+ "version": "2.8.4",
+ "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.8.4.tgz",
+ "integrity": "sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emmet": "^2.3.0",
+ "jsonc-parser": "^2.3.0",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.15.1",
+ "vscode-nls": "^5.0.0",
+ "vscode-uri": "^2.1.2"
+ }
+ },
+ "node_modules/@vscode/emmet-helper/node_modules/vscode-uri": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz",
+ "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vscode/l10n": {
+ "version": "0.0.18",
+ "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz",
+ "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/acorn": {
+ "version": "8.14.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+ "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-typescript": {
+ "version": "1.4.13",
+ "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz",
+ "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==",
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": ">=8.9.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-align": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
+ "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
+ "node_modules/ansi-align/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-align/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/ansi-align/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-align/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
+ "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/anymatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/aria-query": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/array-iterate": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz",
+ "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/astro": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/astro/-/astro-5.1.2.tgz",
+ "integrity": "sha512-+U5lXPEJZ6cQx0botGbPhzN6XGWRgDtXgy/RUkpTmUj18LW6pbzYo0O0k3hFWOazlI039bZ+4P2e/oSNlKzm0Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@astrojs/compiler": "^2.10.3",
+ "@astrojs/internal-helpers": "0.4.2",
+ "@astrojs/markdown-remark": "6.0.1",
+ "@astrojs/telemetry": "3.2.0",
+ "@oslojs/encoding": "^1.1.0",
+ "@rollup/pluginutils": "^5.1.3",
+ "@types/cookie": "^0.6.0",
+ "acorn": "^8.14.0",
+ "aria-query": "^5.3.2",
+ "axobject-query": "^4.1.0",
+ "boxen": "8.0.1",
+ "ci-info": "^4.1.0",
+ "clsx": "^2.1.1",
+ "common-ancestor-path": "^1.0.1",
+ "cookie": "^0.7.2",
+ "cssesc": "^3.0.0",
+ "debug": "^4.3.7",
+ "deterministic-object-hash": "^2.0.2",
+ "devalue": "^5.1.1",
+ "diff": "^5.2.0",
+ "dlv": "^1.1.3",
+ "dset": "^3.1.4",
+ "es-module-lexer": "^1.5.4",
+ "esbuild": "^0.21.5",
+ "estree-walker": "^3.0.3",
+ "fast-glob": "^3.3.2",
+ "flattie": "^1.1.1",
+ "github-slugger": "^2.0.0",
+ "html-escaper": "^3.0.3",
+ "http-cache-semantics": "^4.1.1",
+ "js-yaml": "^4.1.0",
+ "kleur": "^4.1.5",
+ "magic-string": "^0.30.14",
+ "magicast": "^0.3.5",
+ "micromatch": "^4.0.8",
+ "mrmime": "^2.0.0",
+ "neotraverse": "^0.6.18",
+ "p-limit": "^6.1.0",
+ "p-queue": "^8.0.1",
+ "preferred-pm": "^4.0.0",
+ "prompts": "^2.4.2",
+ "rehype": "^13.0.2",
+ "semver": "^7.6.3",
+ "shiki": "^1.23.1",
+ "tinyexec": "^0.3.1",
+ "tsconfck": "^3.1.4",
+ "ultrahtml": "^1.5.3",
+ "unist-util-visit": "^5.0.0",
+ "unstorage": "^1.14.0",
+ "vfile": "^6.0.3",
+ "vite": "^6.0.5",
+ "vitefu": "^1.0.4",
+ "which-pm": "^3.0.0",
+ "xxhash-wasm": "^1.1.0",
+ "yargs-parser": "^21.1.1",
+ "yocto-spinner": "^0.1.0",
+ "zod": "^3.23.8",
+ "zod-to-json-schema": "^3.23.5",
+ "zod-to-ts": "^1.2.0"
+ },
+ "bin": {
+ "astro": "astro.js"
+ },
+ "engines": {
+ "node": "^18.17.1 || ^20.3.0 || >=22.0.0",
+ "npm": ">=9.6.5",
+ "pnpm": ">=7.1.0"
+ },
+ "optionalDependencies": {
+ "sharp": "^0.33.3"
+ }
+ },
+ "node_modules/astro/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/axobject-query": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/bail": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
+ "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/base-64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz",
+ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==",
+ "license": "MIT"
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz",
+ "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^8.0.0",
+ "chalk": "^5.3.0",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^7.2.0",
+ "type-fest": "^4.21.0",
+ "widest-line": "^5.0.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz",
+ "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ccount": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
+ "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
+ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-html4": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz",
+ "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
+ "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz",
+ "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "license": "MIT",
+ "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_modules/code-red/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=12.5.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/colord": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
+ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==",
+ "license": "MIT"
+ },
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/common-ancestor-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz",
+ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==",
+ "license": "ISC"
+ },
+ "node_modules/consola": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-3.3.3.tgz",
+ "integrity": "sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.10.0"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-es": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz",
+ "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==",
+ "license": "MIT"
+ },
+ "node_modules/crossws": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.1.tgz",
+ "integrity": "sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==",
+ "license": "MIT",
+ "dependencies": {
+ "uncrypto": "^0.1.3"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+ "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decode-named-character-reference": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
+ "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/dedent-js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz",
+ "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==",
+ "license": "MIT"
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/defu": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
+ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
+ "license": "MIT"
+ },
+ "node_modules/dequal": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
+ "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/destr": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz",
+ "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==",
+ "license": "MIT"
+ },
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/deterministic-object-hash": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz",
+ "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "base-64": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/devalue": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz",
+ "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==",
+ "license": "MIT"
+ },
+ "node_modules/devlop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
+ "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==",
+ "license": "MIT",
+ "dependencies": {
+ "dequal": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "license": "MIT"
+ },
+ "node_modules/dset": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz",
+ "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/emmet": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz",
+ "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==",
+ "dev": true,
+ "license": "MIT",
+ "workspaces": [
+ "./packages/scanner",
+ "./packages/abbreviation",
+ "./packages/css-abbreviation",
+ "./"
+ ],
+ "dependencies": {
+ "@emmetio/abbreviation": "^2.3.3",
+ "@emmetio/css-abbreviation": "^2.1.8"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "10.4.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
+ "license": "MIT"
+ },
+ "node_modules/emoji-regex-xs": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
+ "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==",
+ "license": "MIT"
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
+ "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
+ "license": "MIT"
+ },
+ "node_modules/esbuild": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/esm-env": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.1.tgz",
+ "integrity": "sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==",
+ "license": "MIT"
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esrap": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.3.2.tgz",
+ "integrity": "sha512-C4PXusxYhFT98GjLSmb20k9PREuUdporer50dhzGuJu9IJXktbMddVCMLAERl5dAHyAi73GWWCE4FVHGP1794g==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "license": "MIT"
+ },
+ "node_modules/eventemitter3": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz",
+ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==",
+ "license": "MIT"
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-uri": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz",
+ "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fastq": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
+ "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz",
+ "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fflate": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
+ "license": "MIT"
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up-simple": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz",
+ "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-yarn-workspace-root2": {
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz",
+ "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "micromatch": "^4.0.2",
+ "pkg-dir": "^4.2.0"
+ }
+ },
+ "node_modules/flattie": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz",
+ "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/fslightbox": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/fslightbox/-/fslightbox-3.4.2.tgz",
+ "integrity": "sha512-vrPUNgFBioRPzc54BHnryR5yML1vlJYaEP/y1hpYFl/EKXsv76WhEB83iDr6Fr1hUvUBTnfW8ggyKIdARw9xZw==",
+ "license": "MIT"
+ },
+ "node_modules/get-east-asian-width": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
+ "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/github-slugger": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz",
+ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==",
+ "license": "ISC"
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/globrex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz",
+ "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/h3": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/h3/-/h3-1.13.0.tgz",
+ "integrity": "sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==",
+ "license": "MIT",
+ "dependencies": {
+ "cookie-es": "^1.2.2",
+ "crossws": ">=0.2.0 <0.4.0",
+ "defu": "^6.1.4",
+ "destr": "^2.0.3",
+ "iron-webcrypto": "^1.2.1",
+ "ohash": "^1.1.4",
+ "radix3": "^1.1.2",
+ "ufo": "^1.5.4",
+ "uncrypto": "^0.1.3",
+ "unenv": "^1.10.0"
+ }
+ },
+ "node_modules/hast-util-from-html": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz",
+ "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "devlop": "^1.1.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "parse5": "^7.0.0",
+ "vfile": "^6.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-from-parse5": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.2.tgz",
+ "integrity": "sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "hastscript": "^9.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^6.0.0",
+ "vfile-location": "^5.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-is-element": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz",
+ "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-parse-selector": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz",
+ "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-raw": {
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz",
+ "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "hast-util-from-parse5": "^8.0.0",
+ "hast-util-to-parse5": "^8.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "parse5": "^7.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-html": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz",
+ "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^3.0.0",
+ "html-void-elements": "^3.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "zwitch": "^2.0.4"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-parse5": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
+ "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "devlop": "^1.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "web-namespaces": "^2.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-to-text": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz",
+ "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/unist": "^3.0.0",
+ "hast-util-is-element": "^3.0.0",
+ "unist-util-find-after": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hast-util-whitespace": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz",
+ "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/hastscript": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz",
+ "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-parse-selector": "^4.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
+ "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==",
+ "license": "MIT"
+ },
+ "node_modules/html-void-elements": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz",
+ "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
+ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/immutable": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz",
+ "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==",
+ "license": "MIT"
+ },
+ "node_modules/import-meta-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
+ "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/iron-webcrypto": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz",
+ "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/brc-dd"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/is-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==",
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-reference": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
+ "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.6"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
+ "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonc-parser": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz",
+ "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/load-yaml-file": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz",
+ "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.5",
+ "js-yaml": "^3.13.0",
+ "pify": "^4.0.1",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/load-yaml-file/node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/load-yaml-file/node_modules/js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/locate-character": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
+ "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
+ "license": "MIT"
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/longest-streak": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz",
+ "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/magicast": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
+ "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.25.4",
+ "@babel/types": "^7.25.4",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/markdown-table": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz",
+ "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/mdast-util-definitions": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz",
+ "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz",
+ "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "escape-string-regexp": "^5.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
+ "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark": "^4.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz",
+ "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-gfm-autolink-literal": "^2.0.0",
+ "mdast-util-gfm-footnote": "^2.0.0",
+ "mdast-util-gfm-strikethrough": "^2.0.0",
+ "mdast-util-gfm-table": "^2.0.0",
+ "mdast-util-gfm-task-list-item": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-autolink-literal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz",
+ "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "ccount": "^2.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-find-and-replace": "^3.0.0",
+ "micromark-util-character": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-footnote": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz",
+ "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.1.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-strikethrough": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz",
+ "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz",
+ "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "markdown-table": "^3.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-task-list-item": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz",
+ "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "devlop": "^1.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-phrasing": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz",
+ "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
+ "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "@ungap/structured-clone": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-position": "^5.0.0",
+ "unist-util-visit": "^5.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz",
+ "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "@types/unist": "^3.0.0",
+ "longest-streak": "^3.0.0",
+ "mdast-util-phrasing": "^4.0.0",
+ "mdast-util-to-string": "^4.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-decode-string": "^2.0.0",
+ "unist-util-visit": "^5.0.0",
+ "zwitch": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz",
+ "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromark": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz",
+ "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz",
+ "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-destination": "^2.0.0",
+ "micromark-factory-label": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-factory-title": "^2.0.0",
+ "micromark-factory-whitespace": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-html-tag-name": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-subtokenize": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz",
+ "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-extension-gfm-autolink-literal": "^2.0.0",
+ "micromark-extension-gfm-footnote": "^2.0.0",
+ "micromark-extension-gfm-strikethrough": "^2.0.0",
+ "micromark-extension-gfm-table": "^2.0.0",
+ "micromark-extension-gfm-tagfilter": "^2.0.0",
+ "micromark-extension-gfm-task-list-item": "^2.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz",
+ "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-footnote": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz",
+ "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-normalize-identifier": "^2.0.0",
+ "micromark-util-sanitize-uri": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz",
+ "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-classify-character": "^2.0.0",
+ "micromark-util-resolve-all": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz",
+ "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz",
+ "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz",
+ "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==",
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
+ "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz",
+ "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
+ "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz",
+ "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz",
+ "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz",
+ "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-chunked": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz",
+ "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz",
+ "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz",
+ "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz",
+ "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz",
+ "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-decode-numeric-character-reference": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz",
+ "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
+ "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz",
+ "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz",
+ "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz",
+ "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-encode": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz",
+ "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "devlop": "^1.0.0",
+ "micromark-util-chunked": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz",
+ "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromark-util-types": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
+ "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/mrmime": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
+ "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/muggle-string": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
+ "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.8",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
+ "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/neotraverse": {
+ "version": "0.6.18",
+ "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz",
+ "integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/nlcst-to-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz",
+ "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "license": "MIT",
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/node-fetch-native": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
+ "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==",
+ "license": "MIT"
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ofetch": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz",
+ "integrity": "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==",
+ "license": "MIT",
+ "dependencies": {
+ "destr": "^2.0.3",
+ "node-fetch-native": "^1.6.4",
+ "ufo": "^1.5.4"
+ }
+ },
+ "node_modules/ohash": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz",
+ "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==",
+ "license": "MIT"
+ },
+ "node_modules/oniguruma-to-es": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.10.0.tgz",
+ "integrity": "sha512-zapyOUOCJxt+xhiNRPPMtfJkHGsZ98HHB9qJEkdT8BGytO/+kpe4m1Ngf0MzbzTmhacn11w9yGeDP6tzDhnCdg==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex-xs": "^1.0.0",
+ "regex": "^5.1.1",
+ "regex-recursion": "^5.1.1"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz",
+ "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==",
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-locate/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-queue": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz",
+ "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==",
+ "license": "MIT",
+ "dependencies": {
+ "eventemitter3": "^5.0.1",
+ "p-timeout": "^6.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-timeout": {
+ "version": "6.1.4",
+ "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz",
+ "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-latin": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz",
+ "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "@types/unist": "^3.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unist-util-modify-children": "^4.0.0",
+ "unist-util-visit-children": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.2.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
+ "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^4.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "license": "MIT",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "license": "MIT"
+ },
+ "node_modules/periscopic": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
+ "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^3.0.0",
+ "is-reference": "^3.0.0"
+ }
+ },
+ "node_modules/periscopic/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.49",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
+ "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/preferred-pm": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-4.0.0.tgz",
+ "integrity": "sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==",
+ "license": "MIT",
+ "dependencies": {
+ "find-up-simple": "^1.0.0",
+ "find-yarn-workspace-root2": "1.2.16",
+ "which-pm": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18.12"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-plugin-svelte": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.2.tgz",
+ "integrity": "sha512-kRPjH8wSj2iu+dO+XaUv4vD8qr5mdDmlak3IT/7AOgGIMRG86z/EHOLauFcClKEnOUf4A4nOA7sre5KrJD4Raw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "prettier": "^3.0.0",
+ "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prompts/node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/property-information": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
+ "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/radix3": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz",
+ "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==",
+ "license": "MIT"
+ },
+ "node_modules/readdirp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
+ "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/regex": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz",
+ "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==",
+ "license": "MIT",
+ "dependencies": {
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-recursion": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz",
+ "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==",
+ "license": "MIT",
+ "dependencies": {
+ "regex": "^5.1.1",
+ "regex-utilities": "^2.3.0"
+ }
+ },
+ "node_modules/regex-utilities": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz",
+ "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==",
+ "license": "MIT"
+ },
+ "node_modules/rehype": {
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz",
+ "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "rehype-parse": "^9.0.0",
+ "rehype-stringify": "^10.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-parse": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz",
+ "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-from-html": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-raw": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
+ "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-raw": "^9.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/rehype-stringify": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz",
+ "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "hast-util-to-html": "^9.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-gfm": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz",
+ "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-gfm": "^3.0.0",
+ "micromark-extension-gfm": "^3.0.0",
+ "remark-parse": "^11.0.0",
+ "remark-stringify": "^11.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
+ "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-from-markdown": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz",
+ "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/hast": "^3.0.0",
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-hast": "^13.0.0",
+ "unified": "^11.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-smartypants": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz",
+ "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==",
+ "license": "MIT",
+ "dependencies": {
+ "retext": "^9.0.0",
+ "retext-smartypants": "^6.0.0",
+ "unified": "^11.0.4",
+ "unist-util-visit": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/remark-stringify": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz",
+ "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/mdast": "^4.0.0",
+ "mdast-util-to-markdown": "^2.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/request-light": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz",
+ "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/retext": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz",
+ "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "retext-latin": "^4.0.0",
+ "retext-stringify": "^4.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-latin": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz",
+ "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "parse-latin": "^7.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-smartypants": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz",
+ "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/retext-stringify": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz",
+ "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/nlcst": "^2.0.0",
+ "nlcst-to-string": "^4.0.0",
+ "unified": "^11.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "4.29.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz",
+ "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.6"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.29.1",
+ "@rollup/rollup-android-arm64": "4.29.1",
+ "@rollup/rollup-darwin-arm64": "4.29.1",
+ "@rollup/rollup-darwin-x64": "4.29.1",
+ "@rollup/rollup-freebsd-arm64": "4.29.1",
+ "@rollup/rollup-freebsd-x64": "4.29.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.29.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.29.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.29.1",
+ "@rollup/rollup-linux-arm64-musl": "4.29.1",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.29.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.29.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.29.1",
+ "@rollup/rollup-linux-x64-gnu": "4.29.1",
+ "@rollup/rollup-linux-x64-musl": "4.29.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.29.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.29.1",
+ "@rollup/rollup-win32-x64-msvc": "4.29.1",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/sass": {
+ "version": "1.83.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.0.tgz",
+ "integrity": "sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==",
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/sharp": {
+ "version": "0.33.5",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
+ "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.3",
+ "semver": "^7.6.3"
+ },
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-darwin-arm64": "0.33.5",
+ "@img/sharp-darwin-x64": "0.33.5",
+ "@img/sharp-libvips-darwin-arm64": "1.0.4",
+ "@img/sharp-libvips-darwin-x64": "1.0.4",
+ "@img/sharp-libvips-linux-arm": "1.0.5",
+ "@img/sharp-libvips-linux-arm64": "1.0.4",
+ "@img/sharp-libvips-linux-s390x": "1.0.4",
+ "@img/sharp-libvips-linux-x64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+ "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+ "@img/sharp-linux-arm": "0.33.5",
+ "@img/sharp-linux-arm64": "0.33.5",
+ "@img/sharp-linux-s390x": "0.33.5",
+ "@img/sharp-linux-x64": "0.33.5",
+ "@img/sharp-linuxmusl-arm64": "0.33.5",
+ "@img/sharp-linuxmusl-x64": "0.33.5",
+ "@img/sharp-wasm32": "0.33.5",
+ "@img/sharp-win32-ia32": "0.33.5",
+ "@img/sharp-win32-x64": "0.33.5"
+ }
+ },
+ "node_modules/sharp/node_modules/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shiki": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.25.1.tgz",
+ "integrity": "sha512-/1boRvNYwRW3GLG9Y6dXdnZ/Ha+J5T/5y3hV7TGQUcDSBM185D3FCbXlz2eTGNKG2iWCbWqo+P0yhGKZ4/CUrw==",
+ "license": "MIT",
+ "dependencies": {
+ "@shikijs/core": "1.25.1",
+ "@shikijs/engine-javascript": "1.25.1",
+ "@shikijs/engine-oniguruma": "1.25.1",
+ "@shikijs/langs": "1.25.1",
+ "@shikijs/themes": "1.25.1",
+ "@shikijs/types": "1.25.1",
+ "@shikijs/vscode-textmate": "^9.3.1",
+ "@types/hast": "^3.0.4"
+ }
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stringify-entities": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
+ "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==",
+ "license": "MIT",
+ "dependencies": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^3.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/svelte": {
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.16.0.tgz",
+ "integrity": "sha512-Ygqsiac6UogVED2ruKclU+pOeMThxWtp9LG+li7BXeDKC2paVIsRTMkNmcON4Zejerd1s5sZHWx6ZtU85xklVg==",
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.3.0",
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@types/estree": "^1.0.5",
+ "acorn": "^8.12.1",
+ "acorn-typescript": "^1.4.13",
+ "aria-query": "^5.3.1",
+ "axobject-query": "^4.1.0",
+ "clsx": "^2.1.1",
+ "esm-env": "^1.2.1",
+ "esrap": "^1.3.2",
+ "is-reference": "^3.0.3",
+ "locate-character": "^3.0.0",
+ "magic-string": "^0.30.11",
+ "zimmerframe": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/svelte-awesome-color-picker": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/svelte-awesome-color-picker/-/svelte-awesome-color-picker-3.1.4.tgz",
+ "integrity": "sha512-tiFakxvSpCwodOSFW6CflnLVSldSlDY77rDipHfW7hvB+4gTP3y6uO+Dm9O9e7P5N7K+CNyNjjdjbZOHYkMyNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "colord": "^2.9.3",
+ "svelte-awesome-slider": "^1.1.2"
+ },
+ "peerDependencies": {
+ "svelte": "^3.55.1 || ^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/svelte-awesome-slider": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/svelte-awesome-slider/-/svelte-awesome-slider-1.1.2.tgz",
+ "integrity": "sha512-HFIWwq6rtX6aXyc6ns2R0P6pDLYIr6nRjTPyAddAiTAgZqsohAoEfOEwKKqMmZ6Q+CH48zzcFdyo6lFkBJvyQw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/svelte-language-server": {
+ "version": "0.17.8",
+ "resolved": "https://registry.npmjs.org/svelte-language-server/-/svelte-language-server-0.17.8.tgz",
+ "integrity": "sha512-V/UR0kEdlQwF4azfzhn47qimzfChsBHAPEGBMjFBfxWCv+Co9yv/Uv2za1OhdI+6vcAMpSRfGr+PauLrqgegew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "@vscode/emmet-helper": "2.8.4",
+ "chokidar": "^4.0.1",
+ "estree-walker": "^2.0.1",
+ "fdir": "^6.2.0",
+ "globrex": "^0.1.2",
+ "lodash": "^4.17.21",
+ "prettier": "~3.3.3",
+ "prettier-plugin-svelte": "^3.3.0",
+ "svelte": "^4.2.19",
+ "svelte2tsx": "~0.7.25",
+ "typescript": "~5.6.3",
+ "typescript-auto-import-cache": "^0.3.5",
+ "vscode-css-languageservice": "~6.3.0",
+ "vscode-html-languageservice": "~5.3.0",
+ "vscode-languageserver": "9.0.1",
+ "vscode-languageserver-protocol": "3.17.5",
+ "vscode-languageserver-types": "3.17.5",
+ "vscode-uri": "~3.0.0"
+ },
+ "bin": {
+ "svelteserver": "bin/server.js"
+ },
+ "engines": {
+ "node": ">= 18.0.0"
+ }
+ },
+ "node_modules/svelte-language-server/node_modules/svelte": {
+ "version": "4.2.19",
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz",
+ "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==",
+ "dev": true,
+ "license": "MIT",
+ "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",
+ "locate-character": "^3.0.0",
+ "magic-string": "^0.30.4",
+ "periscopic": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/svelte-language-server/node_modules/svelte/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/svelte-language-server/node_modules/typescript": {
+ "version": "5.6.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
+ "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/svelte2tsx": {
+ "version": "0.7.31",
+ "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.31.tgz",
+ "integrity": "sha512-exrN1o9mdCLAA7hTCudz731FIxomH/0SN9ZIX+WrY/XnlLuno/NNC1PF6JXPZVqp/4sMMDKteqyKoG44hliljQ==",
+ "license": "MIT",
+ "dependencies": {
+ "dedent-js": "^1.0.1",
+ "pascal-case": "^3.1.1"
+ },
+ "peerDependencies": {
+ "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0",
+ "typescript": "^4.9.4 || ^5.0.0"
+ }
+ },
+ "node_modules/swiper": {
+ "version": "11.1.15",
+ "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.1.15.tgz",
+ "integrity": "sha512-IzWeU34WwC7gbhjKsjkImTuCRf+lRbO6cnxMGs88iVNKDwV+xQpBCJxZ4bNH6gSrIbbyVJ1kuGzo3JTtz//CBw==",
+ "funding": [
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/swiperjs"
+ },
+ {
+ "type": "open_collective",
+ "url": "http://opencollective.com/swiper"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.7.0"
+ }
+ },
+ "node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "license": "MIT"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tosource": {
+ "version": "2.0.0-alpha.3",
+ "resolved": "https://registry.npmjs.org/tosource/-/tosource-2.0.0-alpha.3.tgz",
+ "integrity": "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/trough": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
+ "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/tsconfck": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.4.tgz",
+ "integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==",
+ "license": "MIT",
+ "bin": {
+ "tsconfck": "bin/tsconfck.js"
+ },
+ "engines": {
+ "node": "^18 || >=20"
+ },
+ "peerDependencies": {
+ "typescript": "^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/type-fest": {
+ "version": "4.31.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz",
+ "integrity": "sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typesafe-path": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz",
+ "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/typescript": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
+ "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-auto-import-cache": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.5.tgz",
+ "integrity": "sha512-fAIveQKsoYj55CozUiBoj4b/7WpN0i4o74wiGY5JVUEoD0XiqDk1tJqTEjgzL2/AizKQrXxyRosSebyDzBZKjw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.3.8"
+ }
+ },
+ "node_modules/typescript-svelte-plugin": {
+ "version": "0.3.45",
+ "resolved": "https://registry.npmjs.org/typescript-svelte-plugin/-/typescript-svelte-plugin-0.3.45.tgz",
+ "integrity": "sha512-65OpqjDdn05Ici3lgZnhmljDKLJb1Mulz5SmUQUFKXDF1Zhs5CQgdp63PkaDghmwhZFxfu/ut9Q8oGD1CKbJow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "svelte2tsx": "~0.7.25"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
+ "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
+ "license": "MIT"
+ },
+ "node_modules/ultrahtml": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz",
+ "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==",
+ "license": "MIT"
+ },
+ "node_modules/uncrypto": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz",
+ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==",
+ "license": "MIT"
+ },
+ "node_modules/undici-types": {
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/unenv": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.10.0.tgz",
+ "integrity": "sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==",
+ "license": "MIT",
+ "dependencies": {
+ "consola": "^3.2.3",
+ "defu": "^6.1.4",
+ "mime": "^3.0.0",
+ "node-fetch-native": "^1.6.4",
+ "pathe": "^1.1.2"
+ }
+ },
+ "node_modules/unified": {
+ "version": "11.0.5",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
+ "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "bail": "^2.0.0",
+ "devlop": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-find-after": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz",
+ "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
+ "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-modify-children": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz",
+ "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "array-iterate": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
+ "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove-position": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz",
+ "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-visit": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
+ "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-children": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz",
+ "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
+ "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unstorage": {
+ "version": "1.14.4",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.14.4.tgz",
+ "integrity": "sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "^3.1.3",
+ "chokidar": "^3.6.0",
+ "destr": "^2.0.3",
+ "h3": "^1.13.0",
+ "lru-cache": "^10.4.3",
+ "node-fetch-native": "^1.6.4",
+ "ofetch": "^1.4.1",
+ "ufo": "^1.5.4"
+ },
+ "peerDependencies": {
+ "@azure/app-configuration": "^1.8.0",
+ "@azure/cosmos": "^4.2.0",
+ "@azure/data-tables": "^13.3.0",
+ "@azure/identity": "^4.5.0",
+ "@azure/keyvault-secrets": "^4.9.0",
+ "@azure/storage-blob": "^12.26.0",
+ "@capacitor/preferences": "^6.0.3",
+ "@deno/kv": ">=0.8.4",
+ "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0",
+ "@planetscale/database": "^1.19.0",
+ "@upstash/redis": "^1.34.3",
+ "@vercel/blob": ">=0.27.0",
+ "@vercel/kv": "^1.0.1",
+ "aws4fetch": "^1.0.20",
+ "db0": ">=0.2.1",
+ "idb-keyval": "^6.2.1",
+ "ioredis": "^5.4.2",
+ "uploadthing": "^7.4.1"
+ },
+ "peerDependenciesMeta": {
+ "@azure/app-configuration": {
+ "optional": true
+ },
+ "@azure/cosmos": {
+ "optional": true
+ },
+ "@azure/data-tables": {
+ "optional": true
+ },
+ "@azure/identity": {
+ "optional": true
+ },
+ "@azure/keyvault-secrets": {
+ "optional": true
+ },
+ "@azure/storage-blob": {
+ "optional": true
+ },
+ "@capacitor/preferences": {
+ "optional": true
+ },
+ "@deno/kv": {
+ "optional": true
+ },
+ "@netlify/blobs": {
+ "optional": true
+ },
+ "@planetscale/database": {
+ "optional": true
+ },
+ "@upstash/redis": {
+ "optional": true
+ },
+ "@vercel/blob": {
+ "optional": true
+ },
+ "@vercel/kv": {
+ "optional": true
+ },
+ "aws4fetch": {
+ "optional": true
+ },
+ "db0": {
+ "optional": true
+ },
+ "idb-keyval": {
+ "optional": true
+ },
+ "ioredis": {
+ "optional": true
+ },
+ "uploadthing": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unstorage/node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/unstorage/node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/unstorage/node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
+ "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-location": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz",
+ "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "vfile": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
+ "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-stringify-position": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vite": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.6.tgz",
+ "integrity": "sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==",
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.24.2",
+ "postcss": "^8.4.49",
+ "rollup": "^4.23.0"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/aix-ppc64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
+ "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
+ "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
+ "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/android-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
+ "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
+ "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/darwin-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
+ "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
+ "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
+ "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
+ "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ia32": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
+ "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-loong64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
+ "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
+ "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
+ "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
+ "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-s390x": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
+ "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/linux-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
+ "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/sunos-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
+ "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
+ "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-ia32": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
+ "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
+ "cpu": [
+ "ia32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/@esbuild/win32-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
+ "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/vite/node_modules/esbuild": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
+ "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.24.2",
+ "@esbuild/android-arm": "0.24.2",
+ "@esbuild/android-arm64": "0.24.2",
+ "@esbuild/android-x64": "0.24.2",
+ "@esbuild/darwin-arm64": "0.24.2",
+ "@esbuild/darwin-x64": "0.24.2",
+ "@esbuild/freebsd-arm64": "0.24.2",
+ "@esbuild/freebsd-x64": "0.24.2",
+ "@esbuild/linux-arm": "0.24.2",
+ "@esbuild/linux-arm64": "0.24.2",
+ "@esbuild/linux-ia32": "0.24.2",
+ "@esbuild/linux-loong64": "0.24.2",
+ "@esbuild/linux-mips64el": "0.24.2",
+ "@esbuild/linux-ppc64": "0.24.2",
+ "@esbuild/linux-riscv64": "0.24.2",
+ "@esbuild/linux-s390x": "0.24.2",
+ "@esbuild/linux-x64": "0.24.2",
+ "@esbuild/netbsd-arm64": "0.24.2",
+ "@esbuild/netbsd-x64": "0.24.2",
+ "@esbuild/openbsd-arm64": "0.24.2",
+ "@esbuild/openbsd-x64": "0.24.2",
+ "@esbuild/sunos-x64": "0.24.2",
+ "@esbuild/win32-arm64": "0.24.2",
+ "@esbuild/win32-ia32": "0.24.2",
+ "@esbuild/win32-x64": "0.24.2"
+ }
+ },
+ "node_modules/vitefu": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.5.tgz",
+ "integrity": "sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==",
+ "license": "MIT",
+ "workspaces": [
+ "tests/deps/*",
+ "tests/projects/*"
+ ],
+ "peerDependencies": {
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
+ },
+ "peerDependenciesMeta": {
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-css": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.62.tgz",
+ "integrity": "sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-css-languageservice": "^6.3.0",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-emmet": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.62.tgz",
+ "integrity": "sha512-U4dxWDBWz7Pi4plpbXf4J4Z/ss6kBO3TYrACxWNsE29abu75QzVS0paxDDhI6bhqpbDFXlpsDhZ9aXVFpnfGRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@emmetio/css-parser": "^0.4.0",
+ "@emmetio/html-matcher": "^1.3.0",
+ "@vscode/emmet-helper": "^2.9.3",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-emmet/node_modules/@vscode/emmet-helper": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.11.0.tgz",
+ "integrity": "sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emmet": "^2.4.3",
+ "jsonc-parser": "^2.3.0",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.15.1",
+ "vscode-uri": "^3.0.8"
+ }
+ },
+ "node_modules/volar-service-html": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.62.tgz",
+ "integrity": "sha512-Zw01aJsZRh4GTGUjveyfEzEqpULQUdQH79KNEiKVYHZyuGtdBRYCHlrus1sueSNMxwwkuF5WnOHfvBzafs8yyQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-html-languageservice": "^5.3.0",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-prettier": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.62.tgz",
+ "integrity": "sha512-h2yk1RqRTE+vkYZaI9KYuwpDfOQRrTEMvoHol0yW4GFKc75wWQRrb5n/5abDrzMPrkQbSip8JH2AXbvrRtYh4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0",
+ "prettier": "^2.2 || ^3.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ },
+ "prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-typescript": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.62.tgz",
+ "integrity": "sha512-p7MPi71q7KOsH0eAbZwPBiKPp9B2+qrdHAd6VY5oTo9BUXatsOAdakTm9Yf0DUj6uWBAaOT01BSeVOPwucMV1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-browserify": "^1.0.1",
+ "semver": "^7.6.2",
+ "typescript-auto-import-cache": "^0.3.3",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-nls": "^5.2.0",
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-typescript-twoslash-queries": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.62.tgz",
+ "integrity": "sha512-KxFt4zydyJYYI0kFAcWPTh4u0Ha36TASPZkAnNY784GtgajerUqM80nX/W1d0wVhmcOFfAxkVsf/Ed+tiYU7ng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-uri": "^3.0.8"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/volar-service-yaml": {
+ "version": "0.0.62",
+ "resolved": "https://registry.npmjs.org/volar-service-yaml/-/volar-service-yaml-0.0.62.tgz",
+ "integrity": "sha512-k7gvv7sk3wa+nGll3MaSKyjwQsJjIGCHFjVkl3wjaSP2nouKyn9aokGmqjrl39mi88Oy49giog2GkZH526wjig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-uri": "^3.0.8",
+ "yaml-language-server": "~1.15.0"
+ },
+ "peerDependencies": {
+ "@volar/language-service": "~2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@volar/language-service": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vscode-css-languageservice": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.2.tgz",
+ "integrity": "sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vscode/l10n": "^0.0.18",
+ "vscode-languageserver-textdocument": "^1.0.12",
+ "vscode-languageserver-types": "3.17.5",
+ "vscode-uri": "^3.0.8"
+ }
+ },
+ "node_modules/vscode-html-languageservice": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz",
+ "integrity": "sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vscode/l10n": "^0.0.18",
+ "vscode-languageserver-textdocument": "^1.0.12",
+ "vscode-languageserver-types": "^3.17.5",
+ "vscode-uri": "^3.0.8"
+ }
+ },
+ "node_modules/vscode-json-languageservice": {
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz",
+ "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jsonc-parser": "^3.0.0",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.16.0",
+ "vscode-nls": "^5.0.0",
+ "vscode-uri": "^3.0.2"
+ },
+ "engines": {
+ "npm": ">=7.0.0"
+ }
+ },
+ "node_modules/vscode-json-languageservice/node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageserver": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz",
+ "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-languageserver-protocol": "3.17.5"
+ },
+ "bin": {
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
+ }
+ },
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vscode-nls": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz",
+ "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
+ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/web-namespaces": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
+ "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/which-pm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.0.tgz",
+ "integrity": "sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==",
+ "license": "MIT",
+ "dependencies": {
+ "load-yaml-file": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=18.12"
+ }
+ },
+ "node_modules/which-pm-runs": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz",
+ "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/widest-line": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz",
+ "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==",
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+ "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/xxhash-wasm": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/xxhash-wasm/-/xxhash-wasm-1.1.0.tgz",
+ "integrity": "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==",
+ "license": "MIT"
+ },
+ "node_modules/yaml": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
+ "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
+ "devOptional": true,
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yaml-language-server": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.15.0.tgz",
+ "integrity": "sha512-N47AqBDCMQmh6mBLmI6oqxryHRzi33aPFPsJhYy3VTUGCdLHYjGh4FZzpUjRlphaADBBkDmnkM/++KNIOHi5Rw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.11.0",
+ "lodash": "4.17.21",
+ "request-light": "^0.5.7",
+ "vscode-json-languageservice": "4.1.8",
+ "vscode-languageserver": "^7.0.0",
+ "vscode-languageserver-textdocument": "^1.0.1",
+ "vscode-languageserver-types": "^3.16.0",
+ "vscode-nls": "^5.0.0",
+ "vscode-uri": "^3.0.2",
+ "yaml": "2.2.2"
+ },
+ "bin": {
+ "yaml-language-server": "bin/yaml-language-server"
+ },
+ "optionalDependencies": {
+ "prettier": "2.8.7"
+ }
+ },
+ "node_modules/yaml-language-server/node_modules/prettier": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz",
+ "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/yaml-language-server/node_modules/request-light": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz",
+ "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/yaml-language-server/node_modules/vscode-jsonrpc": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
+ "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0.0 || >=10.0.0"
+ }
+ },
+ "node_modules/yaml-language-server/node_modules/vscode-languageserver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz",
+ "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-languageserver-protocol": "3.16.0"
+ },
+ "bin": {
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/yaml-language-server/node_modules/vscode-languageserver-protocol": {
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz",
+ "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "vscode-jsonrpc": "6.0.0",
+ "vscode-languageserver-types": "3.16.0"
+ }
+ },
+ "node_modules/yaml-language-server/node_modules/vscode-languageserver-types": {
+ "version": "3.16.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
+ "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/yaml-language-server/node_modules/yaml": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz",
+ "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
+ "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yocto-spinner": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.1.2.tgz",
+ "integrity": "sha512-VfmLIh/ZSZOJnVRQZc/dvpPP90lWL4G0bmxQMP0+U/2vKBA8GSpcBuWv17y7F+CZItRuO97HN1wdbb4p10uhOg==",
+ "license": "MIT",
+ "dependencies": {
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=18.19"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz",
+ "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zimmerframe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz",
+ "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==",
+ "license": "MIT"
+ },
+ "node_modules/zod": {
+ "version": "3.24.1",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz",
+ "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-to-json-schema": {
+ "version": "3.24.1",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz",
+ "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==",
+ "license": "ISC",
+ "peerDependencies": {
+ "zod": "^3.24.1"
+ }
+ },
+ "node_modules/zod-to-ts": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz",
+ "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==",
+ "peerDependencies": {
+ "typescript": "^4.9.4 || ^5.0.2",
+ "zod": "^3"
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
+ "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..419c11b
--- /dev/null
+++ b/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "flow-launcher-website",
+ "version": "0.0.1",
+ "engines": {
+ "node": ">=22.0.0"
+ },
+ "dependencies": {
+ "@astrojs/svelte": "^7.0.2",
+ "astro": "^5.1.0",
+ "fflate": "^0.8.2",
+ "fslightbox": "^3.4.2",
+ "sass": "^1.83.0",
+ "svelte": "^5.16.0",
+ "svelte-awesome-color-picker": "^3.1.4",
+ "swiper": "^11.1.15",
+ "typescript": "^5.7.2"
+ },
+ "scripts": {
+ "dev": "astro dev",
+ "build": "astro build",
+ "preview": "astro preview",
+ "astro": "astro"
+ },
+ "type": "module",
+ "devDependencies": {
+ "@astrojs/language-server": "^2.15.4",
+ "@rollup/plugin-yaml": "^4.1.2",
+ "@types/node": "^22.10.2",
+ "svelte-language-server": "^0.17.8",
+ "typescript-svelte-plugin": "^0.3.45"
+ }
+}
diff --git a/public/images/flow-launcher.gif b/public/flow-launcher.gif
similarity index 100%
rename from public/images/flow-launcher.gif
rename to public/flow-launcher.gif
diff --git a/public/flow-launcher.webp b/public/flow-launcher.webp
new file mode 100644
index 0000000..93e02e4
Binary files /dev/null and b/public/flow-launcher.webp differ
diff --git a/public/images/flowlauncher_large.jpg b/public/flowlauncher_large.jpg
similarity index 100%
rename from public/images/flowlauncher_large.jpg
rename to public/flowlauncher_large.jpg
diff --git a/public/icons/favicon-128x128.png b/public/icons/favicon-128x128.png
deleted file mode 100644
index 8d32a76..0000000
Binary files a/public/icons/favicon-128x128.png and /dev/null differ
diff --git a/public/icons/favicon-16x16.png b/public/icons/favicon-16x16.png
deleted file mode 100644
index 836a1f3..0000000
Binary files a/public/icons/favicon-16x16.png and /dev/null differ
diff --git a/public/icons/favicon-32x32.png b/public/icons/favicon-32x32.png
deleted file mode 100644
index 00eba6f..0000000
Binary files a/public/icons/favicon-32x32.png and /dev/null differ
diff --git a/public/icons/favicon-96x96.png b/public/icons/favicon-96x96.png
deleted file mode 100644
index 0d08f2d..0000000
Binary files a/public/icons/favicon-96x96.png and /dev/null differ
diff --git a/public/images/GitHub-Mark-64px.png b/public/images/GitHub-Mark-64px.png
deleted file mode 100644
index 182a1a3..0000000
Binary files a/public/images/GitHub-Mark-64px.png and /dev/null differ
diff --git a/public/images/GitHub-Mark-Light-64px.png b/public/images/GitHub-Mark-Light-64px.png
deleted file mode 100644
index 73db1f6..0000000
Binary files a/public/images/GitHub-Mark-Light-64px.png and /dev/null differ
diff --git a/public/images/backdrop.jpg b/public/images/backdrop.jpg
deleted file mode 100644
index 4872999..0000000
Binary files a/public/images/backdrop.jpg and /dev/null differ
diff --git a/public/images/calculator.png b/public/images/calculator.png
deleted file mode 100644
index 102a86b..0000000
Binary files a/public/images/calculator.png and /dev/null differ
diff --git a/public/images/copy.png b/public/images/copy.png
deleted file mode 100644
index b514383..0000000
Binary files a/public/images/copy.png and /dev/null differ
diff --git a/public/images/copy.svg b/public/images/copy.svg
deleted file mode 100644
index 2541c03..0000000
--- a/public/images/copy.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/flow_extended_logo.png b/public/images/flow_extended_logo.png
deleted file mode 100644
index 15443cd..0000000
Binary files a/public/images/flow_extended_logo.png and /dev/null differ
diff --git a/public/images/flow_launcher.png b/public/images/flow_launcher.png
deleted file mode 100644
index dac1f65..0000000
Binary files a/public/images/flow_launcher.png and /dev/null differ
diff --git a/public/images/flow_logo.png b/public/images/flow_logo.png
deleted file mode 100644
index 314bc2e..0000000
Binary files a/public/images/flow_logo.png and /dev/null differ
diff --git a/public/images/google.png b/public/images/google.png
deleted file mode 100644
index 8971516..0000000
Binary files a/public/images/google.png and /dev/null differ
diff --git a/public/images/hero_bg.png b/public/images/hero_bg.png
deleted file mode 100644
index f60d827..0000000
Binary files a/public/images/hero_bg.png and /dev/null differ
diff --git a/public/images/icons/bulletin-board.svg b/public/images/icons/bulletin-board.svg
deleted file mode 100644
index a5f1e1d..0000000
--- a/public/images/icons/bulletin-board.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/icons/coffee.svg b/public/images/icons/coffee.svg
deleted file mode 100644
index 6254984..0000000
--- a/public/images/icons/coffee.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/icons/download.svg b/public/images/icons/download.svg
deleted file mode 100644
index 9aaadc7..0000000
--- a/public/images/icons/download.svg
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/public/images/icons/language-csharp.svg b/public/images/icons/language-csharp.svg
deleted file mode 100644
index dc8606e..0000000
--- a/public/images/icons/language-csharp.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/icons/message-alert.svg b/public/images/icons/message-alert.svg
deleted file mode 100644
index 406cd92..0000000
--- a/public/images/icons/message-alert.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/icons/note-text-outline.svg b/public/images/icons/note-text-outline.svg
deleted file mode 100644
index 1c8ae1c..0000000
--- a/public/images/icons/note-text-outline.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/icons/translate.svg b/public/images/icons/translate.svg
deleted file mode 100644
index 36805a3..0000000
--- a/public/images/icons/translate.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/logo.svg b/public/images/logo.svg
deleted file mode 100644
index 1ba18d6..0000000
--- a/public/images/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/images/old_flow_launcher.gif b/public/images/old_flow_launcher.gif
deleted file mode 100644
index 2bc6eaf..0000000
Binary files a/public/images/old_flow_launcher.gif and /dev/null differ
diff --git a/public/images/screenshots/apps.png b/public/images/screenshots/apps.png
deleted file mode 100644
index 904bbea..0000000
Binary files a/public/images/screenshots/apps.png and /dev/null differ
diff --git a/public/images/screenshots/bs_apps.png b/public/images/screenshots/bs_apps.png
deleted file mode 100644
index 7c8d7ed..0000000
Binary files a/public/images/screenshots/bs_apps.png and /dev/null differ
diff --git a/public/images/screenshots/bs_bookmark.png b/public/images/screenshots/bs_bookmark.png
deleted file mode 100644
index c241d3a..0000000
Binary files a/public/images/screenshots/bs_bookmark.png and /dev/null differ
diff --git a/public/images/screenshots/bs_calc.png b/public/images/screenshots/bs_calc.png
deleted file mode 100644
index c2b01dd..0000000
Binary files a/public/images/screenshots/bs_calc.png and /dev/null differ
diff --git a/public/images/screenshots/bs_cli.png b/public/images/screenshots/bs_cli.png
deleted file mode 100644
index 5e3331c..0000000
Binary files a/public/images/screenshots/bs_cli.png and /dev/null differ
diff --git a/public/images/screenshots/bs_files.png b/public/images/screenshots/bs_files.png
deleted file mode 100644
index 47cd036..0000000
Binary files a/public/images/screenshots/bs_files.png and /dev/null differ
diff --git a/public/images/screenshots/bs_store.png b/public/images/screenshots/bs_store.png
deleted file mode 100644
index ba011d1..0000000
Binary files a/public/images/screenshots/bs_store.png and /dev/null differ
diff --git a/public/images/screenshots/bs_system.png b/public/images/screenshots/bs_system.png
deleted file mode 100644
index 7c92ac8..0000000
Binary files a/public/images/screenshots/bs_system.png and /dev/null differ
diff --git a/public/images/screenshots/bs_websearch.png b/public/images/screenshots/bs_websearch.png
deleted file mode 100644
index 48aa768..0000000
Binary files a/public/images/screenshots/bs_websearch.png and /dev/null differ
diff --git a/public/images/screenshots/bs_windowssettings.png b/public/images/screenshots/bs_windowssettings.png
deleted file mode 100644
index 234240b..0000000
Binary files a/public/images/screenshots/bs_windowssettings.png and /dev/null differ
diff --git a/public/images/screenshots/calc.png b/public/images/screenshots/calc.png
deleted file mode 100644
index 47a075a..0000000
Binary files a/public/images/screenshots/calc.png and /dev/null differ
diff --git a/public/images/screenshots/icon_gh.png b/public/images/screenshots/icon_gh.png
deleted file mode 100644
index 7f1e86b..0000000
Binary files a/public/images/screenshots/icon_gh.png and /dev/null differ
diff --git a/public/images/screenshots/icon_op.png b/public/images/screenshots/icon_op.png
deleted file mode 100644
index a7ff617..0000000
Binary files a/public/images/screenshots/icon_op.png and /dev/null differ
diff --git a/public/images/screenshots/icon_sp.png b/public/images/screenshots/icon_sp.png
deleted file mode 100644
index 81c79d4..0000000
Binary files a/public/images/screenshots/icon_sp.png and /dev/null differ
diff --git a/public/images/screenshots/icon_st.png b/public/images/screenshots/icon_st.png
deleted file mode 100644
index b012915..0000000
Binary files a/public/images/screenshots/icon_st.png and /dev/null differ
diff --git a/public/images/screenshots/icon_uninstall.png b/public/images/screenshots/icon_uninstall.png
deleted file mode 100644
index 33b8bd9..0000000
Binary files a/public/images/screenshots/icon_uninstall.png and /dev/null differ
diff --git a/public/images/screenshots/screenshot_01.png b/public/images/screenshots/screenshot_01.png
deleted file mode 100644
index a947b6d..0000000
Binary files a/public/images/screenshots/screenshot_01.png and /dev/null differ
diff --git a/public/images/screenshots/shellcommand.png b/public/images/screenshots/shellcommand.png
deleted file mode 100644
index 7804e81..0000000
Binary files a/public/images/screenshots/shellcommand.png and /dev/null differ
diff --git a/public/images/screenshots/ss_app.png b/public/images/screenshots/ss_app.png
deleted file mode 100644
index 8376a28..0000000
Binary files a/public/images/screenshots/ss_app.png and /dev/null differ
diff --git a/public/images/screenshots/ss_bookmark.png b/public/images/screenshots/ss_bookmark.png
deleted file mode 100644
index 359c5e1..0000000
Binary files a/public/images/screenshots/ss_bookmark.png and /dev/null differ
diff --git a/public/images/screenshots/ss_calc.png b/public/images/screenshots/ss_calc.png
deleted file mode 100644
index f03e793..0000000
Binary files a/public/images/screenshots/ss_calc.png and /dev/null differ
diff --git a/public/images/screenshots/ss_file.png b/public/images/screenshots/ss_file.png
deleted file mode 100644
index 64db665..0000000
Binary files a/public/images/screenshots/ss_file.png and /dev/null differ
diff --git a/public/images/screenshots/ss_search.png b/public/images/screenshots/ss_search.png
deleted file mode 100644
index 1326f25..0000000
Binary files a/public/images/screenshots/ss_search.png and /dev/null differ
diff --git a/public/images/screenshots/ss_shell.png b/public/images/screenshots/ss_shell.png
deleted file mode 100644
index e71d67d..0000000
Binary files a/public/images/screenshots/ss_shell.png and /dev/null differ
diff --git a/public/images/screenshots/ss_system.png b/public/images/screenshots/ss_system.png
deleted file mode 100644
index ec668d3..0000000
Binary files a/public/images/screenshots/ss_system.png and /dev/null differ
diff --git a/public/images/screenshots/ss_system2.png b/public/images/screenshots/ss_system2.png
deleted file mode 100644
index e85ec4f..0000000
Binary files a/public/images/screenshots/ss_system2.png and /dev/null differ
diff --git a/public/images/screenshots/ss_url.png b/public/images/screenshots/ss_url.png
deleted file mode 100644
index f690d28..0000000
Binary files a/public/images/screenshots/ss_url.png and /dev/null differ
diff --git a/public/images/screenshots/systemcommands.png b/public/images/screenshots/systemcommands.png
deleted file mode 100644
index 5d6be0c..0000000
Binary files a/public/images/screenshots/systemcommands.png and /dev/null differ
diff --git a/public/images/screenshots/url.png b/public/images/screenshots/url.png
deleted file mode 100644
index 7359753..0000000
Binary files a/public/images/screenshots/url.png and /dev/null differ
diff --git a/public/images/screenshots/wallpaper.png b/public/images/screenshots/wallpaper.png
deleted file mode 100644
index 840771c..0000000
Binary files a/public/images/screenshots/wallpaper.png and /dev/null differ
diff --git a/public/images/screenshots/windowsetting.png b/public/images/screenshots/windowsetting.png
deleted file mode 100644
index 206dd84..0000000
Binary files a/public/images/screenshots/windowsetting.png and /dev/null differ
diff --git a/public/images/sponsors/TheBestPessimist.png b/public/images/sponsors/TheBestPessimist.png
deleted file mode 100644
index 9b9f0e7..0000000
Binary files a/public/images/sponsors/TheBestPessimist.png and /dev/null differ
diff --git a/public/images/sponsors/appwrite_light.png b/public/images/sponsors/appwrite_light.png
deleted file mode 100644
index 16d5fe3..0000000
Binary files a/public/images/sponsors/appwrite_light.png and /dev/null differ
diff --git a/public/images/wiki.png b/public/images/wiki.png
deleted file mode 100644
index a58ce1e..0000000
Binary files a/public/images/wiki.png and /dev/null differ
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..0ad279c
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,2 @@
+User-Agent: *
+Disallow:
diff --git a/public/images/screenshot_bg.png b/public/screenshot_bg.png
similarity index 100%
rename from public/images/screenshot_bg.png
rename to public/screenshot_bg.png
diff --git a/public/style/jquery-1.11.0.min.js b/public/style/jquery-1.11.0.min.js
deleted file mode 100644
index 73f33fb..0000000
--- a/public/style/jquery-1.11.0.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="
",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="
",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d
b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML=" ","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML=" ",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
-}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" a ",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML=" ",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h ]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""," "],legend:[1,""," "],area:[1,""," "],param:[1,""," "],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:l.htmlSerialize?[0,"",""]:[1,"X","
"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" a ",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="
",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" a ",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" a ",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
-},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();ca ",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
diff --git a/public/style/style.css b/public/style/style.css
deleted file mode 100644
index bf0d7af..0000000
--- a/public/style/style.css
+++ /dev/null
@@ -1,2089 +0,0 @@
-/*--------------------------------------------------------------
-TABLE OF CONTENT
-----------------------------------------------------------------
-1.0 VARIABLE
-| 1.1 COLOR
-| 1.2 TYPOGRAPHY
-| 1.3 LAYOUT
-2.0 FOUNDATION
-3.0 TYPOGRAPHY
-4.0 IMAGE
-5.0 LAYOUT
-6.0 COMPONENT
-| 6.1 CTA
-| 6.2 BUTTON
-| 6.3 TOGGLE
-| 6.4 CARD
-| 6.5 LIST
-7.0 SECTION
-| 7.1 HEADER
-| 7.2 HERO
-| 7.3 CUSTOMER
-| 7.4 FEATURE
-| 7.5 PRICING
-| 7.6 TESTIMONIAL
-| 7.7 CLOSE
-| 7.8 FOOTER
-8.0 MEDIA
-| 8.1 768PX
-| 8.2 1024PX
-| 8.3 1200PX
---------------------------------------------------------------*/
-:root {
- --text-for-light: black;
- --bkg-for-light: #f7fbff;
- --link-for-light: black;
- --text-for-dark: #c9d1d9;
- --bkg-for-dark: #0d1117;
- --link-for-dark: #c9d1d9;
- --sep-for-light: #cecece;
- --sep-for-dark: #0f1115;
- --card-for-light: #fff;
- --card-for-dark: #161b22;
-
- --bkg-header-for-light: #ffffff;
- --bkg-header-for-dark: #161b22;
-
- --copyright-for-light: #f9fafb;
- --copyright-for-dark: #000;
-
- --modal-for-light: #ffffff;
- --modal-for-dark: #2c2c2c;
-}
-
-body {font-family: "Noto Sans", sans-serif !important; color: var(--text-for-light); background-color: var(--bkg-for-light); transition: all 200ms linear;}
-a {color: var(--link-for-light);}
-p {color: var(--text-for-light);}
-.dark-mode p {color: var(--text-for-dark);}
-
-.dark-mode {color: var(--text-for-dark); background-color: var(--bkg-for-dark);}
-.dark-mode a {color: var(--link-for-dark);}
-.light-mode {color: var(--text-for-light); background-color: var(--bkg-for-light);}
-.light-mode a {color: var(--text-for-light);}
-
-.light-mode .ui-section-header{ background-color: var(--bkg-header-for-light); }
-.dark-mode .ui-section-header{ background-color: var(--bkg-header-for-dark); }
-.ui-section-sub{ background-color: var(--bkg-header-for-light); border-color: var(--sep-for-light); }
-.light-mode .ui-section-sub{ background-color: var(--bkg-header-for-light); border-color: var(--sep-for-light); }
-.light-mode .ui-section-dark{ background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark); }
-.light-mode .ui-section-feature{ background-color: var(--bkg-for-light); border-color: var(--sep-for-light);}
-.dark-mode .ui-section-feature{ background-color: var(--bkg-for-dark); border-color: var(--sep-for-dark);}
-.dark-mode .ui-section-sub{ background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark);}
-.ui-section-custom{ background-color: var(--bkg-header-for-light);border-color: var(--sep-for-light);}
-.light-mode .ui-section-custom{ background-color: var(--bkg-header-for-light);border-color: var(--sep-for-light);}
-.dark-mode .ui-section-custom{ background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark);}
-.light-mode .ui-text-title {color: var(--text-for-light);}
-.dark-mode .ui-text-title {color: var(--text-for-dark);}
-.ui-section-footer { background-color: var(--copyright-for-light); border-color: var(--sep-for-light)}
-.light-mode .ui-section-footer { background-color: var(--copyright-for-light); border-color: var(--sep-for-light)}
-.dark-mode .ui-section-footer { background-color: var(--copyright-for-dark); border-color: var(--sep-for-dark)}
-.dark-mode .modal-content { background-color: var(--modal-for-dark); border: 1px solid var(--sep-for-dark)}
-.modal-content { background-color: var(--modal-for-light); border: 1px solid var(--sep-for-light)}
-.light-mode .modal-content { background-color: var(--modal-for-light); border: 1px solid var(--sep-for-light)}
-.light-mode .CloseBtn {fill:var(--text-for-light);}
-.dark-mode .CloseBtn {fill:var(--text-for-dark);}
-
-.light-mode .card-inside{background-color: var(--card-for-light); border-color: var(--sep-for-light);}
-.dark-mode .card-inside { background-color: var(--card-for-dark); border-color: var(--sep-for-dark);}
-.ui-section-close { background-color: var(--bkg-header-for-light); border-color: var(--sep-for-light)}
-.dark-mode .ui-section-close { background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark)} .ui-section-footer--copyright p {color: var(--ui-color-typography-note);}
-.details-modal-content-winget {border-top: 1px solid var(--sep-for-light);}
-.light-mode .details-modal-content-winget {border-top: 1px solid var(--sep-for-light);}
-.dark-mode .details-modal-content-winget {border-top: 1px solid var(--sep-for-dark);}
-.details-modal-content {border-top: 1px solid var(--sep-for-light);}
-.light-mode .details-modal-content {border-top: 1px solid var(--sep-for-light);}
-.dark-mode .details-modal-content {border-top: 1px solid var(--sep-for-dark);}
-.details-modal-content-winget {
- border: 1px solid var(--sep-for-light);
- border-bottom: none;
- border-left: none;
- border-right: none;
-}
-.ui-section-header--nav {
- background-color: var(--bkg-header-for-light);
- border-color: var(--sep-for-light);
-}
-.dark-mode .ui-section-header--nav {
- background-color: var(--bkg-header-for-dark);
- border-color: var(--sep-for-dark);
-}
-.light-mode .ui-section-header--nav {
- background-color: var(--bkg-header-for-light);
- border-color: var(--sep-for-light);
-}
-
-.sponsorBanner {
- border:1px solid #cecece; width:170px; padding:14px; height:50px; border-radius: 6px; display: flex;
- align-items: center; background-color: var(--bkg-header-for-light);
-}
-
-@media (prefers-color-scheme: dark) {
- body {color: var(--text-for-dark); background-color: var(--bkg-for-dark); transition: all 200ms linear;}
- a {color: var(--link-for-dark);}
- p {color: var(--text-for-dark);}
- .light-mode p{color: var(--text-for-light);}
- .dark-mode p{color: var(--text-for-dark);}
- .ui-section-header { background-color: var(--bkg-header-for-dark); transition: all 200ms linear;}
- .light-mode .ui-section-header { background-color: var(--bkg-header-for-light); transition: all 200ms linear;}
- .dark-mode .ui-section-header { background-color: var(--bkg-header-for-light); transition: all 200ms linear;}
- .ui-section-feature { background-color: var(--bkg-for-dark); border-color: var(--sep-for-dark)}
- .ui-section-sub { background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark)}
- .ui-section-sub .dark-mode{ background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark)}
- .ui-section-sub .light-mode{ background-color: var(--bkg-header-for-light); border-color: var(--sep-for-light)}
- .ui-section-custom { background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark);}
- .ui-section-custom .dark-mode{ background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark);}
- .ui-section-custom .light-mode{ background-color: var(--bkg-header-for-light); border-color: var(--sep-for-light);}
- .ui-section-footer { background-color: var(--copyright-for-dark); border-color: var(--sep-for-dark);}
- .ui-section-footer .light-mode{ background-color: var(--copyright-for-light); border-color: var(--sep-for-light);}
- .ui-section-footer .dark-mode{ background-color: var(--copyright-for-dark); border-color: var(--sep-for-dark);}
- .ui-text-title {color: var(--text-for-dark);}
- .ui-section-close { background-color: var(--bkg-for-light); border-color: var(--sep-for-light)}
- .light-mode .ui-section-close { background-color: var(--bkg-for-light); border-color: var(--sep-for-light)}
- .dark-mode .ui-section-close{ background-color: var(--bkg-for-dark); border-color: var(--sep-for-dark)}
- .card-inside { background-color: var(--card-for-dark); border-color: var(--sep-for-dark)}
- .card-inside .light-mode { background-color: var(--card-for-light); border-color: var(--sep-for-light)}
- .card-inside .dark-mode{ background-color: var(--card-for-dark); border-color: var(--sep-for-dark)}
- .ui-section-close { background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark)}
- .ui-section-footer--copyright p {color: var(--ui-color-typography-note);}
- .ui-component-cta a {color:#fff !important}
- .modal-content { background-color: var(--modal-for-dark); border: 1px solid var(--sep-for-dark)}
- .modal-content .dark-mode { background-color: var(--modal-for-dark); border: 1px solid var(--sep-for-dark)}
- .modal-content .light-mode { background-color: var(--modal-for-light); border: 1px solid var(--sep-for-light)}
- .CloseBtn {fill: var(--text-for-dark);}
- .CloseBtn .dark-mode {fill: var(--text-for-dark);}
- .CloseBtn .light-mode {fill: var(--text-for-light);}
- .details-modal-content-winget {border-top: 1px solid var(--sep-for-dark);}
- .light-mode .details-modal-content-winget {border-top: 1px solid var(--sep-for-light);}
- .dark-mode .details-modal-content-winget {border-top: 1px solid var(--sep-for-dark);}
- .details-modal-content {border-top: 1px solid var(--sep-for-dark);}
- .light-mode .details-modal-content {border-top: 1px solid var(--sep-for-light);}
- .dark-mode .details-modal-content {border-top: 1px solid var(--sep-for-dark);}
- .ui-section-header--nav {
- background-color: var(--bkg-header-for-dark);
- border-color: var(--sep-for-dark)
- }
- .dark-mode .ui-section-header--nav {
- background-color: var(--bkg-header-for-dark);
- border-color: var(--sep-for-dark)
- }
- .light-mode .ui-section-header--nav {
- background-color: var(--bkg-header-for-light);
- border-color: var(--sep-for-light)
- }
-}
-
-.ui-component-cta a:hover{
- border: 1px solid transparent;
- background: dodgerblue;
-}
-.modal-sep {
- width:100%;
- border : 0;;
- border-top: 1px solid #aaa;
-}
-
-.swiper .swiper-pagination-bullet {
- background-color: dodgerblue;
-}
-/* Scrollbar */
-
-/* custom scrollbar */
-/* ::-webkit-scrollbar {
- width: 20px;
-}
-
-::-webkit-scrollbar-track {
- background-color: transparent;
-}
-
-::-webkit-scrollbar-thumb {
- background-color: #d6dee1;
- border-radius: 20px;
- border: 6px solid transparent;
- background-clip: content-box;
-}
-
-::-webkit-scrollbar-thumb:hover {
- background-color: #a8bbbf;
-} */
-
-
-.hide-button { /* toggle Dark */
- display:none;
-}
-
- /*------------------------------------------------------------
- |
- | Slider
- |
- ------------------------------------------------------------*/
-
-.swiper-button-next, .swiper-button-prev {
- visibility:collapse !important;
-}
-.swiper-slide{
- padding:0;
-}
-.swiper {
- width: 100%;
- height: 29.5rem;
-}
-.swiper-slide h5{
- font-size:14pt;
- font-weight:500;
- margin:0px;
-}
-.card-icon {
- position:absolute !important;
- background-color:rgba(255, 255, 255, 0.917);
- padding:5px;
- top:44%;
- right:12px;
- border-radius: 8px;
- margin: 0px 0px 4px 0px;
- height:32px;
-}
-.card-inside{
- overflow:hidden;
- background-color: var(--card-for-light); border-color: var(--sep-for-light);
- border-radius: 8px;
- height:26rem;
- border:1px solid #cccccc;
- padding:0px;
-}
-
-.author {
- font-size:13px;
- vertical-align: center;
- margin-left:10px;
-}
-.screenshot{
- padding:10px;
- height:15rem;
- border-radius:8px 8px 0 0;
-}
-.screenshot img{
- object-fit: contain;
- height: 100%;
- width: 100%;
- margin: 0 auto;
-}
-.card-details{
- padding:20px;
-}
-.name {
- font-weight:500;
-}
-
-@media (prefers-color-scheme: dark) {
- .card-inside { background-color: var(--card-for-dark); border-color: var(--sep-for-dark)}
-}
-.card-inside p {
- font-size:14px;
-}
-.card-inside img{
- position:sticky;
- bottom:0;
-}
-
- /*------------------------------------------------------------
- |
- | Download Button
- |
- ------------------------------------------------------------*/
- *,
-*::before,
-*::after {
- box-sizing: border-box;
-}
-
-
-.details-modal-content a{
- color:#fff;
-}
-
-
-.downloadBtn {
- text-align: left;
- box-shadow: rgba(0, 0, 0, 0.15) 0px 5px 15px 0px;
- background-color: DodgerBlue;
- border: none;
- border-radius: 6px;
- color: white;
- padding: 14px 30px;
- cursor: pointer;
- font-size: 20px;
- transition: all 200ms linear;
-}
-
-/*.installerBtn i, span, p{color:White}
-.portableBtn i, span, p{color:White}*/
-
-/* Darker background on mouse-over */
-.downloadBtn:hover {
- background-color: RoyalBlue;
-}
-code {
- font-size:1em;
- font-family: "Source Code Pro", monospace;
-}
-.installerBtn {
- box-shadow: rgba(0, 0, 0, 0.15) 0px 5px 15px 0px;
- text-align:center;
- display:inline-block;
- background-color: DodgerBlue;
- border: none;
- border-radius: 6px;
- color: white;
- width:100%;
- align-content: center;
- padding: 20px 20px;
- cursor: pointer;
- font-size: 20px;
-}
-
-.installerBtn:hover {
- background-color: RoyalBlue;
-}
-.portableBtn {
- box-shadow: rgba(0, 0, 0, 0.15) 0px 5px 15px 0px;
- text-align:center;
- display:inline-block;
- background-color: rgb(49, 81, 176);
- border: none;
- width:100%;
- margin-top: 6px;
- border-radius: 6px;
- color: white;
- padding: 20px 20px;
- cursor: pointer;
- font-size: 20px;
-}
-
-.portableBtn:hover {
- background-color: rgb(31, 60, 146);
-}
-
-.is-unselectable{
- user-select: none;
-}
-
-.cmdInstallDiv {
- background-color: rgba(0, 0, 0, 0.849);
- margin-top: 6px;
- padding: 10px;
- border-radius: 5px;
- width: 100%;
- text-align: left;
-
- left: -2;
-}
-.cmdInstallDiv p {
- font-size: 0.75em;
- margin-left: 8px;
- color: #ffffffbb !important;
- text-align: left;
- vertical-align: middle;
- letter-spacing: 0.5;
- white-space: nowrap;
-}
-
-.supportText {
- margin:0px 0px 0px 8px; font-size:11px; text-align:left;
-}
-.cmdInstallDiv .btn {
- position: relative;
- right: .5em;
- top: 50%;
- transform: translate(20%,-5%);
- display:none;
- border: solid 0px #cecece;
- padding: 4px 8px;
- border-radius: 4px;
- background-color: #4f4f4f;
- float: right;
-}
-
-.cmdInstallDiv .btn:hover {
- background-color: #7e7e7e;
-}
-.cmdInstallDiv .btn:active {
- background-color: #131313;
-}
-
-.btn p {
- margin:0px;
- font-size:11px !important;
-}
-.cmdInstallDiv i {
- font-size:16px;
- color:#fff;
-}
-.cmdInstallDiv i:hover{
- color:rgba(223, 223, 223, 0.566);
-}
-
-/*------------------------------*/
-
-.tooltipped {
- position: relative
-}
-.tooltipped:after {
- position: absolute;
- z-index: 1000000;
- display: none;
- padding: 5px 8px;
- font: normal normal 11px/1.5 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";
- color: #fff;
- text-align: center;
- text-decoration: none;
- text-shadow: none;
- text-transform: none;
- letter-spacing: normal;
- word-wrap: break-word;
- white-space: pre;
- pointer-events: none;
- content: attr(aria-label);
- background: rgba(0,0,0,0.8);
- border-radius: 3px;
- -webkit-font-smoothing: subpixel-antialiased
-}
-
-.tooltipped:before {
- position: absolute;
- z-index: 1000001;
- display: none;
- width: 0;
- height: 0;
- color: rgba(0,0,0,0.8);
- pointer-events: none;
- content: "";
- border: 5px solid transparent
-}
-
-.tooltipped:hover:before,.tooltipped:hover:after,.tooltipped:active:before,.tooltipped:active:after,.tooltipped:focus:before,.tooltipped:focus:after {
- display: inline-block;
- text-decoration: none
-}
-
-.tooltipped-s:after {
- top: 100%;
- right: 50%;
- margin-top: 5px
-}
-
-.tooltipped-s:before {
- top: auto;
- right: 50%;
- bottom: -5px;
- margin-right: -5px;
- border-bottom-color: rgba(0,0,0,0.8)
-}
-
-.tooltipped-s:after {
- transform: translate3d(0,-10px,0);
- transition: all .15s ease-in-out;
- -webkit-transform: translateX(50%);
- -ms-transform: translateX(50%);
- transform: translateX(50%)
-}
-/*------------------------------*/
-
-a {
- position: relative;
- color: #fff;
- transition: all 200ms linear;
- font-family: "Noto Sans", sans-serif !important;
- font-weight: 400;
- font-size: 15px;
- border-radius: 2px;
- margin: 2px 0;
- text-align: left;
- text-decoration: none;
- display: -ms-flexbox;
- display: flex;
- -webkit-align-items: center;
- -moz-align-items: center;
- -ms-align-items: center;
- align-items: center;
- justify-content: space-between;
- -ms-flex-pack: distribute;
-}
-
-.ui-section-header--nav a {
- color: inherit;
- text-decoration: underline 0.1em rgba(0, 0, 0, 0);
- transition: text-decoration-color 300ms;
-}
-
-.ui-section-header--nav a:hover {
- text-decoration-color: var(--link-for-light);
-}
-
-.dark-mode .ui-section-header--nav a:hover {
- text-decoration-color: var(--link-for-dark);
-}
-
-@media (prefers-color-scheme: dark) {
- .ui-section-header--nav a:hover {
- text-decoration-color: var(--link-for-dark);
- }
-}
-
-
-.sec-center a:hover {
- color: #000;
- background-color: #f5f5f5;
-}
-.dark-light:checked ~ .sec-center .section-dropdown a:hover {
- color: #ffeba7;
- background-color: #102770;
-}
-a .uil {
- font-size: 22px;
-}
-
-.logo:hover {
- background-color: transparent;
-}
-.logo img {
- height: 26px;
- width: auto;
- display: block;
- transition: all 200ms linear;
-}
-.dark-light:checked ~ .logo img{
- filter: brightness(10%);
-}
-
-@media screen and (min-width: 400px) {
- .cmdInstallDiv .btn {
- display:block;
- }
- .supportText {
- margin:0px 0px 0px 8px; font-size:11px; text-align:center;
- }
-.logo {
- top: 30px;
- left: 20px;
-}
-.dark-light:checked + label,
-.dark-light:not(:checked) + label{
- top: 20px;
- right: 20px;
-}
-}
-
-/* ---------------------------------*/
-
-
-/* The Modal (background) */
-
-.modal {
- backdrop-filter: blur(50px);
- display: none; /* Hidden by default */
- position: fixed; /* Stay in place */
- z-index: 1; /* Sit on top */
- left: 0;
- top: 0;
- z-index:999;
- width: 100%; /* Full width */
- height: 100%; /* Full height */
- overflow: auto; /* Enable scroll if needed */
- background-color: rgb(0,0,0); /* Fallback color */
- background-color: rgba(0,0,0,0.2); /* Black w/ opacity */
-}
-
-/* Modal Content/Box */
-.modal-content {
- box-shadow: rgba(0, 0, 0, 0.16) 0px 10px 36px 0px, rgba(0, 0, 0, 0.06) 0px 0px 0px 1px;
- position: relative;
- Width:86%;
- Max-width:450px;
- border-radius: 6px;
- left: 50%;
- margin-top:5%;
- /* bring your own prefixes */
- transform: translateX(-50%);
- padding: 0px;
-}
-
-/* Modal Content/Box */
-.videomodal-content {
- position: relative;
- background-color:var(--modal-for-light);
- Width:86%;
- Max-width:600px;
- border-radius: 6px;
- left: 50%;
- margin-top:5%;
- /* bring your own prefixes */
- transform: translateX(-50%);
- padding: 0px;
- border: 0px solid #888;
-}
-@media (prefers-color-scheme: dark) {
- .videomodal-content {background-color:var(--modal-for-dark);}
-}
-
-.details-modal {
- background: #ffffff;
- border-radius: 0.5em;
- box-shadow: 0 10px 20px rgba(black, 0.2);
- left: 50%;
- max-width: 90%;
- pointer-events: none;
- position: absolute;
- top: 50%;
- transform: translate(-50%, -50%);
- width: 30em;
- text-align: left;
- max-height: 90vh;
- display: flex;
- flex-direction: column;
-}
-
-.details-modal-title {
- padding: 1em 2em;
- pointer-events: all;
- position: relative;
- width: calc(100% - 4.5em);
-}
-
-
-.infolink p:hover{text-decoration: underline;}
-
-.details-modal-content {
- padding: 10px 2em 1em 2em;
- pointer-events: all;
- overflow: auto;
-}
-
-.details-modal-content-winget {
- padding: 1.2em 2em 2em 2em;
- pointer-events: all;
- overflow: auto;
-}
-
-
-/* The Close Button */
-.close {
- position:relative;
- color: #aaa;
- float: right;
- top:0;
- margin: 1.4rem;
- font-size: 28px;
- font-weight: bold;
-}
-
-.close:hover,
-.close:focus {
- color: black;
- text-decoration: none;
- cursor: pointer;
-}
-
-/* ---------------------------------*/
-
-
-
-/* ---------------------------------*/
-/* ---------------------------------*/
-/* ---------------------------------*/
-
-.grid {
- list-style: none;
- margin-left: -40px;
- }
-
-.gc {
- box-sizing: border-box;
- display: inline-block;
- margin-right: -.25em;
- min-height: 1px;
- padding-left: 40px;
- vertical-align: top;
- }
-
- .gc--1-of-3 {
- width: 40%;
- }
-
- .gc--2-of-3 {
- width: 60%;
- }
-
- .naccs {
- position: relative;
- margin: 0px auto 0;
- }
-
- .naccs .menu div {
- padding: 15px 20px 15px 20px;
- margin-bottom: 10px;
- color: #000;
- background: #ffffff;
- text-align:left;
- /* box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);*/
- cursor: pointer;
- border:1px solid #cecece;
- border-radius: 4px;
- position: relative;
- font-size:13pt;
- vertical-align: middle;
- font-weight: 400;
- transition: 1s all cubic-bezier(0.075, 0.82, 0.165, 1);
- }
-
- .naccs .menu div:hover {
- /*box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);*/
- }
-
- .naccs .menu div span.light {
- height: 10px;
- width: 0px;
- position: absolute;
- top: 24px;
- left: 0px;
- list-style: none;
- background-color: #ffffff;
- border-radius: 0%;
- transition: 1s all cubic-bezier(0.075, 0.82, 0.165, 1);
- }
-
- .naccs .menu div.active span.light {
- background-color: #4278e2;
- left: 0;
- height: 100%;
- width: 0px;
- top: 0;
- border-radius: 3;
- }
-
- .naccs .menu div.active {
- color: #4278e2;
- border:solid #4278e2 2px;
- padding: 15px 20px 15px 40px;
- }
- .naccs .menu .subtext
- {
- font-size:14px;
- color:#5e5e5e;
-
- }
- .naccs .menu .itemlist {
- height:auto;
- }
-
- ul.nacc {
- position: relative;
- height: 0px;
- list-style: none;
- margin: 0;
- padding: 0;
- transition: .5s all cubic-bezier(0.075, 0.82, 0.165, 1);
- }
-
- ul.nacc li {
- opacity: 0;
- transform: translateX(50px);
- position: absolute;
- list-style: none;
- transition: 1s all cubic-bezier(0.075, 0.82, 0.165, 1);
- }
-
- ul.nacc li.active {
- transition-delay: .3s;
- z-index: 2;
- opacity: 1;
- transform: translateX(0px);
- }
-
- ul.nacc li p {
- margin: 0;
- }
-
-
-/* Dropdown */
-
-
-/*--------------------------------------------------------------
-1.0 VARIABLE
---------------------------------------------------------------*/
-
-:root {
-
- /*------------------------------------------------------------
- |
- | 1.1 COLOR
- |
- ------------------------------------------------------------*/
-
- --ui-color-brand: #000;
-
- /* COLOR PALETTE */
-
- --ui-color-n-000: #fff;
- --ui-color-n-050: #f5f5f5;
- --ui-color-n-100: #ebebeb;
- --ui-color-n-300: #aeaeae;
- --ui-color-n-500: #353535;
- --ui-color-n-700: #282828;
- --ui-color-n-900: #1a1a1a;
-
- /* BACKGROUND COLOR */
-
- --ui-color-background-primary : var(--ui-color-n-000);
- --ui-color-background-secondary: var(--ui-color-n-050);
- --ui-color-background-tertiary : var(--ui-color-n-100);
-
- /* BORDER COLOR */
-
- --ui-color-border: var(--ui-color-n-100);
-
- /* TYPOGRAPHY COLOR */
-
- --ui-color-typography-heading: var(--ui-color-n-500);
- --ui-color-typography-body : var(--ui-color-n-900);
- --ui-color-typography-note : var(--ui-color-n-300);
- --ui-color-typography-button : var(--ui-color-n-000);
-
- /*------------------------------------------------------------
- |
- | 1.2 TYPOGRAPHY
- |
- ------------------------------------------------------------*/
-
- --ui-typography-typeface:"Noto Sans", "Segoe UI", "Inter", sans-serif !important;
-
- /* FONT SIZE */
-
- --ui-typography-h1: 1.9375rem;
- --ui-typography-h2: 1.5625rem;
- --ui-typography-h3: 1.00rem;
- --ui-typography-p : 1rem;
- --ui-typography-s : .8125rem;
-
- /* LEADING */
-
- --ui-typography-h1-leading: 1.2;
- --ui-typography-h2-leading: 1.2;
- --ui-typography-p-leading : 1.5;
-
- /* MARGIN */
-
- --ui-typography-margin-heading: .75rem;
- --ui-typography-margin-body : 1.125rem;
-
- /*------------------------------------------------------------
- |
- | 1.3 LAYOUT
- |
- ------------------------------------------------------------*/
-
- --ui-layout-container: 1.25rem;
- --ui-layout-grid : 3.625rem;
- --ui-layout-gutter : 1rem;
-
- /* GAP */
-
- --ui-gap-header : 1rem;
- /*--ui-gap-cta : .75rem;*/
- --ui-gap-cta : 0px;
- --ui-gap-hero : 2rem;
- --ui-gap-customer : 0.5rem;
- --ui-gap-feature : 1rem;
- --ui-gap-card : 1.25rem;
- --ui-gap-pricing : 2rem;
- --ui-gap-testimonial: 3rem;
-
- /* BORDER RADIUS */
-
- --ui-radius-avatar: 5rem;
- --ui-radius-button: 5rem;
- --ui-radius-card : .5rem;
-
-}
-
-/*--------------------------------------------------------------
-2.0 FOUNDATION
---------------------------------------------------------------*/
-
-html { box-sizing: border-box; }
-
-*,
-*:before,
-*:after { box-sizing: inherit; }
-
-body {
- font-family: var(--ui-typography-typeface);
- font-feature-settings: "liga", "kern";
- font-size: var(--ui-typography-p);
- font-weight: 400;
- line-height: var(--ui-typography-p-leading);
- margin: 0 auto;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
-}
-
-/*--------------------------------------------------------------
-3.0 TYPOGRAPHY
---------------------------------------------------------------*/
-
-h1,
-h2,
-p,
-ul { margin-top: 0; }
-
-h1,
-h2 {
- /*color: var(--ui-color-typography-heading);*/
- margin-bottom: var(--ui-typography-margin-heading);
-}
-
-h1 {
- font-size: var(--ui-typography-h1);
- line-height: var(--ui-typography-h1-leading);
-}
-
-h2 {
- font-size: var(--ui-typography-h2);
- line-height: var(--ui-typography-h2-leading);
-}
-
-p,
-ul { margin-bottom: var(--ui-typography-margin-body); }
-
-p:last-child,
-ul:last-child { margin-bottom: 0; }
-
-ul { padding-left: 0; }
-
-strong { font-weight: 700; }
-
-small { font-size: var(--ui-typography-s); }
-
-.ui-text-note {
- color: var(--ui-color-typography-note);
- line-height: 1;
-}
-
-/*--------------------------------------------------------------
-4.0 IMAGE
---------------------------------------------------------------*/
-
-img,
-svg {
- display: block;
- height: auto;
- margin: 0 auto;
- max-width: 100%;
-}
-
-/*--------------------------------------------------------------
-5.0 LAYOUT
---------------------------------------------------------------*/
-
-.ui-layout-container {
- padding-left: var(--ui-layout-container);
- padding-right: var(--ui-layout-container);
-}
-
-.ui-layout-flex,
-.ui-layout-grid {
- align-items: center;
- justify-content: center;
-}
-
-.ui-layout-flex { display: flex; }
-
-.ui-layout-grid { display: grid; }
-
-/*--------------------------------------------------------------
-6.0 COMPONENT
---------------------------------------------------------------*/
-
-/*--------------------------------------------------------------
-|
-| 6.1 CTA
-|
---------------------------------------------------------------*/
-
-.ui-component-cta {
- flex-direction: column;
- row-gap: var(--ui-gap-cta);
-}
-
-/*--------------------------------------------------------------
-|
-| 6.2 BUTTON
-|
---------------------------------------------------------------*/
-
-.ui-component-button {
- border: .0625rem solid var(--ui-color-brand);
- border-radius: var(--ui-radius-button);
- display: block;
- font-weight: 700;
- line-height: 1;
- text-align: center;
- text-decoration: none;
-}
-
-.ui-component-button-primary {
- background-color: var(--ui-color-brand);
- color: var(--ui-color-typography-button);
-}
-
-.ui-component-button-secondary {
- background-color: var(--ui-color-background-primary);
- color: var(--ui-color-brand);
-}
-
-.ui-component-button-big,
-.ui-component-button-normal { padding: .75rem 1rem .875rem; }
-
-.ui-component-button-big { width: 100%; }
-
-.ui-component-button-normal { width: fit-content; }
-
-/*--------------------------------------------------------------
-|
-| 6.3 TOGGLE
-|
---------------------------------------------------------------*/
-
-input[name="toggle"] { display: none; }
-
-.ui-component-toggle {
- background-color: var(--ui-color-background-tertiary);
- border-radius: var(--ui-radius-button);
- color: var(--ui-color-typography-note);
- font-size: var(--ui-typography-s);
- font-weight: 700;
- line-height: 1;
- margin: var(--ui-gap-pricing) auto .5rem;
- padding: .25rem;
- width: max-content;
-}
-
-.ui-component-toggle--label {
- border-radius: var(--ui-radius-button);
- cursor: pointer;
- padding: .5rem .625rem;
-}
-
-#ui-component-toggle__monthly:checked ~
-div label[for=ui-component-toggle__monthly],
-#ui-component-toggle__yearly:checked ~
-div label[for=ui-component-toggle__yearly] {
- background-color: var(--ui-color-background-primary);
- color: var(--ui-color-typography-body);
-}
-
-/*--------------------------------------------------------------
-|
-| 6.4 CARD
-|
---------------------------------------------------------------*/
-
-.ui-component-card {
- border: .0625rem solid var(--ui-color-border);
- border-radius: var(--ui-radius-card);
- overflow: hidden;
- width: 100%;
-}
-
-/*--------------------------------------------------------------
-|
-| 6.5 LIST
-|
---------------------------------------------------------------*/
-
-.ui-component-list {
- grid-template-columns: 1fr;
- row-gap: .75rem;
-}
-
-.ui-component-list--item {
- background-position: left center;
- background-repeat: no-repeat;
- background-size: 1.125rem;
- list-style: none;
- padding-left: 1.875rem;
-}
-
-.ui-component-list--item-check {
- background-image: url(https://res.cloudinary.com/uisual/image/upload/assets/icons/check.svg);
-}
-
-.ui-component-list--item-cross {
- background-image: url(https://res.cloudinary.com/uisual/image/upload/assets/icons/cross.svg);
-}
-
-/*--------------------------------------------------------------
-7.0 SECTION
---------------------------------------------------------------*/
-
-/*--------------------------------------------------------------
-|
-| 7.1 HEADER
-|
---------------------------------------------------------------*/
-
-.ui-section-header {
- background-color: var(--bkg-header-for-light);
- width: 100%;
- position:fixed;
- z-index:200;
- /* transition: all 200ms linear;*/
- padding-bottom: 1.2rem;
- padding-top: 1.2rem;
- filter: drop-shadow(rgba(0, 0, 0, 0.08) 0px 1px 4px);
-}
-
-@media (prefers-color-scheme: dark) {
- .ui-section-header { background-color: var(--bkg-header-for-dark); }
-}
-
-
-.ui-section-header__layout { justify-content: space-between; }
-
-/* LOGO */
-
-.ui-section-header--logo { z-index: 1; }
-
-/* HAMBURGER */
-
-#ui-section-header--menu-id { display: none; }
-
-.ui-section-header--menu-icon {
- cursor: pointer;
- display: block;
- height: 1.125rem;
- padding-bottom: .25rem;
- padding-top: .25rem;
- position: relative;
- width: 1.125rem;
- z-index: 1;
-}
-
-.ui-section-header--menu-icon::before,
-.ui-section-header--menu-icon::after {
- background: var(--ui-color-brand);
- content: "";
- height: .125rem;
- left: 0;
- position: absolute;
- transition: all 250ms cubic-bezier(.785, .135, .15, .86);
- width: 1.125rem; transition: all 200ms linear;
-}
-
-@media (prefers-color-scheme: dark) {
- .ui-section-header--menu-icon::before,
- .ui-section-header--menu-icon::after {
- background: rgb(119, 119, 120);
- }
-}
-
-.dark-mode .ui-section-header--menu-icon::before,
-.dark-mode .ui-section-header--menu-icon::after {
- background: rgb(119, 119, 120);
-}
-
-.ui-section-header--menu-icon::before { top: .3125rem; }
-
-.ui-section-header--menu-icon::after { top: .6875rem; }
-
-#ui-section-header--menu-id:checked ~
-.ui-section-header--menu-icon::before {
- transform: translateY(3px) rotate(135deg);
-}
-
-#ui-section-header--menu-id:checked ~
-.ui-section-header--menu-icon::after {
- transform: translateY(-3px) rotate(45deg);
-}
-
-/* MENU */
-
-.ui-section-header--nav {
- box-shadow: 0 .5rem 1rem rgba(0,0,0,.05);
- flex-direction: column;
- gap: 0;
- left: 0;
- opacity: 0;
- /*padding: 7.375rem var(--ui-layout-container) 5rem;*/
- padding:3.9rem 0 0rem;
- position: absolute;
- right: 0;
- top: -1rem;
- visibility: hidden;
-}
-
-
-#ui-section-header--menu-id:checked ~
-.ui-section-header--nav {
- opacity: 1;
- top: 0;
- visibility: visible;
-}
-
-.ui-section-header--nav-link {
- font-weight: 500;
- font-size: var(--ui-typography-h3);
- padding: .5rem;
- text-decoration: none;
-}
-
-/*--------------------------------------------------------------
-|
-| 7.2 HERO
-|
---------------------------------------------------------------*/
-
-.ui-section-hero {
- padding-bottom: 5rem;
- padding-top: 9rem;
- text-align: center;
-}
-
-.ui-section-hero__layout {
- row-gap: var(--ui-gap-hero);
-}
-
-/*--------------------------------------------------------------
-|
-| 7.3 CUSTOMER
-|
---------------------------------------------------------------*/
-.SponsorTitle{
- font-size:14px; color:#898989; text-align: center; margin-bottom:1rem;
-}
-.ui-section-customer__layout {
- flex-direction: row;
- column-gap: var(--ui-gap-customer);
- margin-bottom:3em;
-}
-
-.ui-section-customer--logo {
- height: 2.5rem;
- width: auto;
-}
-
-.ui-section-customer--logo-str { height: 1.75rem; }
-
-.ui-section-customer--logo-bhn { height: 1.375rem; }
-
-/*--------------------------------------------------------------
-|
-| 7.4 FEATURE
-|
---------------------------------------------------------------*/
-
-.ui-section-sub {
- border-width:1px 0px 0px 0;
- border-style:solid;
- padding-bottom: 1rem;
- padding-top: 1rem;
-}
-
-
-.ui-section-feature {
- background-color: var(--bkg-for-light);
- border-color: var(--sep-for-light);
- border-style:solid;
- border-width:1px 0px 0px 0;
-
- padding-bottom: 2rem;
- padding-top: 2rem;
-}
-
-@media (prefers-color-scheme: dark) {
- .ui-section-feature { background-color: var(--bkg-for-dark); border-color: var(--sep-for-dark)}
-}
-
-.ui-section-feature__layout { row-gap: var(--ui-gap-feature); }
-
-.ui-section-feature__layout:first-of-type div {
- grid-row-start: 1;
-}
-
-.ui-section-feature__layout:last-of-type { /*margin-top: 5rem;*/ }
-
-/*--------------------------------------------------------------
-|
-| 7.5 PRICING
-|
---------------------------------------------------------------*/
-
-.ui-section-pricing {
- background-color: var(--ui-color-background-secondary);
- padding-bottom: 5rem;
- padding-top: 5rem;
- text-align: center;
-}
-
-.ui-section-pricing__layout {
- justify-content: initial;
- margin-bottom: var(--ui-gap-pricing);
- margin-top: var(--ui-gap-pricing);
- row-gap: var(--ui-gap-card);
-}
-
-/* CARD */
-
-.ui-component-card--pricing {
- background-color: var(--ui-color-background-primary);
- padding: 0.5rem 0.5rem 0.75rem;
- text-align: left;
-}
-
-.ui-component-card--pricing-price {
- line-height: 1;
- margin-bottom: 0.25rem;
- margin-top: 0.25rem;
-}
-
-.ui-component-card--pricing-amount {
- font-size: var(--ui-typography-h1);
- font-weight: 700;
-}
-
-/* AMOUNT */
-
-.ui-component-card--pricing-amount-1::before { content: "$5"; }
-
-#ui-component-toggle__yearly:checked ~ div
-.ui-component-card--pricing-amount-1::before { content: "$3"; }
-
-.ui-component-card--pricing-amount-2::before { content: "$15"; }
-
-#ui-component-toggle__yearly:checked ~ div
-.ui-component-card--pricing-amount-2::before { content: "$13"; }
-
-.ui-component-card--pricing-amount-3::before { content: "$25"; }
-
-#ui-component-toggle__yearly:checked ~ div
-.ui-component-card--pricing-amount-3::before { content: "$23"; }
-
-/* LIST */
-
-.ui-component-list--pricing {
- margin-bottom: 1.5rem;
- margin-top: 1.25rem;
-}
-
-/*--------------------------------------------------------------
-|
-| 7.6 TESTIMONIAL
-|
---------------------------------------------------------------*/
-
-.ui-section-testimonial {
- padding-bottom: 5rem;
- padding-top: 5rem;
- text-align: center;
-}
-
-.ui-section-testimonial__layout {
- row-gap: var(--ui-gap-testimonial);
-}
-
-.ui-section-testimonial--avatar {
- border-radius: var(--ui-radius-avatar);
- height: 5rem;
- width: 5rem;
-}
-
-.ui-section-testimonial--quote {
- margin-bottom: 1rem;
- margin-top: 1rem;
-}
-
-.ui-section-testimonial--author { line-height: 1.25; }
-
-/*--------------------------------------------------------------
-|
-| 7.7 CLOSE
-|
---------------------------------------------------------------*/
-
-.ui-section-custom {
- border-style:solid;
- border-width:1px 0px 0px 0;
- padding-bottom: 4rem;
- padding-top: 4rem;
- text-align: center;
-}
-
-
-.ui-section-close {
- border-style: solid;
- border-width: 1px 0px 0px 0;
- padding-bottom: 5rem;
- padding-top: 5rem;
- text-align: center;
-}
-
-
-
-/*--------------------------------------------------------------
-|
-| 7.8 FOOTER
-|
---------------------------------------------------------------*/
-
-.ui-section-footer {
- padding-bottom: 2rem;
- padding-top: 2rem;
- border-style:solid;
- border-width:1px 0px 0px 0;
-}
-
-.ui-section-footer__layout {
- column-gap: var(--ui-layout-gutter);
-}
-
-.ui-section-footer--copyright {
- margin-bottom: 0;
- margin-right: auto;
-}
-
-.darkbtnSvg {
- width:32px;
-}
-.darkmode-btn {
- height:0;
- visibility: collapse;
-}
-
-.ui-section-header--nav a{
- width:100%;
- border-radius: 0;
- margin:0;
- border-top:1px solid #82828226;
- padding-left:20px;
- height:70px;
- padding:14x;
-}
-
-.ui-section-header--nav a:hover{
- background-color: #7676760c;
-}
-
-#myBtn3 {
- height:0; padding:0;
- visibility:collapse;
-}
-
-.gif-image {
- border:0px solid red; border-radius: 12px; overflow: hidden;
- grid-row-start:2 !important;
-}
-.gif-text {
- grid-row-start:1 !important;
-}
-/*--------------------------------------------------------------
-8.0 MEDIA
---------------------------------------------------------------*/
-
-@media screen and (min-width: 640px) {
-
- /*------------------------------------------------------------
- VARIABLE
- ------------------------------------------------------------*/
- .swiper-button-next, .swiper-button-prev {
- visibility:visible !important;
- }
- .ui-layout-grid-gif {
- padding-left: var(--ui-layout-gutter);
- column-gap: var(--ui-layout-gutter);
- /*grid-template-columns: repeat(2, 1fr);*/
- grid-template-columns: 1fr 1fr;
- justify-items: center;
- }
-
- .gif-image {
- grid-column-start:1 !important;
- grid-row-start:1 !important;
- }
- .gif-text {
- grid-column-start:2 !important;
- grid-row-start:1 !important;
- }
-}
-/*--------------------------------------------------------------
-|
-| 8.1 768PX
-|
---------------------------------------------------------------*/
-
-@media screen and (min-width: 54rem) { /*Default was 48rem*/
-
- /*------------------------------------------------------------
- VARIABLE
- ------------------------------------------------------------*/
- .ui-layout-grid-gif {
- /*padding-left: var(--ui-layout-gutter);*/
- column-gap: var(--ui-layout-gutter);
- /*grid-template-columns: repeat(2, 1fr);*/
- grid-template-columns: 1fr 1fr;
- justify-items: center;
- }
-
- #mobile-darkbtn {
- height:0;
- width:0; margin:-1rem;
- visibility:collapse;
- padding:0;
- }
- .ui-section-header--nav{
- gap: var(--ui-gap-header);
- }
-
- .ui-section-header--nav a{
- border:0px;
- background-color: transparent;
- height:auto;
- width:auto;
- text-align:right;
- }
- .ui-section-header--nav a:hover{
- background-color: transparent;
- }
-
- #myBtn {
- padding:0;
- height:0; width:0;
- visibility:collapse;
- }
-
- #myBtn3 {
- transition: all 200ms linear;
- padding:20px 30px;
- margin-left:10px;
- background-color:dodgerblue;
- border:1px;
- float:right;
- border-radius: 64px;
- visibility:visible;
- }
- #myBtn3:hover {
- background-color:#4278e2;
- }
-
- a.pc-download {
- font-size:16px;
- color:white;
- text-decoration: none;
- }
-
- .darkmode-btn {
- border-radius:50%;
- z-index:999;
- margin:0;
- height:auto;
- background-color:rgba(224, 224, 224, 0.227);
- padding:8px;
- visibility: visible;
- transition: all 200ms linear;
- border: none;
-}
-
-.darkmode-btn:hover {
- border-radius:64px;
- z-index:999;
- margin:0;
- height:auto;
- background-color:rgba(31, 31, 31, 0.315);
- padding:8px;
- visibility: visible;
-
-}
-
-.darkmode-btn svg {
- max-width: unset;
-}
-
-
- :root {
-
- /*----------------------------------------------------------
- |
- | TYPOGRAPHY
- |
- ----------------------------------------------------------*/
-
- /* FONT SIZE */
-
- --ui-typography-h1: 2.1875rem;
- --ui-typography-h2: 1.75rem;
- --ui-typography-p : 1.125rem;
- --ui-typography-s : .875rem;
-
- /* MARGIN */
-
- --ui-typography-margin-body: 1.25rem;
-
- /*----------------------------------------------------------
- |
- | LAYOUT
- |
- ----------------------------------------------------------*/
-
- --ui-layout-container: 4.25rem;
- --ui-layout-gutter : 1.5rem;
-
- /* GAP */
-
- --ui-gap-header: 1.5rem;
- --ui-gap-card : 1.5rem;
-
- }
-
- /*------------------------------------------------------------
- IMAGE
- ------------------------------------------------------------*/
-
- .ui-image-half-left {
- margin-right: 1rem;
- }
-
- /*------------------------------------------------------------
- LAYOUT
- ------------------------------------------------------------*/
-
- .ui-layout-container,
- .ui-layout-column-center {
- margin-left: auto;
- margin-right: auto;
- }
-
- .ui-layout-grid-2,
- .ui-layout-grid-3 {
- padding-left: var(--ui-layout-gutter);
- column-gap: var(--ui-layout-gutter);
- /*grid-template-columns: repeat(2, 1fr);*/
- grid-template-columns: 260px 1.2fr;
- justify-items: center;
- }
-
- .ui-layout-grid-custom {
- column-gap: var(--ui-layout-gutter);
- /*grid-template-columns: repeat(2, 1fr);*/
- grid-template-columns: 1fr 1fr;
- justify-items: center;
- }
-
- .ui-layout-grid-3 div:nth-of-type(3) {
- left: calc(50% + (var(--ui-layout-gutter) / 2));
- position: relative;
- }
-
- .ui-layout-column-4 {
- width: calc((var(--ui-layout-grid) * 4) +
- (var(--ui-layout-gutter) * 3));
- }
-
- /*------------------------------------------------------------
- COMPONENT
- ------------------------------------------------------------*/
-
- /*------------------------------------------------------------
- |
- | LIST
- |
- ------------------------------------------------------------*/
-
- .ui-component-list--item {
- background-size: 1.25rem;
- padding-left: 2rem;
- }
-
- /*------------------------------------------------------------
- SECTION
- ------------------------------------------------------------*/
-
- /*------------------------------------------------------------
- |
- | HEADER
- |
- ------------------------------------------------------------*/
-
- .ui-section-header {
- /*
- padding-bottom: 2rem;
- padding-top: 2rem;*/
- }
-
- /* ICON */
-
- .ui-section-header--menu-icon { display: none; }
-
- /* NAV */
- .light-mode .ui-section-header--nav{
- background-color: transparent;
- }
-
- .ui-section-header--nav {
- background-color: transparent;
- box-shadow: none;
- flex-direction: row;
- opacity: 1;
- padding: 0;
- position: static;
- visibility: visible;
- }
-
- .ui-section-header--nav-link {
- font-size: var(--ui-typography-p);
- padding: 0;
- }
-
- /*------------------------------------------------------------
- |
- | HERO
- |
- ------------------------------------------------------------*/
-
- .ui-section-hero { text-align: left; }
-
- .ui-section-hero .ui-component-cta { align-items: start; }
-
- /*------------------------------------------------------------
- |
- | CUSTOMER
- |
- ------------------------------------------------------------*/
-
- .ui-section-customer__layout {
- flex-direction: row;
- }
-
- .ui-section-customer--logo {
- margin-left: 0;
- margin-right: 0;
- height:3rem;
- }
-
- /*------------------------------------------------------------
- |
- | FEATURE
- |
- ------------------------------------------------------------*/
-
- .ui-section-feature__layout:first-of-type div {
- grid-row-start: initial;
- }
-
- /*------------------------------------------------------------
- |
- | PRICING
- |
- ------------------------------------------------------------*/
-
- .ui-component-card--pricing { padding: 2rem 2rem 2.25rem; text-align: center;}
-
- /*------------------------------------------------------------
- |
- | FOOTER
- |
- ------------------------------------------------------------*/
-
- .ui-section-footer {
- padding-bottom: 2rem;
- padding-top: 2rem;
- }
-
-}
-
-/*--------------------------------------------------------------
-|
-| 8.2 1024PX
-|
---------------------------------------------------------------*/
-
-@media screen and (min-width: 64rem) {
-
- /*------------------------------------------------------------
- VARIABLE
- ------------------------------------------------------------*/
-
- :root {
-
- /*----------------------------------------------------------
- |
- | LAYOUT
- |
- ----------------------------------------------------------*/
-
- --ui-layout-container: 0;
-
- }
-
- /*------------------------------------------------------------
- LAYOUT
- ------------------------------------------------------------*/
-
- .ui-layout-container { width: 60rem; }
-
-
- .ui-layout-grid-3 div:nth-of-type(3) { position: static; }
-
- .ui-layout-grid-2,
- .ui-layout-grid-3 {
- padding-left: var(--ui-layout-gutter);
- column-gap: var(--ui-layout-gutter);
- /*grid-template-columns: repeat(2, 1fr);*/
- grid-template-columns: 1fr 620px;
- justify-items: center;
- }
-
- /*------------------------------------------------------------
- SECTION
- ------------------------------------------------------------*/
-
- /*------------------------------------------------------------
- |
- | HERO
- |
- ------------------------------------------------------------*/
-
- .ui-section-hero .ui-component-cta {
- align-items: center;
- column-gap: var(--ui-gap-cta);
- flex-direction: row;
- justify-content: start;
- }
-
-}
-
-/*--------------------------------------------------------------
-|
-| 8.3 1200PX
-|
---------------------------------------------------------------*/
-
-@media screen and (min-width: 75rem) {
-
- /*------------------------------------------------------------
- VARIABLE
- ------------------------------------------------------------*/
-
- :root {
-
- /*----------------------------------------------------------
- |
- | TYPOGRAPHY
- |
- ----------------------------------------------------------*/
-
- /* FONT SIZE */
-
- --ui-typography-h1: 2.75rem;
- --ui-typography-h2: 2.1875rem;
- --ui-typography-h4: 1.4375rem;
-
- /* MARGIN */
-
- --ui-typography-margin-heading: 1rem;
- --ui-typography-margin-body : 1.75rem;
-
- /*----------------------------------------------------------
- |
- | LAYOUT
- |
- ----------------------------------------------------------*/
-
- --ui-layout-grid : 4rem;
- --ui-layout-gutter: 2rem;
-
- /* GAP */
-
- --ui-gap-header : 2rem;
- --ui-gap-customer: 0.5rem;
- --ui-gap-card : 2rem;
- --ui-gap-pricing : 3rem;
-
- }
-
- /*------------------------------------------------------------
- TYPOGRAPHY
- ------------------------------------------------------------*/
- .ui-text-title {
- }
- .ui-text-intro {
- color:#797979;
- font-size: var(--ui-typography-h4);
- font-family: 'Roboto', sans-serif;
- margin-top:-12px;
- }
-
- /*------------------------------------------------------------
- LAYOUT
- ------------------------------------------------------------*/
-
- .ui-layout-container { width: 70rem; }
-
- /*------------------------------------------------------------
- COMPONENT
- ------------------------------------------------------------*/
-
- /*------------------------------------------------------------
- |
- | BUTTON
- |
- ------------------------------------------------------------*/
-
- .ui-component-button-big,
- .ui-component-button-normal {
- padding-bottom: 1.125rem;
- padding-top: 1rem;
- }
-
- /*------------------------------------------------------------
- SECTION
- ------------------------------------------------------------*/
-
- /*------------------------------------------------------------
- |
- | HEADER
- |
- ------------------------------------------------------------*/
-
- .ui-section-header { padding-top: 1rem; padding-bottom:1rem;}
-
- /*------------------------------------------------------------
- |
- | HERO
- |
- ------------------------------------------------------------*/
-
- .ui-section-hero {
- padding-top: 10rem;
- padding-bottom: 5.5rem;
- }
-
- /*------------------------------------------------------------
- |
- | CUSTOMER
- |
- ------------------------------------------------------------*/
-
- .ui-section-customer--logo { height: 3.5rem; }
-
- .ui-section-customer--logo-str { height: 2.25rem; }
-
- .ui-section-customer--logo-bhn { height: 1.75rem; }
-
- /*------------------------------------------------------------
- |
- | FEATURE
- |
- ------------------------------------------------------------*/
-
- .ui-section-feature {
- padding-bottom: 3rem;
- padding-top: 3rem;
- }
-
- .ui-section-feature__layout:last-of-type {
- /* margin-top: 7.5rem;*/
- }
-
- /* LIST */
-
- .ui-component-list-feature {
- column-gap: var(--ui-layout-gutter);
- grid-template-columns: repeat(2, 1fr);
- }
-
- /*------------------------------------------------------------
- |
- | PRICING
- |
- ------------------------------------------------------------*/
-
- .ui-section-pricing {
- padding-bottom: 0.5rem;
- padding-top: 0.5rem;
- }
-
- .ui-component-card--pricing { padding: 1.5rem; }
-
- /*------------------------------------------------------------
- |
- | TESTIMONIAL
- |
- ------------------------------------------------------------*/
-
- .ui-section-testimonial {
- padding-bottom: 7.5rem;
- padding-top: 7.5rem;
- }
-
- /*------------------------------------------------------------
- |
- | CLOSE
- |
- ------------------------------------------------------------*/
-
- .ui-section-close {
- border-style: solid;
- border-width: 1px 0px 0px 0;
- background-color: var(--bkg-header-for-light);
- border-color: var(--sep-for-light);
- padding-bottom: 7.5rem;
- padding-top: 7.5rem;
- }
-
- @media (prefers-color-scheme: dark) {
- .ui-section-close { background-color: var(--bkg-header-for-dark); border-color: var(--sep-for-dark)}
- }
- /*------------------------------------------------------------
- |
- | FOOTER
- |
- ------------------------------------------------------------*/
-
- .ui-section-footer {
- padding-bottom: 3rem;
- padding-top: 3rem;
- }
-
- /*---*/
- .column {
- float: left;
- width: 50%;
- padding: 0 10px;
- }
-
- /* Remove extra left and right margins, due to padding in columns */
- .row {margin: 0 -5px;}
-
- /* Clear floats after the columns */
- .row:after {
- content: "";
- display: table;
- clear: both;
- }
-
- /* Style the counter cards */
- .card {
- padding: 16px;
- text-align: center;
-
- }
-
-
- /* Responsive columns - one column layout (vertical) on small screens */
- @media screen and (max-width: 600px) {
- .column {
- width: 100%;
- display: block;
- margin-bottom: 20px;
- }
- }
-}
\ No newline at end of file
diff --git a/public/theme-builder/florian-van-duyn-Dm-qxdynoEc-unsplash.jpg b/public/theme-builder/florian-van-duyn-Dm-qxdynoEc-unsplash.jpg
new file mode 100644
index 0000000..4af9e4b
Binary files /dev/null and b/public/theme-builder/florian-van-duyn-Dm-qxdynoEc-unsplash.jpg differ
diff --git a/public/theme-builder/henry-be-IicyiaPYGGI-unsplash.jpg b/public/theme-builder/henry-be-IicyiaPYGGI-unsplash.jpg
new file mode 100644
index 0000000..cec5385
Binary files /dev/null and b/public/theme-builder/henry-be-IicyiaPYGGI-unsplash.jpg differ
diff --git a/public/theme-builder/matthew-smith-Rfflri94rs8-unsplash.jpg b/public/theme-builder/matthew-smith-Rfflri94rs8-unsplash.jpg
new file mode 100644
index 0000000..640773c
Binary files /dev/null and b/public/theme-builder/matthew-smith-Rfflri94rs8-unsplash.jpg differ
diff --git a/public/theme-builder/thierry-meier-PKEPAeMBOIU-unsplash.jpg b/public/theme-builder/thierry-meier-PKEPAeMBOIU-unsplash.jpg
new file mode 100644
index 0000000..cc42523
Binary files /dev/null and b/public/theme-builder/thierry-meier-PKEPAeMBOIU-unsplash.jpg differ
diff --git a/public/images/titlelogo.png b/src/assets/logo.png
similarity index 100%
rename from public/images/titlelogo.png
rename to src/assets/logo.png
diff --git a/public/images/screenshots/cm_modern.png b/src/assets/main-page/cm_modern.png
similarity index 100%
rename from public/images/screenshots/cm_modern.png
rename to src/assets/main-page/cm_modern.png
diff --git a/public/images/screenshots/cm_theme.png b/src/assets/main-page/cm_theme.png
similarity index 100%
rename from public/images/screenshots/cm_theme.png
rename to src/assets/main-page/cm_theme.png
diff --git a/public/images/dark_screenshot.png b/src/assets/main-page/dark_screenshot.png
similarity index 100%
rename from public/images/dark_screenshot.png
rename to src/assets/main-page/dark_screenshot.png
diff --git a/src/assets/main-page/feat_apps.png b/src/assets/main-page/feat_apps.png
new file mode 100644
index 0000000..00cf0d0
Binary files /dev/null and b/src/assets/main-page/feat_apps.png differ
diff --git a/src/assets/main-page/feat_bookmark.png b/src/assets/main-page/feat_bookmark.png
new file mode 100644
index 0000000..37669be
Binary files /dev/null and b/src/assets/main-page/feat_bookmark.png differ
diff --git a/src/assets/main-page/feat_calc.png b/src/assets/main-page/feat_calc.png
new file mode 100644
index 0000000..95aff76
Binary files /dev/null and b/src/assets/main-page/feat_calc.png differ
diff --git a/src/assets/main-page/feat_cli.png b/src/assets/main-page/feat_cli.png
new file mode 100644
index 0000000..902243b
Binary files /dev/null and b/src/assets/main-page/feat_cli.png differ
diff --git a/src/assets/main-page/feat_files.png b/src/assets/main-page/feat_files.png
new file mode 100644
index 0000000..860660d
Binary files /dev/null and b/src/assets/main-page/feat_files.png differ
diff --git a/src/assets/main-page/feat_store.png b/src/assets/main-page/feat_store.png
new file mode 100644
index 0000000..e537354
Binary files /dev/null and b/src/assets/main-page/feat_store.png differ
diff --git a/src/assets/main-page/feat_system.png b/src/assets/main-page/feat_system.png
new file mode 100644
index 0000000..fbf0d26
Binary files /dev/null and b/src/assets/main-page/feat_system.png differ
diff --git a/src/assets/main-page/feat_websearch.png b/src/assets/main-page/feat_websearch.png
new file mode 100644
index 0000000..d8257dd
Binary files /dev/null and b/src/assets/main-page/feat_websearch.png differ
diff --git a/src/assets/main-page/feat_windowssettings.png b/src/assets/main-page/feat_windowssettings.png
new file mode 100644
index 0000000..8c22a1c
Binary files /dev/null and b/src/assets/main-page/feat_windowssettings.png differ
diff --git a/src/assets/main-page/icon_gh.png b/src/assets/main-page/icon_gh.png
new file mode 100644
index 0000000..c2df2f6
Binary files /dev/null and b/src/assets/main-page/icon_gh.png differ
diff --git a/src/assets/main-page/icon_ob.png b/src/assets/main-page/icon_ob.png
new file mode 100644
index 0000000..15a6a5b
Binary files /dev/null and b/src/assets/main-page/icon_ob.png differ
diff --git a/src/assets/main-page/icon_sp.png b/src/assets/main-page/icon_sp.png
new file mode 100644
index 0000000..7aa627e
Binary files /dev/null and b/src/assets/main-page/icon_sp.png differ
diff --git a/src/assets/main-page/icon_st.png b/src/assets/main-page/icon_st.png
new file mode 100644
index 0000000..6678eed
Binary files /dev/null and b/src/assets/main-page/icon_st.png differ
diff --git a/public/images/light_screenshot.png b/src/assets/main-page/light_screenshot.png
similarity index 100%
rename from public/images/light_screenshot.png
rename to src/assets/main-page/light_screenshot.png
diff --git a/public/images/screenshots/bs_gn.png b/src/assets/main-page/plugin_gh.png
similarity index 100%
rename from public/images/screenshots/bs_gn.png
rename to src/assets/main-page/plugin_gh.png
diff --git a/public/images/screenshots/bs_op.png b/src/assets/main-page/plugin_ob.png
similarity index 100%
rename from public/images/screenshots/bs_op.png
rename to src/assets/main-page/plugin_ob.png
diff --git a/public/images/screenshots/bs_sp.png b/src/assets/main-page/plugin_sp.png
similarity index 100%
rename from public/images/screenshots/bs_sp.png
rename to src/assets/main-page/plugin_sp.png
diff --git a/public/images/screenshots/bs_st.png b/src/assets/main-page/plugin_st.png
similarity index 100%
rename from public/images/screenshots/bs_st.png
rename to src/assets/main-page/plugin_st.png
diff --git a/src/assets/main-page/sponsor_AjmalParkar006.jpg b/src/assets/main-page/sponsor_AjmalParkar006.jpg
new file mode 100644
index 0000000..14c97f9
Binary files /dev/null and b/src/assets/main-page/sponsor_AjmalParkar006.jpg differ
diff --git a/src/assets/main-page/sponsor_TheBestPessimist.png b/src/assets/main-page/sponsor_TheBestPessimist.png
new file mode 100644
index 0000000..6a6d708
Binary files /dev/null and b/src/assets/main-page/sponsor_TheBestPessimist.png differ
diff --git a/src/assets/main-page/sponsor_appwrite.png b/src/assets/main-page/sponsor_appwrite.png
new file mode 100644
index 0000000..a239ced
Binary files /dev/null and b/src/assets/main-page/sponsor_appwrite.png differ
diff --git a/public/images/sponsors/coderabbit.svg b/src/assets/main-page/sponsor_coderabbit.svg
similarity index 100%
rename from public/images/sponsors/coderabbit.svg
rename to src/assets/main-page/sponsor_coderabbit.svg
diff --git a/public/images/taskbar_bg.png b/src/assets/main-page/taskbar_bg.png
similarity index 100%
rename from public/images/taskbar_bg.png
rename to src/assets/main-page/taskbar_bg.png
diff --git a/src/assets/styles/_breakpoints.scss b/src/assets/styles/_breakpoints.scss
new file mode 100644
index 0000000..531d098
--- /dev/null
+++ b/src/assets/styles/_breakpoints.scss
@@ -0,0 +1,23 @@
+@mixin sm {
+ @media (max-width: 860px) {
+ @content;
+ }
+}
+
+@mixin md {
+ @media (max-width: 1200px) {
+ @content;
+ }
+}
+
+@mixin lg {
+ @media (max-width: 1600px) {
+ @content;
+ }
+}
+
+@mixin x-lg {
+ @media (min-width: 1800px) {
+ @content;
+ }
+}
diff --git a/src/assets/styles/reset.css b/src/assets/styles/reset.css
new file mode 100644
index 0000000..9d802ac
--- /dev/null
+++ b/src/assets/styles/reset.css
@@ -0,0 +1,48 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
diff --git a/src/assets/styles/utils.css b/src/assets/styles/utils.css
new file mode 100644
index 0000000..03da557
--- /dev/null
+++ b/src/assets/styles/utils.css
@@ -0,0 +1,12 @@
+.max-width-container {
+ max-width: 1120px;
+ margin: 0 auto;
+}
+
+.spacer {
+ flex: 1;
+}
+
+.no-transition * {
+ transition: none !important;
+}
diff --git a/src/assets/styles/variables.css b/src/assets/styles/variables.css
new file mode 100644
index 0000000..beb7905
--- /dev/null
+++ b/src/assets/styles/variables.css
@@ -0,0 +1,110 @@
+:root {
+ --text: #000;
+ --muted-text: #888888;
+ --bg: #f7fbff;
+ --bg-hover: #edf2f5;
+ --link: var(--text);
+ --sep: #cecece;
+ --mobile-menu-sep: #cecece;
+ --card: #fff;
+ --card-sep: #e0e8f0;
+ --card-shadow: 0, 0, 0;
+ --card-shadow-opacity-1: 0.07;
+ --card-shadow-opacity-2: 0.03;
+ --card-shadow-opacity-hover-1: 0.09;
+ --card-shadow-opacity-hover-2: 0.06;
+ --package-manager-name: #5A4AB2;
+ --dialog-backdrop: rgba(255, 255, 255, 0.2);
+ --bg-alternate: #fff;
+ --bg-alternate-hover: #edf2f5;
+ --footer-bg: #f9fafb;
+ --footer-text: #000;
+ --color-picker-input-bg: #ddd;
+ --input-bg: #ddd;
+ --input-bg-focus: #fff;
+ --checkbox-bg: #f7fbff;
+ --checkbox-bg-hover: #dfe2e6;
+ --checkbox-bg-active: #c6c9cc;
+ --checkbox-color: #000;
+ --group-bg: #f7fbff;
+ --group-bg-alternate: #edf2f5;
+ --modal: #fff;
+ --code-bg: #eee;
+ --button-primary: #1e90ff;
+ --button-primary-hover: #4169e1;
+ --button-primary-active: #3a5dc7;
+ --button-primary-text: #fff;
+ --button-primary-variant-secondary: #3151b0;
+ --button-primary-variant-secondary-hover: #1f3c92;
+ --button-primary-variant-black: #000;
+ --button-primary-variant-black-hover: var(--button-primary);
+ --button-copy: #ccc;
+ --button-copy-hover: #ddd;
+ --button-copy-active: #bbb;
+ --dialog-button-text: #333;
+ --dialog-button-bg: transparent;
+ --dialog-button-bg-hover: #edf2f5;
+ --dialog-button-bg-active: #ddd;
+ --theme-toggle-button: #fff;
+ --theme-toggle-button-hover: #ddd;
+ --theme-toggle-button-active: #bbb;
+ --theme-toggle-button-icon: #333;
+ --sponsor: #fff;
+ --sponsor-text: #000;
+ --plugin-icon-background: #ededed;
+ --plugin-official-background: #f2bd0c;
+ --plugin-official-text: #594504;
+ --font-family: "Noto Sans", "Segoe UI", "Inter", sans-serif;
+ --font-family-mono: "Source Code Pro", "JetBrains Mono", "Fira Code", "Roboto Mono", monospace;
+}
+
+:root[data-theme="dark"] {
+ --text: #c9d1d9;
+ --muted-text: #797979;
+ --bg: #0d1117;
+ --bg-hover: #10151c;
+ --link: var(--text);
+ --sep: #0f1115;
+ --mobile-menu-sep: #242933;
+ --card: #161b22;
+ --card-sep: #1c2128;
+ --card-shadow: 130, 180, 255;
+ --card-shadow-opacity-1: 0.03;
+ --card-shadow-opacity-2: 0.02;
+ --card-shadow-opacity-hover-1: 0.05;
+ --card-shadow-opacity-hover-2: 0.04;
+ --package-manager-name: #FCFF9B;
+ --dialog-backdrop: rgba(0, 0, 0, 0.2);
+ --bg-alternate: #161b22;
+ --bg-alternate-hover: #1b2029;
+ --footer-bg: #000;
+ --footer-text: #aeaeae;
+ --color-picker-input-bg: #222;
+ --input-bg: #11161f;
+ --input-bg-focus: #263145;
+ --checkbox-bg: #0d1117;
+ --checkbox-bg-hover: #2b374a;
+ --checkbox-bg-active: #394a63;
+ --checkbox-color: #c9d1d9;
+ --group-bg: #2b374a;
+ --group-bg-alternate: #3b4b64;
+ --modal: #2c2c2c;
+ --code-bg: #24292e;
+ --button-primary: #1e90ff;
+ --button-primary-hover: #4169e1;
+ --button-primary-active: #3a5dc7;
+ --button-primary-text: #fff;
+ --button-copy: #444;
+ --button-copy-hover: #555;
+ --button-copy-active: #333;
+ --dialog-button-text: #d8d8d8;
+ --dialog-button-bg: transparent;
+ --dialog-button-bg-hover: #161b22;
+ --dialog-button-bg-active: #1b2029;
+ --theme-toggle-button: transparent;
+ --theme-toggle-button-hover: #262f3b;
+ --theme-toggle-button-active: #364354;
+ --theme-toggle-button-icon: #d8d8d8;
+ --plugin-official-background: #594504;
+ --plugin-official-text: #f2bd0c;
+}
diff --git a/src/components/BuiltInTag.astro b/src/components/BuiltInTag.astro
new file mode 100644
index 0000000..1c19d3b
--- /dev/null
+++ b/src/components/BuiltInTag.astro
@@ -0,0 +1,14 @@
+
Official
+
+
diff --git a/src/components/Button.astro b/src/components/Button.astro
new file mode 100644
index 0000000..a8121fe
--- /dev/null
+++ b/src/components/Button.astro
@@ -0,0 +1,118 @@
+---
+interface Props {
+ id?: string;
+ variant?: "default" | "black" | "secondary";
+ shape?: "pill" | "rounded" | "rectangle";
+ centered?: boolean;
+ href?: string;
+ class?: string;
+}
+
+const {
+ id,
+ variant = "default",
+ shape = "pill",
+ centered = false,
+ href,
+ class: className = "",
+ ...rest
+} = Astro.props;
+---
+
+{!href
+ ?
+ {!Astro.slots.has("second-line")
+ ?
+
+ :
+
+ }
+
+ :
+ {!Astro.slots.has("second-line")
+ ?
+
+ :
+
+ }
+
+}
+
+
diff --git a/src/components/CopyButtonsScript.astro b/src/components/CopyButtonsScript.astro
new file mode 100644
index 0000000..454db63
--- /dev/null
+++ b/src/components/CopyButtonsScript.astro
@@ -0,0 +1,33 @@
+
diff --git a/src/components/DownloadDIalog.astro b/src/components/DownloadDIalog.astro
new file mode 100644
index 0000000..288103e
--- /dev/null
+++ b/src/components/DownloadDIalog.astro
@@ -0,0 +1,158 @@
+---
+import {getGitHubReleaseData} from "@/data/github-release";
+import SmallText from "@/components/SmallText.astro";
+import Button from "@/components/Button.astro";
+import PackageManagerCommand from "@/components/PackageManagerCommand.astro";
+import IconDownload from "@/components/icons/Download.svg";
+import IconZip from "@/components/icons/Zip.svg";
+import IconClose from "@/components/icons/Close.svg";
+
+const data = await getGitHubReleaseData();
+---
+
+
+
+
+
+ {data.tagName} - {data.formattedPublishedAt}
+
+ Release Notes
+
+
+
+
+ Installer
+
+ EXE, {data.installer.formattedSize}
+
+
+
+
+
+ Portable
+
+ ZIP, {data.portable.formattedSize}
+
+
+
+
+
+ Windows Package Manager
+
+
+
+
+
+
+
+ Supports Windows 7+ / Downloads via GitHub
+
+
+
+
+
+
diff --git a/src/components/Footer.astro b/src/components/Footer.astro
new file mode 100644
index 0000000..d8fdb79
--- /dev/null
+++ b/src/components/Footer.astro
@@ -0,0 +1,17 @@
+---
+import Section from "@/components/Section.astro";
+import SmallText from "@/components/SmallText.astro";
+---
+
+
+
diff --git a/src/components/Header.astro b/src/components/Header.astro
new file mode 100644
index 0000000..4f05be5
--- /dev/null
+++ b/src/components/Header.astro
@@ -0,0 +1,212 @@
+---
+import ThemeToggle from '@/components/ThemeToggle.astro';
+import { Picture } from 'astro:assets';
+import Logo from '@/assets/logo.png';
+import IconMenu from '@/components/icons/Menu.astro';
+import Button from '@/components/Button.astro';
+import Section from '@/components/Section.astro';
+import {getBaseUrl} from "@/utils";
+
+const urlPrefix = getBaseUrl(true);
+
+const navLinks = [
+ { href: urlPrefix + '/plugins', text: 'Plugins' },
+ { href: urlPrefix + '/theme-builder', text: 'Theme Builder' },
+ { href: 'https://www.flowlauncher.com/docs/', text: 'Docs' },
+ // Disable the blog for now. Maybe sometime in the future, when we have more time.
+ // { href: '/blog', text: 'Blog' },
+ { href: 'https://github.com/Flow-Launcher/Flow.Launcher', text: 'GitHub' },
+];
+---
+
+
+
+
+
+
+
+
diff --git a/src/components/MaxWidthContainer.astro b/src/components/MaxWidthContainer.astro
new file mode 100644
index 0000000..9f3cc57
--- /dev/null
+++ b/src/components/MaxWidthContainer.astro
@@ -0,0 +1,28 @@
+---
+interface Props {
+ class?: string;
+}
+
+const {
+ class: className = "",
+ ...rest
+} = Astro.props;
+---
+
+
+
+
+
+
diff --git a/src/components/PackageManagerCommand.astro b/src/components/PackageManagerCommand.astro
new file mode 100644
index 0000000..75dc7f7
--- /dev/null
+++ b/src/components/PackageManagerCommand.astro
@@ -0,0 +1,63 @@
+---
+interface Props {
+ packageManager: string;
+ command: string;
+}
+
+const { packageManager, command } = Astro.props;
+
+const fullCommand = `${packageManager} ${command}`;
+---
+
+
+ >
+ {packageManager}
+ {command}
+
+
+ Copy
+
+
+
+
diff --git a/src/components/Section.astro b/src/components/Section.astro
new file mode 100644
index 0000000..50bd676
--- /dev/null
+++ b/src/components/Section.astro
@@ -0,0 +1,53 @@
+---
+import MaxWidthContainer from "@/components/MaxWidthContainer.astro";
+
+interface Props {
+ padding?: number | string;
+ even?: boolean;
+ backgroundColor?: string;
+ class?: string;
+ containerClass?: string;
+ fullHeight?: boolean;
+}
+
+const {
+ padding = 45,
+ even = false,
+ backgroundColor = "transparent",
+ class: className = "",
+ containerClass = "",
+ fullHeight = false,
+ ...rest
+} = Astro.props;
+---
+
+
+
diff --git a/src/components/SectionHeader.astro b/src/components/SectionHeader.astro
new file mode 100644
index 0000000..f9fa8b6
--- /dev/null
+++ b/src/components/SectionHeader.astro
@@ -0,0 +1,41 @@
+---
+interface Props {
+ bigger?: boolean;
+ flex?: boolean;
+}
+
+const { bigger, flex } = Astro.props;
+---
+
+
+
+
+
diff --git a/src/components/SectionSubheader.astro b/src/components/SectionSubheader.astro
new file mode 100644
index 0000000..2691619
--- /dev/null
+++ b/src/components/SectionSubheader.astro
@@ -0,0 +1,23 @@
+
+
+
diff --git a/src/components/SmallText.astro b/src/components/SmallText.astro
new file mode 100644
index 0000000..f8fbb80
--- /dev/null
+++ b/src/components/SmallText.astro
@@ -0,0 +1,45 @@
+---
+interface Props {
+ muted?: boolean;
+ smaller?: boolean;
+ smallest?: boolean;
+ centered?: boolean;
+ class?: string;
+}
+
+const {
+ muted = false,
+ smaller = false,
+ smallest = false,
+ centered = false,
+ class: className = "",
+ ...rest
+} = Astro.props;
+---
+
+
+
+
+
diff --git a/src/components/Swiper.astro b/src/components/Swiper.astro
new file mode 100644
index 0000000..37eedff
--- /dev/null
+++ b/src/components/Swiper.astro
@@ -0,0 +1,109 @@
+---
+interface Props {
+ class?: string;
+ noLoop?: boolean;
+ containsPlugins?: boolean;
+}
+
+const {
+ class: className = "",
+ noLoop = false,
+ containsPlugins = false,
+ ...rest
+} = Astro.props;
+---
+
+
+
+
+
+
+
+
diff --git a/src/components/ThemeToggle.astro b/src/components/ThemeToggle.astro
new file mode 100644
index 0000000..92101c5
--- /dev/null
+++ b/src/components/ThemeToggle.astro
@@ -0,0 +1,68 @@
+---
+import IconMoon from "@/components/icons/Moon.svg";
+import IconSun from "@/components/icons/Sun.svg";
+---
+
+
+
+
+
+
+
+
+
diff --git a/src/components/YouTubeEmbed.astro b/src/components/YouTubeEmbed.astro
new file mode 100644
index 0000000..62fa8a1
--- /dev/null
+++ b/src/components/YouTubeEmbed.astro
@@ -0,0 +1,62 @@
+---
+import IconPlay from "@/components/icons/Play.svg";
+
+interface Props {
+ video: string;
+ imageOnly?: boolean;
+ fullWidth?: boolean;
+}
+
+const {video, imageOnly, fullWidth} = Astro.props;
+
+let id = video;
+if (video.startsWith("https://youtube.com/") || video.startsWith("https://www.youtube.com/")) {
+ const url = new URL(video);
+ id = url.searchParams.get("v") || "";
+} else if (video.startsWith("https://youtu.be/")) {
+ const url = new URL(video);
+ id = url.pathname.slice(1);
+}
+
+const src = !imageOnly ? `https://www.youtube.com/embed/${id}` : `https://i.ytimg.com/vi/${id}/hqdefault.jpg`;
+---
+{imageOnly ?
+
+
+
:
}
+
+
diff --git a/src/components/blog/BlogArticleCard.astro b/src/components/blog/BlogArticleCard.astro
new file mode 100644
index 0000000..46dbb12
--- /dev/null
+++ b/src/components/blog/BlogArticleCard.astro
@@ -0,0 +1,55 @@
+---
+import {formatDate, getBaseUrl} from "@/utils";
+interface Props {
+ title: string;
+ summary: string;
+ date: string | Date;
+ slug: string;
+ pluginSlug?: string;
+}
+
+const {title, summary, date, slug, pluginSlug} = Astro.props;
+const formattedDate = formatDate(date);
+
+const basePrefix = getBaseUrl(true);
+const path = basePrefix + (pluginSlug ? `/plugins/${pluginSlug}/blog/${slug}` : `/blog/${slug}`);
+---
+
+ {title}
+ {summary}
+ {formattedDate}
+
+
+
diff --git a/src/components/contributors/Contributor.astro b/src/components/contributors/Contributor.astro
new file mode 100644
index 0000000..f5282cd
--- /dev/null
+++ b/src/components/contributors/Contributor.astro
@@ -0,0 +1,56 @@
+---
+interface Props {
+ contributor: {
+ id: number;
+ login: string;
+ avatar_url: string;
+ count: number;
+ };
+}
+
+const {contributor} = Astro.props;
+const href = `https://github.com/${contributor.login}`;
+---
+
+
+
+
+
@{contributor.login}
+
{contributor.count} PR{contributor.count > 1 ? "s" : ""}
+
+
+
+
diff --git a/src/components/icons/Close.svg b/src/components/icons/Close.svg
new file mode 100644
index 0000000..71b3acd
--- /dev/null
+++ b/src/components/icons/Close.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/components/icons/Download.svg b/src/components/icons/Download.svg
new file mode 100644
index 0000000..885c987
--- /dev/null
+++ b/src/components/icons/Download.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/components/icons/Menu.astro b/src/components/icons/Menu.astro
new file mode 100644
index 0000000..5237729
--- /dev/null
+++ b/src/components/icons/Menu.astro
@@ -0,0 +1,29 @@
+---
+interface Props {
+ class?: string;
+}
+const {
+ class: className = "",
+ ...rest
+} = Astro.props;
+---
+
+
+
+
+
+
diff --git a/src/components/icons/Moon.svg b/src/components/icons/Moon.svg
new file mode 100644
index 0000000..7eb0076
--- /dev/null
+++ b/src/components/icons/Moon.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/components/icons/Play.svg b/src/components/icons/Play.svg
new file mode 100644
index 0000000..1ff956c
--- /dev/null
+++ b/src/components/icons/Play.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/components/icons/Sun.svg b/src/components/icons/Sun.svg
new file mode 100644
index 0000000..180e8ab
--- /dev/null
+++ b/src/components/icons/Sun.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/components/icons/Zip.svg b/src/components/icons/Zip.svg
new file mode 100644
index 0000000..c0cf600
--- /dev/null
+++ b/src/components/icons/Zip.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/components/main-page/1_HeroSection.astro b/src/components/main-page/1_HeroSection.astro
new file mode 100644
index 0000000..03bf8f1
--- /dev/null
+++ b/src/components/main-page/1_HeroSection.astro
@@ -0,0 +1,179 @@
+---
+import {Picture, getImage} from "astro:assets";
+import SectionHeader from "@/components/SectionHeader.astro";
+import Button from "@/components/Button.astro";
+import Sponsor from "@/components/main-page/Sponsor.astro";
+import Section from "@/components/Section.astro";
+import SectionSubheader from "@/components/SectionSubheader.astro";
+import SmallText from "@/components/SmallText.astro";
+import ScreenshotDark from "@/assets/main-page/dark_screenshot.png";
+import ScreenshotLight from "@/assets/main-page/light_screenshot.png";
+import IconDownload from "@/components/icons/Download.svg";
+import {getGitHubReleaseData} from "@/data/github-release";
+import {getBaseUrl} from "@/utils";
+
+const screenshotBackground = getBaseUrl(true) + "/screenshot_bg.png";
+
+const sponsors = [
+ {
+ href: "https://appwrite.io/",
+ src: import("@/assets/main-page/sponsor_appwrite.png"),
+ alt: "Appwrite",
+ label: undefined,
+ rounded: false,
+ },
+ {
+ href: "https://coderabbit.ai/",
+ src: import("@/assets/main-page/sponsor_coderabbit.svg"),
+ alt: "CodeRabbit",
+ label: undefined,
+ rounded: false,
+ },
+ {
+ href: "https://github.com/TheBestPessimist",
+ src: import("@/assets/main-page/sponsor_TheBestPessimist.png"),
+ alt: "",
+ label: "TheBestPessimist",
+ rounded: false,
+ },
+ {
+ href: "https://github.com/AjmalParkar006",
+ src: import("@/assets/main-page/sponsor_AjmalParkar006.jpg"),
+ alt: "",
+ label: "AjmalParkar006",
+ rounded: true,
+ },
+];
+
+const latestVersion = await getGitHubReleaseData();
+---
+
+
+
+
+
Flow Launcher
+
Quick File Search & App Launcher for Windows
+
+
+ Download
+
+ {latestVersion.tagName}
+ -
+ {latestVersion.formattedPublishedAt}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/main-page/2_StartAnywhereSection.astro b/src/components/main-page/2_StartAnywhereSection.astro
new file mode 100644
index 0000000..b9bf42b
--- /dev/null
+++ b/src/components/main-page/2_StartAnywhereSection.astro
@@ -0,0 +1,79 @@
+---
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import SectionSubheader from "@/components/SectionSubheader.astro";
+import SmallText from "@/components/SmallText.astro";
+import {Picture} from "astro:assets";
+import ImageTaskbar from "@/assets/main-page/taskbar_bg.png";
+import {getBaseUrl} from "@/utils";
+
+const base = getBaseUrl(true);
+
+const webp = base + "/flow-launcher.webp";
+const gif = base + "/flow-launcher.gif";
+---
+
+
+
+
+
+
+
+
+
+
+ Start Flow Launcher anytime, anywhere.
+ Use your customizable hotkey to trigger the search window immediately.
+ ※ Default hotkey is Alt+Space
+
+
+
+
+
diff --git a/src/components/main-page/3_FeaturesSection.astro b/src/components/main-page/3_FeaturesSection.astro
new file mode 100644
index 0000000..29798d7
--- /dev/null
+++ b/src/components/main-page/3_FeaturesSection.astro
@@ -0,0 +1,77 @@
+---
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import Feature from "@/components/main-page/Feature.astro";
+import Swiper from "@/components/Swiper.astro";
+
+const features = [
+ {
+ title: "Open Apps",
+ subtitle: "Search and launch apps quickly.",
+ color: "#e7d8e1",
+ image: import("@/assets/main-page/feat_apps.png")
+ },
+ {
+ title: "Search Files",
+ subtitle: "Use Everything or Windows Search to find files and file contents",
+ color: "#f4dab1",
+ image: import("@/assets/main-page/feat_files.png")
+ },
+ {
+ title: "Web Searches",
+ subtitle: "Browse the Internet with your favorite search engine.",
+ color: "#d0e7ed",
+ image: import("@/assets/main-page/feat_websearch.png")
+ },
+ {
+ title: "Search Bookmarks",
+ subtitle: "Quickly find bookmarks from different browsers.",
+ color: "#ede4cc",
+ image: import("@/assets/main-page/feat_bookmark.png")
+ },
+ {
+ title: "System Commands",
+ subtitle: "Restart, Sleep or shutdown, manage your computer with a couple of keystrokes.",
+ color: "#d7d3dc",
+ image: import("@/assets/main-page/feat_system.png")
+ },
+ {
+ title: "Shell Commands",
+ subtitle: "Easily run batch and PowerShell commands as Administrator or another user.",
+ color: "#b9b9b9",
+ image: import("@/assets/main-page/feat_cli.png")
+ },
+ {
+ title: "Calculator",
+ subtitle: "Do mathematical calculations then copy the result to clipboard for later use.",
+ color: "#c1e1df",
+ image: import("@/assets/main-page/feat_calc.png")
+ },
+ {
+ title: "Windows Settings",
+ subtitle: "Search for Windows & Control Panel settings.",
+ color: "#dddfc9",
+ image: import("@/assets/main-page/feat_windowssettings.png")
+ },
+ {
+ title: "Plugin Store",
+ subtitle: "Browse and install many different types of plugins to add new search capabilities.",
+ color: "#b09cd0",
+ image: import("@/assets/main-page/feat_store.png")
+ }
+];
+---
+
+ Features
+
+
+ {features.map(v =>
+
+ )}
+
+
diff --git a/src/components/main-page/4_CustomizationsSection.astro b/src/components/main-page/4_CustomizationsSection.astro
new file mode 100644
index 0000000..1290be6
--- /dev/null
+++ b/src/components/main-page/4_CustomizationsSection.astro
@@ -0,0 +1,50 @@
+---
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import SectionSubheader from "@/components/SectionSubheader.astro";
+import {Picture} from "astro:assets";
+import ImageTheme from "@/assets/main-page/cm_theme.png";
+import ImageModern from "@/assets/main-page/cm_modern.png";
+---
+
+ Customizations
+ Different themes, animation & sound, or simply build your own
+
+
+
+
+
diff --git a/src/components/main-page/5_PluginsSection.astro b/src/components/main-page/5_PluginsSection.astro
new file mode 100644
index 0000000..4719114
--- /dev/null
+++ b/src/components/main-page/5_PluginsSection.astro
@@ -0,0 +1,65 @@
+---
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import SectionSubheader from "@/components/SectionSubheader.astro";
+import Swiper from "@/components/Swiper.astro";
+import Plugin from "@/components/main-page/Plugin.astro";
+
+const plugins = [
+ {
+ color: "#1ed760",
+ title: "Spotify Premium",
+ subtitle: "Control your Spotify directly from Flow Launcher",
+ author: "fow5040",
+ icon: import("@/assets/main-page/icon_sp.png"),
+ image: import("@/assets/main-page/plugin_sp.png")
+ },
+ {
+ color: "#3a3a3a",
+ title: "Steam Search",
+ subtitle: "Search your Steam game library and launch the games",
+ author: "Garulf",
+ icon: import("@/assets/main-page/icon_st.png"),
+ image: import("@/assets/main-page/plugin_st.png")
+ },
+ {
+ color: "#4e3ba4",
+ title: "Obsidian Notes",
+ subtitle: "Search through your Obsidian notes",
+ author: "Garulf",
+ icon: import("@/assets/main-page/icon_ob.png"),
+ image: import("@/assets/main-page/plugin_ob.png")
+ },
+ {
+ color: "#c1e1df",
+ title: "GitHub Notifications",
+ subtitle: "View your GitHub notifications directly from Flow Launcher",
+ author: "Garulf",
+ icon: import("@/assets/main-page/icon_gh.png"),
+ image: import("@/assets/main-page/plugin_gh.png")
+ }
+];
+---
+
+ Community-made plugins
+ Write your own plugins in C#, F#, Python, JavaScript, or TypeScript.
+
+
+ {plugins.map(v =>
+
+ )}
+
+
+
+
diff --git a/src/components/main-page/6_BlogSection.astro b/src/components/main-page/6_BlogSection.astro
new file mode 100644
index 0000000..7a4ad64
--- /dev/null
+++ b/src/components/main-page/6_BlogSection.astro
@@ -0,0 +1,35 @@
+---
+import {getCollection} from "astro:content";
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import BlogArticle from "@/components/blog/BlogArticleCard.astro";
+
+const blogPosts = (await getCollection("blog")).slice(0, 3);
+---
+
+ Latest blog posts
+
+ {blogPosts.length > 0 ? (
+
+ {blogPosts.map(post => (
+
+ ))}
+
+ ) : (
+ No blog posts yet
+ )}
+
+
+
diff --git a/src/components/main-page/7_SponsorSection.astro b/src/components/main-page/7_SponsorSection.astro
new file mode 100644
index 0000000..06c2874
--- /dev/null
+++ b/src/components/main-page/7_SponsorSection.astro
@@ -0,0 +1,36 @@
+---
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import SectionSubheader from "@/components/SectionSubheader.astro";
+import Button from "@/components/Button.astro";
+---
+
+
+
diff --git a/src/components/main-page/Feature.astro b/src/components/main-page/Feature.astro
new file mode 100644
index 0000000..17532fe
--- /dev/null
+++ b/src/components/main-page/Feature.astro
@@ -0,0 +1,64 @@
+---
+import {Picture} from "astro:assets";
+import type {ImageMetadata} from "astro";
+
+interface Props {
+ title: string;
+ subtitle: string;
+ image: ImageMetadata | Promise<{ default: ImageMetadata }>;
+ color: string;
+}
+
+const {
+ title,
+ subtitle,
+ image,
+ color,
+} = Astro.props;
+---
+
+
+
{title}
+
{subtitle}
+
+
+
diff --git a/src/components/main-page/Plugin.astro b/src/components/main-page/Plugin.astro
new file mode 100644
index 0000000..1bdecd1
--- /dev/null
+++ b/src/components/main-page/Plugin.astro
@@ -0,0 +1,100 @@
+---
+import {Picture} from "astro:assets";
+import type {ImageMetadata} from "astro";
+
+interface Props {
+ title: string;
+ subtitle: string;
+ image: ImageMetadata | Promise<{ default: ImageMetadata }>;
+ icon: ImageMetadata | Promise<{ default: ImageMetadata }>;
+ iconBackground?: string;
+ author: string;
+ color: string;
+}
+
+const {
+ title,
+ subtitle,
+ image,
+ color,
+ icon,
+ iconBackground = "var(--plugin-icon-background)",
+ author,
+} = Astro.props;
+---
+
+
+
+ {title}
+ - {author}
+
+
{subtitle}
+
+
+
diff --git a/src/components/main-page/Sponsor.astro b/src/components/main-page/Sponsor.astro
new file mode 100644
index 0000000..b4c0218
--- /dev/null
+++ b/src/components/main-page/Sponsor.astro
@@ -0,0 +1,57 @@
+---
+import {Picture} from "astro:assets";
+import type {ImageMetadata} from "astro";
+
+interface Props {
+ alt: string;
+ src: ImageMetadata | Promise<{ default: ImageMetadata }>;
+ href: string;
+ label?: string;
+ rounded?: boolean;
+}
+
+const {
+ alt,
+ src,
+ href,
+ label,
+ rounded,
+} = Astro.props;
+---
+
+
+
+
diff --git a/src/components/plugins/InstallPlugin.astro b/src/components/plugins/InstallPlugin.astro
new file mode 100644
index 0000000..cf8afd3
--- /dev/null
+++ b/src/components/plugins/InstallPlugin.astro
@@ -0,0 +1,52 @@
+---
+import type {ExtendedPlugin} from "@/pages/plugins/_types";
+interface Props {
+ plugin: ExtendedPlugin;
+}
+
+const { plugin } = Astro.props;
+
+const fullCommand = `pm install ${plugin.name} by ${plugin.author}`;
+---
+
+ {fullCommand}
+
+
+ Copy
+
+
+
+
diff --git a/src/components/plugins/LabelValue.astro b/src/components/plugins/LabelValue.astro
new file mode 100644
index 0000000..d4c6692
--- /dev/null
+++ b/src/components/plugins/LabelValue.astro
@@ -0,0 +1,29 @@
+---
+interface Props {
+ label: string;
+ value?: string;
+}
+---
+
+
+ {Astro.props.label}
+ {Astro.props.value}
+
+
+
diff --git a/src/components/plugins/Plugin.astro b/src/components/plugins/Plugin.astro
new file mode 100644
index 0000000..6ac19b7
--- /dev/null
+++ b/src/components/plugins/Plugin.astro
@@ -0,0 +1,127 @@
+---
+import BuiltInTag from "@/components/BuiltInTag.astro";
+import Tag from "@/components/plugins/Tag.astro";
+import type {ExtendedPlugin} from "@/pages/plugins/_types";
+import {getBaseUrl} from "@/utils";
+
+interface Props {
+ plugin: ExtendedPlugin;
+ class?: string;
+ minHeight?: boolean;
+ loading?: "lazy" | "eager";
+}
+
+const {
+ plugin,
+ class: className,
+ minHeight,
+ loading = "lazy",
+ ...rest
+} = Astro.props;
+const href = getBaseUrl(true) + `/plugins/${plugin.slug}`;
+
+
+---
+
+
+
+
+
+ {plugin.description}
+
+
+ {plugin.tags.length > 0 ? (
+
+ {plugin.tags.sort().map(tag => {tag} )}
+
+ ) : null}
+
+
+
diff --git a/src/components/plugins/Tag.astro b/src/components/plugins/Tag.astro
new file mode 100644
index 0000000..51acac3
--- /dev/null
+++ b/src/components/plugins/Tag.astro
@@ -0,0 +1,12 @@
+
+
+
diff --git a/src/components/plugins/Tags.astro b/src/components/plugins/Tags.astro
new file mode 100644
index 0000000..64b2932
--- /dev/null
+++ b/src/components/plugins/Tags.astro
@@ -0,0 +1,21 @@
+---
+import Tag from "@/components/plugins/Tag.astro";
+
+interface Props {
+ class?: string;
+ tags: string[];
+}
+
+const {tags, class: className = "", ...rest} = Astro.props;
+---
+
+ {tags.map(tag => {tag} )}
+
+
+
diff --git a/src/components/theme-builder/ThemeBuilder.svelte b/src/components/theme-builder/ThemeBuilder.svelte
new file mode 100644
index 0000000..dc34aad
--- /dev/null
+++ b/src/components/theme-builder/ThemeBuilder.svelte
@@ -0,0 +1,103 @@
+
+
+
+
+
diff --git a/src/components/theme-builder/sidebar/BulletSection.svelte b/src/components/theme-builder/sidebar/BulletSection.svelte
new file mode 100644
index 0000000..f34ab35
--- /dev/null
+++ b/src/components/theme-builder/sidebar/BulletSection.svelte
@@ -0,0 +1,39 @@
+
+
+
diff --git a/src/components/theme-builder/sidebar/PreviewPanelSection.svelte b/src/components/theme-builder/sidebar/PreviewPanelSection.svelte
new file mode 100644
index 0000000..360ad47
--- /dev/null
+++ b/src/components/theme-builder/sidebar/PreviewPanelSection.svelte
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/theme-builder/sidebar/PreviewSettingsSection.svelte b/src/components/theme-builder/sidebar/PreviewSettingsSection.svelte
new file mode 100644
index 0000000..0d1c5f8
--- /dev/null
+++ b/src/components/theme-builder/sidebar/PreviewSettingsSection.svelte
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+ {#each state.settings.activeResults as _, i}
+
+ {/each}
+
+
+
+
+
diff --git a/src/components/theme-builder/sidebar/QueryBoxSection.svelte b/src/components/theme-builder/sidebar/QueryBoxSection.svelte
new file mode 100644
index 0000000..58469bf
--- /dev/null
+++ b/src/components/theme-builder/sidebar/QueryBoxSection.svelte
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/theme-builder/sidebar/ResultsSection.svelte b/src/components/theme-builder/sidebar/ResultsSection.svelte
new file mode 100644
index 0000000..3acf56b
--- /dev/null
+++ b/src/components/theme-builder/sidebar/ResultsSection.svelte
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/theme-builder/sidebar/ScrollbarSection.svelte b/src/components/theme-builder/sidebar/ScrollbarSection.svelte
new file mode 100644
index 0000000..82ba96a
--- /dev/null
+++ b/src/components/theme-builder/sidebar/ScrollbarSection.svelte
@@ -0,0 +1,15 @@
+
+
+
diff --git a/src/components/theme-builder/sidebar/ThemeMetadataSection.svelte b/src/components/theme-builder/sidebar/ThemeMetadataSection.svelte
new file mode 100644
index 0000000..acaca8f
--- /dev/null
+++ b/src/components/theme-builder/sidebar/ThemeMetadataSection.svelte
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+ Please note that this preview is not a one-to-one recreation of the actual Flow Launcher window.
+ It might not always look exactly the same, but it should give you a very good idea of how your theme will look.
+
+
+ Reset
+
+
+
+
+
+
diff --git a/src/components/theme-builder/sidebar/WindowSection.svelte b/src/components/theme-builder/sidebar/WindowSection.svelte
new file mode 100644
index 0000000..851d047
--- /dev/null
+++ b/src/components/theme-builder/sidebar/WindowSection.svelte
@@ -0,0 +1,23 @@
+
+
+
diff --git a/src/components/theme-builder/state/AllState.svelte.ts b/src/components/theme-builder/state/AllState.svelte.ts
new file mode 100644
index 0000000..44c9822
--- /dev/null
+++ b/src/components/theme-builder/state/AllState.svelte.ts
@@ -0,0 +1,138 @@
+import type {IState} from "@/components/theme-builder/state/IState.ts";
+import {SettingsState} from "@/components/theme-builder/state/SettingsState.svelte.ts";
+import {WindowState} from "@/components/theme-builder/state/WindowState.svelte.ts";
+import {QueryBoxState} from "@/components/theme-builder/state/QueryBoxState.svelte.ts";
+import {SeparatorState} from "@/components/theme-builder/state/SeparatorState.svelte.ts";
+import {ResultState} from "@/components/theme-builder/state/ResultState.svelte.ts";
+import {ScrollbarState} from "@/components/theme-builder/state/ScrollbarState.svelte.ts";
+import {BulletState} from "@/components/theme-builder/state/BulletState.svelte.ts";
+import {normalizeBooleanForWpf} from "@/utils.ts";
+import {compressSync, decompressSync} from "fflate";
+import {PreviewPanelState} from "@/components/theme-builder/state/PreviewPanel.svelte.ts";
+
+export class AllState implements IState {
+ settings = new SettingsState();
+ window = new WindowState();
+ queryBox = new QueryBoxState();
+ scrollbar = new ScrollbarState();
+ separator = new SeparatorState();
+ result = new ResultState();
+ bullet = new BulletState();
+ previewPanel = new PreviewPanelState();
+
+ reset(): void {
+ this.settings.reset();
+ this.window.reset();
+ this.queryBox.reset();
+ this.scrollbar.reset();
+ this.separator.reset();
+ this.result.reset();
+ this.bullet.reset();
+ this.previewPanel.reset();
+ }
+
+ toCssProperties(): Record
{
+ return {
+ ...this.window.toCssProperties(),
+ ...this.queryBox.toCssProperties(),
+ ...this.scrollbar.toCssProperties(),
+ ...this.separator.toCssProperties(),
+ ...this.result.toCssProperties(),
+ ...this.bullet.toCssProperties(),
+ ...this.previewPanel.toCssProperties(),
+ };
+ }
+
+ toCssPropertiesAsString(): string {
+ return Object.entries(this.toCssProperties())
+ .map(([key, value]) => `${key}: ${value};`)
+ .join(' ');
+ }
+
+ toXamlString(): string {
+ return `
+
+
+
+
+
+
+
+ ${this.window.toXamlString()}
+ ${this.queryBox.toXamlString()}
+ ${this.separator.toXamlString()}
+ ${this.result.toXamlString()}
+ ${this.bullet.toXamlString()}
+ ${this.scrollbar.toXamlString()}
+ ${this.previewPanel.toXamlString()}
+
+
+ `.trim();
+ }
+
+ fromJSON(data: Record): void {
+ if (data.s)
+ this.settings.fromJSON(data.s);
+
+ if (data.w)
+ this.window.fromJSON(data.w);
+
+ if (data.qb)
+ this.queryBox.fromJSON(data.qb);
+
+ if (data.sb)
+ this.scrollbar.fromJSON(data.sb);
+
+ if (data.se)
+ this.separator.fromJSON(data.se);
+
+ if (data.r)
+ this.result.fromJSON(data.r);
+
+ if (data.b)
+ this.bullet.fromJSON(data.b);
+
+ if (data.pp)
+ this.previewPanel.fromJSON(data.pp);
+ }
+
+ fromEncodedJSON(encodedJson: string): void {
+ try {
+ const decoded = Uint8Array.from(atob(encodedJson), c => c.charCodeAt(0));
+ const decompressed = new TextDecoder().decode(decompressSync(decoded));
+ const json = JSON.parse(decompressed);
+ this.fromJSON(json);
+ } catch (error) {
+ console.error(error);
+ }
+ }
+
+ toJSON(): Record {
+ return {
+ s: this.settings.toJSON(),
+ w: this.window,
+ qb: this.queryBox,
+ sb: this.scrollbar,
+ se: this.separator,
+ r: this.result,
+ b: this.bullet,
+ pp: this.previewPanel,
+ };
+ }
+
+ toEncodedJSON(): string {
+ const jsonString = JSON.stringify(this);
+ const compressed = compressSync(new TextEncoder().encode(jsonString), {
+ level: 9,
+ });
+ return btoa(String.fromCharCode(...compressed));
+ }
+}
diff --git a/src/components/theme-builder/state/BulletState.svelte.ts b/src/components/theme-builder/state/BulletState.svelte.ts
new file mode 100644
index 0000000..d3e9132
--- /dev/null
+++ b/src/components/theme-builder/state/BulletState.svelte.ts
@@ -0,0 +1,127 @@
+import type {IState} from "@/components/theme-builder/state/IState";
+import {normalizeHexColorForWpf, verifyArrayTypes} from "@/utils.ts";
+
+export class BulletState implements IState {
+ regular = $state({
+ visible: false,
+ color: "#ffffff00",
+ width: 4,
+ height: 10,
+ borderRadius: 2,
+ });
+
+ active = $state({
+ visible: false,
+ color: "#D0A23A",
+ width: 4,
+ height: 10,
+ borderRadius: 2,
+ });
+
+ reset(): void {
+ this.regular.visible = false;
+ this.regular.color = "#ffffff00";
+ this.regular.width = 4;
+ this.regular.height = 10;
+ this.regular.borderRadius = 2;
+
+ this.active.visible = false;
+ this.active.color = "#D0A23A";
+ this.active.width = 4;
+ this.active.height = 10;
+ this.active.borderRadius = 2;
+ }
+
+ toCssProperties(): Record {
+ return {
+ '--bullet-regular-color': this.regular.color,
+ '--bullet-regular-width': `${this.regular.width}px`,
+ '--bullet-regular-height': `${this.regular.height}px`,
+ '--bullet-regular-border-radius': `${this.regular.borderRadius}px`,
+
+ '--bullet-active-color': this.active.color,
+ '--bullet-active-width': `${this.active.width}px`,
+ '--bullet-active-height': `${this.active.height}px`,
+ '--bullet-active-border-radius': `${this.active.borderRadius}px`,
+ };
+ }
+
+ toXamlString(): string {
+ return `
+
+
+
+
+ `;
+ }
+
+ private getBulletStyleContent(bullet: typeof this.regular): string {
+ if (bullet.visible) {
+ return `
+
+
+
+
+ `.trim();
+ }
+ return `
+
+ `.trim();
+ }
+
+ fromJSON(data: any[]): void {
+ if (!verifyArrayTypes(
+ data,
+ "number",
+ "string",
+ "number",
+ "number",
+ "number",
+
+ "number",
+ "string",
+ "number",
+ "number",
+ "number")
+ )
+ return;
+
+ this.regular.visible = !!data[0];
+ this.regular.color = data[1];
+ this.regular.width = data[2];
+ this.regular.height = data[3];
+ this.regular.borderRadius = data[4];
+
+ this.active.visible = !!data[5];
+ this.active.color = data[6];
+ this.active.width = data[7];
+ this.active.height = data[8];
+ this.active.borderRadius = data[9];
+ }
+
+ toJSON(): any[] {
+ return [
+ +this.regular.visible,
+ this.regular.color,
+ this.regular.width,
+ this.regular.height,
+ this.regular.borderRadius,
+
+ +this.active.visible,
+ this.active.color,
+ this.active.width,
+ this.active.height,
+ this.active.borderRadius,
+ ];
+ }
+}
diff --git a/src/components/theme-builder/state/IState.ts b/src/components/theme-builder/state/IState.ts
new file mode 100644
index 0000000..1c9edac
--- /dev/null
+++ b/src/components/theme-builder/state/IState.ts
@@ -0,0 +1,7 @@
+export interface IState {
+ toCssProperties(): Record;
+ toXamlString(): string;
+ fromJSON(data: Record | any[]): void;
+ toJSON(): Record | any[];
+ reset(): void;
+}
diff --git a/src/components/theme-builder/state/PreviewPanel.svelte.ts b/src/components/theme-builder/state/PreviewPanel.svelte.ts
new file mode 100644
index 0000000..226e800
--- /dev/null
+++ b/src/components/theme-builder/state/PreviewPanel.svelte.ts
@@ -0,0 +1,172 @@
+import type {IState} from "@/components/theme-builder/state/IState.ts";
+import {getFontSizeSetterForWpf, normalizeHexColorForWpf, verifyArrayTypes} from "@/utils.ts";
+
+export class PreviewPanelState implements IState {
+ separator = $state({
+ color: "#3c454e",
+ width: 1,
+ margins: {
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0,
+ },
+ });
+
+ title = $state({
+ color: "#5888b2",
+ size: 14,
+ style: "Normal",
+ weight: "Normal",
+ });
+
+ subtitle = $state({
+ color: "#8b95a1",
+ size: 12,
+ style: "Normal",
+ weight: "Normal",
+ });
+
+ glyphColor = $state("#8b95a1");
+
+ reset(): void {
+ this.separator.color = "#3c454e";
+ this.separator.width = 1;
+ this.separator.margins.top = 0;
+ this.separator.margins.right = 0;
+ this.separator.margins.bottom = 0;
+ this.separator.margins.left = 0;
+
+ this.title.color = "#5888b2";
+ this.title.size = 14;
+ this.title.style = "Normal";
+ this.title.weight = "Normal";
+
+ this.subtitle.color = "#8b95a1";
+ this.subtitle.size = 12;
+ this.subtitle.style = "Normal";
+ this.subtitle.weight = "Normal";
+
+ this.glyphColor = "#8b95a1";
+ }
+
+ toCssProperties(): Record {
+ return {
+ '--preview-panel-separator-color': this.separator.color,
+ '--preview-panel-separator-width': `${this.separator.width}px`,
+ '--preview-panel-separator-margin-top': `${this.separator.margins.top}px`,
+ '--preview-panel-separator-margin-right': `${this.separator.margins.right}px`,
+ '--preview-panel-separator-margin-bottom': `${this.separator.margins.bottom}px`,
+ '--preview-panel-separator-margin-left': `${this.separator.margins.left}px`,
+
+ '--preview-panel-title-color': this.title.color,
+ '--preview-panel-title-size': `${this.title.size}px`,
+ '--preview-panel-title-style': this.title.style,
+ '--preview-panel-title-weight': this.title.weight,
+
+ '--preview-panel-subtitle-color': this.subtitle.color,
+ '--preview-panel-subtitle-size': `${this.subtitle.size}px`,
+ '--preview-panel-subtitle-style': this.subtitle.style,
+ '--preview-panel-subtitle-weight': this.subtitle.weight,
+
+ '--preview-panel-glyph-color': this.glyphColor,
+ };
+ }
+
+ fromJSON(data: Record): void {
+ if (verifyArrayTypes(data.s, "string", "number", "number", "number", "number", "number")) {
+ this.separator.color = data.s[0];
+ this.separator.width = data.s[1];
+ this.separator.margins.top = data.s[2];
+ this.separator.margins.right = data.s[3];
+ this.separator.margins.bottom = data.s[4];
+ this.separator.margins.left = data.s[5];
+ }
+
+ if (verifyArrayTypes(data.t, "string", "number", "number", "number")) {
+ this.title.color = data.t[0];
+ this.title.size = data.t[1];
+ this.title.style = data.t[2] === 0 ? "Normal" : "Italic";
+ this.title.weight = data.t[3] === 0 ? "Normal" : "Bold";
+ }
+
+ if (verifyArrayTypes(data.st, "string", "number", "number", "number")) {
+ this.subtitle.color = data.st[0];
+ this.subtitle.size = data.st[1];
+ this.subtitle.style = data.st[2] === 0 ? "Normal" : "Italic";
+ this.subtitle.weight = data.st[3] === 0 ? "Normal" : "Bold";
+ }
+
+ if (typeof data.gc === "string")
+ this.glyphColor = data.gc;
+ }
+
+ toJSON(): Record {
+ return {
+ s: [
+ this.separator.color,
+ this.separator.width,
+ this.separator.margins.top,
+ this.separator.margins.right,
+ this.separator.margins.bottom,
+ this.separator.margins.left,
+ ],
+ t: [
+ this.title.color,
+ this.title.size,
+ this.title.style === "Normal" ? 0 : 1,
+ this.title.weight === "Normal" ? 0 : 1,
+ ],
+ st: [
+ this.subtitle.color,
+ this.subtitle.size,
+ this.subtitle.style === "Normal" ? 0 : 1,
+ this.subtitle.weight === "Normal" ? 0 : 1,
+ ],
+ gc: this.glyphColor,
+ };
+ }
+
+ toXamlString(): string {
+ return `
+
+
+
+
+
+
+
+
+ `.trim();
+ }
+}
diff --git a/src/components/theme-builder/state/QueryBoxState.svelte.ts b/src/components/theme-builder/state/QueryBoxState.svelte.ts
new file mode 100644
index 0000000..0ed93ac
--- /dev/null
+++ b/src/components/theme-builder/state/QueryBoxState.svelte.ts
@@ -0,0 +1,293 @@
+import type {IState} from "@/components/theme-builder/state/IState";
+import {getFontSizeSetterForWpf, normalizeHexColorForWpf, normalizeMarginsForWpf, verifyArrayTypes} from "@/utils.ts";
+
+export class QueryBoxState implements IState {
+ suggestionColor = $state("#79817F");
+ textColor = $state("#D2D8E5");
+ caretColor = $state("#FFAA47");
+
+ icon = $state({
+ color: "#79817F",
+ visible: true,
+ width: 32,
+ height: 32,
+ });
+
+ progressBar = $state({
+ color: "#D85E4F",
+ height: 2,
+ });
+
+ date = $state({
+ color: "#79817F",
+ size: 14,
+ fontStyle: "Normal",
+ fontWeight: "Normal",
+ margins: {
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0,
+ },
+ });
+
+ time = $state({
+ color: "#79817F",
+ size: 14,
+ fontStyle: "Normal",
+ fontWeight: "Normal",
+ margins: {
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0,
+ },
+ });
+
+ datetimeMargins = $state({
+ top: 0,
+ right: 56,
+ bottom: 0,
+ left: 0,
+ });
+
+ reset(): void {
+ this.suggestionColor = "#79817F";
+ this.textColor = "#D2D8E5";
+ this.caretColor = "#FFAA47";
+
+ this.icon.color = "#79817F";
+ this.icon.visible = true;
+ this.icon.width = 32;
+ this.icon.height = 32;
+
+ this.progressBar.color = "#D85E4F";
+ this.progressBar.height = 2;
+
+ this.date.color = "#79817F";
+ this.date.size = 14;
+ this.date.fontStyle = "Normal";
+ this.date.fontWeight = "Normal";
+ this.date.margins.top = 0;
+ this.date.margins.right = 0;
+ this.date.margins.bottom = 0;
+ this.date.margins.left = 0;
+
+ this.time.color = "#79817F";
+ this.time.size = 14;
+ this.time.fontStyle = "Normal";
+ this.time.fontWeight = "Normal";
+ this.time.margins.top = 0;
+ this.time.margins.right = 0;
+ this.time.margins.bottom = 0;
+ this.time.margins.left = 0;
+
+ this.datetimeMargins.top = 0;
+ this.datetimeMargins.right = 56;
+ this.datetimeMargins.bottom = 0;
+ this.datetimeMargins.left = 0;
+ }
+
+ toCssProperties(): Record {
+ return {
+ '--suggestion-text-color': this.suggestionColor,
+ '--query-text-color': this.textColor,
+ '--caret-color': this.caretColor,
+ '--progress-bar-color': this.progressBar.color,
+ '--progress-bar-height': `${this.progressBar.height}px`,
+ '--search-icon-color': this.icon.color,
+ '--search-icon-visible': this.icon.visible ? '1' : '0',
+ '--search-icon-width': `${this.icon.width}px`,
+ '--search-icon-height': `${this.icon.height}px`,
+ '--datetime-margins': `${this.datetimeMargins.top}px ${this.datetimeMargins.right}px ${this.datetimeMargins.bottom}px ${this.datetimeMargins.left}px`,
+ '--date-color': this.date.color,
+ '--date-size': `${this.date.size}px`,
+ '--date-font-weight': this.date.fontWeight,
+ '--date-font-style': this.date.fontStyle,
+ '--date-margins': `${this.date.margins.top}px ${this.date.margins.right}px ${this.date.margins.bottom}px ${this.date.margins.left}px`,
+ '--time-color': this.time.color,
+ '--time-size': `${this.time.size}px`,
+ '--time-font-weight': this.time.fontWeight,
+ '--time-font-style': this.time.fontStyle,
+ '--time-margins': `${this.time.margins.top}px ${this.time.margins.right}px ${this.time.margins.bottom}px ${this.time.margins.left}px`,
+ };
+ }
+
+ toXamlString(): string {
+ return `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ `;
+ }
+
+ private getSearchIconStyleContents(): string {
+ if (this.icon.visible)
+ return `
+
+
+
+ `.trim();
+ return `
+
+ `.trim();
+ }
+
+ fromJSON(data: Record): void {
+ if (typeof data.sc === "string")
+ this.suggestionColor = data.sc;
+
+ if (typeof data.tc === "string")
+ this.textColor = data.tc;
+
+ if (typeof data.cc === "string")
+ this.caretColor = data.cc;
+
+ if (verifyArrayTypes(data.i, "string", "number", "number", "number")) {
+ this.icon.color = data.i[0];
+ this.icon.visible = !!data.i[1];
+ this.icon.width = data.i[2];
+ this.icon.height = data.i[3];
+ }
+
+ if (verifyArrayTypes(data.pb, "string", "number")) {
+ this.progressBar.color = data.pb[0];
+ this.progressBar.height = data.pb[1];
+ }
+
+ if (verifyArrayTypes(data.d, "string", "number", "number", "number", "number", "number", "number", "number")) {
+ this.date.color = data.d[0];
+ this.date.size = data.d[1];
+ this.date.fontStyle = data.d[2] === 0 ? "Normal" : "Italic";
+ this.date.fontWeight = data.d[3] === 0 ? "Normal" : "Bold";
+ this.date.margins.top = data.d[4];
+ this.date.margins.right = data.d[5];
+ this.date.margins.bottom = data.d[6];
+ this.date.margins.left = data.d[7];
+ }
+
+ if (verifyArrayTypes(data.t, "string", "number", "number", "number", "number", "number", "number", "number")) {
+ this.time.color = data.t[0];
+ this.time.size = data.t[1];
+ this.time.fontStyle = data.t[2] === 0 ? "Normal" : "Italic";
+ this.time.fontWeight = data.t[3] === 0 ? "Normal" : "Bold";
+ this.time.margins.top = data.t[4];
+ this.time.margins.right = data.t[5];
+ this.time.margins.bottom = data.t[6];
+ this.time.margins.left = data.t[7];
+ }
+
+ if (verifyArrayTypes(data.dm, "number", "number", "number", "number")) {
+ this.datetimeMargins.top = data.dm[0];
+ this.datetimeMargins.right = data.dm[1];
+ this.datetimeMargins.bottom = data.dm[2];
+ this.datetimeMargins.left = data.dm[3];
+ }
+ }
+
+ toJSON(): Record {
+ return {
+ sc: this.suggestionColor,
+ tc: this.textColor,
+ cc: this.caretColor,
+ i: [
+ this.icon.color,
+ +this.icon.visible,
+ this.icon.width,
+ this.icon.height,
+ ],
+ pb: [
+ this.progressBar.color,
+ this.progressBar.height,
+ ],
+ d: [
+ this.date.color,
+ this.date.size,
+ this.date.fontStyle === "Normal" ? 0 : 1,
+ this.date.fontWeight === "Normal" ? 0 : 1,
+ this.date.margins.top,
+ this.date.margins.right,
+ this.date.margins.bottom,
+ this.date.margins.left,
+ ],
+ t: [
+ this.time.color,
+ this.time.size,
+ this.time.fontStyle === "Normal" ? 0 : 1,
+ this.time.fontWeight === "Normal" ? 0 : 1,
+ this.time.margins.top,
+ this.time.margins.right,
+ this.time.margins.bottom,
+ this.time.margins.left,
+ ],
+ dm: [
+ this.datetimeMargins.top,
+ this.datetimeMargins.right,
+ this.datetimeMargins.bottom,
+ this.datetimeMargins.left,
+ ],
+ }
+ };
+}
diff --git a/src/components/theme-builder/state/ResultState.svelte.ts b/src/components/theme-builder/state/ResultState.svelte.ts
new file mode 100644
index 0000000..2555353
--- /dev/null
+++ b/src/components/theme-builder/state/ResultState.svelte.ts
@@ -0,0 +1,388 @@
+import type {IState} from "@/components/theme-builder/state/IState";
+import {getFontSizeSetterForWpf, normalizeHexColorForWpf, normalizeMarginsForWpf, verifyArrayTypes} from "@/utils.ts";
+
+export class ResultState implements IState {
+ regular = $state({
+ shortcut: {
+ color: "#5BAFB0",
+ fontSize: 12,
+ fontStyle: "Normal",
+ fontWeight: "Normal",
+ },
+ glyph: {
+ color: "#5BAFB0",
+ fontSize: 20,
+ },
+ title: "#5989B2",
+ subtitle: "#7B858F",
+ bullet: {
+ color: "transparent",
+ width: 4,
+ height: 10,
+ borderRadius: 2,
+ },
+ });
+
+ active = $state({
+ shortcut: {
+ color: "#EA7354",
+ fontSize: 12,
+ fontStyle: "Normal",
+ fontWeight: "Normal",
+ },
+ glyph: {
+ color: "#FFFFFF",
+ fontSize: 20,
+ },
+ title: "#5BAFB0",
+ subtitle: "#CC8EC8",
+ background: "#3C454E",
+ bullet: {
+ color: "#D0A23A",
+ width: 4,
+ height: 10,
+ borderRadius: 2,
+ },
+ });
+
+ resultListMargins = $state({
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0,
+ });
+
+ margins = $state({
+ left: 0,
+ right: 0,
+ });
+
+ borderRadius = $state(0);
+
+ highlightedText = $state({
+ color: "#FFAA47",
+ fontStyle: "Normal",
+ fontWeight: "Normal",
+ });
+
+ reset(): void {
+ this.regular.shortcut.color = "#5BAFB0";
+ this.regular.shortcut.fontSize = 12;
+ this.regular.shortcut.fontStyle = "Normal";
+ this.regular.shortcut.fontWeight = "Normal";
+
+ this.regular.glyph.color = "#5BAFB0";
+ this.regular.glyph.fontSize = 20;
+
+ this.regular.title = "#5989B2";
+ this.regular.subtitle = "#7B858F";
+
+ this.regular.bullet.color = "transparent";
+ this.regular.bullet.width = 4;
+ this.regular.bullet.height = 10;
+ this.regular.bullet.borderRadius = 2;
+
+ this.active.shortcut.color = "#EA7354";
+ this.active.shortcut.fontSize = 12;
+ this.active.shortcut.fontStyle = "Normal";
+ this.active.shortcut.fontWeight = "Normal";
+
+ this.active.glyph.color = "#FFFFFF";
+ this.active.glyph.fontSize = 20;
+
+ this.active.title = "#5BAFB0";
+ this.active.subtitle = "#CC8EC8";
+ this.active.background = "#3C454E";
+
+ this.active.bullet.color = "#D0A23A";
+ this.active.bullet.width = 4;
+ this.active.bullet.height = 10;
+ this.active.bullet.borderRadius = 2;
+
+ this.resultListMargins.top = 0;
+ this.resultListMargins.right = 0;
+ this.resultListMargins.bottom = 0;
+ this.resultListMargins.left = 0;
+
+ this.margins.left = 0;
+ this.margins.right = 0;
+
+ this.borderRadius = 0;
+
+ this.highlightedText.color = "#FFAA47";
+ this.highlightedText.fontStyle = "Normal";
+ this.highlightedText.fontWeight = "Normal";
+ }
+
+ toCssProperties(): Record {
+ return {
+ '--result-title-color': this.regular.title,
+ '--result-title-active-color': this.active.title,
+
+ '--result-subtitle-color': this.regular.subtitle,
+ '--result-subtitle-active-color': this.active.subtitle,
+
+ '--result-glyph-color': this.regular.glyph.color,
+ '--result-glyph-font-size': `${this.regular.glyph.fontSize}px`,
+
+ '--result-glyph-active-color': this.active.glyph.color,
+ '--result-glyph-active-font-size': `${this.active.glyph.fontSize}px`,
+
+ '--result-shortcut-color': this.regular.shortcut.color,
+ '--result-shortcut-font-size': `${this.regular.shortcut.fontSize}px`,
+ '--result-shortcut-font-style': this.regular.shortcut.fontStyle,
+ '--result-shortcut-font-weight': this.regular.shortcut.fontWeight,
+
+ '--result-shortcut-active-color': this.active.shortcut.color,
+ '--result-shortcut-active-font-size': `${this.active.shortcut.fontSize}px`,
+ '--result-shortcut-active-font-style': this.active.shortcut.fontStyle,
+ '--result-shortcut-active-font-weight': this.active.shortcut.fontWeight,
+
+ '--result-active-background-color': this.active.background,
+ '--result-margin-left': `${this.margins.left}px`,
+ '--result-margin-right': `${this.margins.right}px`,
+ '--result-border-radius': `${this.borderRadius}px`,
+
+ '--result-highlighted-text-color': this.highlightedText.color,
+ '--result-highlighted-text-font-style': this.highlightedText.fontStyle,
+ '--result-highlighted-text-font-weight': this.highlightedText.fontWeight,
+
+ '--result-list-margins': `${this.resultListMargins.top}px ${this.resultListMargins.right}px ${this.resultListMargins.bottom}px ${this.resultListMargins.left}px`,
+ '--result-list-margin-right': `${this.resultListMargins.right}px`,
+ '--result-list-margin-top': `${this.resultListMargins.top}px`,
+ '--result-list-margin-bottom': `${this.resultListMargins.bottom}px`,
+
+ '--result-bullet-color': this.regular.bullet.color,
+ '--result-bullet-width': `${this.regular.bullet.width}px`,
+ '--result-bullet-height': `${this.regular.bullet.height}px`,
+ '--result-bullet-border-radius': `${this.regular.bullet.borderRadius}px`,
+
+ '--result-active-bullet-color': this.active.bullet.color,
+ '--result-active-bullet-width': `${this.active.bullet.width}px`,
+ '--result-active-bullet-height': `${this.active.bullet.height}px`,
+ '--result-active-bullet-border-radius': `${this.active.bullet.borderRadius}px`,
+ };
+ }
+
+ toXamlString(): string {
+ return `
+
+ ${normalizeMarginsForWpf(this.resultListMargins)}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${normalizeHexColorForWpf(this.active.background)}
+ ${this.borderRadius}
+ ${normalizeMarginsForWpf(this.margins)}
+
+
+
+ `;
+ }
+
+ fromJSON(data: Record): void {
+ if (verifyArrayTypes(
+ data.r,
+ "string",
+ "number",
+ "number",
+ "number",
+
+ "string",
+ "number",
+
+ "string",
+ "string",
+
+ "string",
+ "number",
+ "number",
+ "number",
+ )) {
+ this.regular.shortcut.color = data.r[0];
+ this.regular.shortcut.fontSize = data.r[1];
+ this.regular.shortcut.fontStyle = data.r[2] === 0 ? "Normal" : "Italic";
+ this.regular.shortcut.fontWeight = data.r[3] === 0 ? "Normal" : "Bold";
+
+ this.regular.glyph.color = data.r[4];
+ this.regular.glyph.fontSize = data.r[5];
+
+ this.regular.title = data.r[6];
+ this.regular.subtitle = data.r[7];
+
+ this.regular.bullet.color = data.r[8];
+ this.regular.bullet.width = data.r[9];
+ this.regular.bullet.height = data.r[10];
+ this.regular.bullet.borderRadius = data.r[11];
+ }
+
+ if (verifyArrayTypes(
+ data.a,
+ "string",
+ "number",
+ "number",
+ "number",
+
+ "string",
+ "number",
+
+ "string",
+ "string",
+
+ "string",
+
+ "string",
+ "number",
+ "number",
+ "number",
+ )) {
+ this.active.shortcut.color = data.a[0];
+ this.active.shortcut.fontSize = data.a[1];
+ this.active.shortcut.fontStyle = data.a[2] === 0 ? "Normal" : "Italic";
+ this.active.shortcut.fontWeight = data.a[3] === 0 ? "Normal" : "Bold";
+
+ this.active.glyph.color = data.a[4];
+ this.active.glyph.fontSize = data.a[5];
+
+ this.active.title = data.a[6];
+ this.active.subtitle = data.a[7];
+
+ this.active.background = data.a[8];
+
+ this.active.bullet.color = data.a[9];
+ this.active.bullet.width = data.a[10];
+ this.active.bullet.height = data.a[11];
+ this.active.bullet.borderRadius = data.a[12];
+ }
+
+ if (verifyArrayTypes(data.rlm, "number", "number", "number", "number")) {
+ this.resultListMargins.top = data.rlm[0];
+ this.resultListMargins.right = data.rlm[1];
+ this.resultListMargins.bottom = data.rlm[2];
+ this.resultListMargins.left = data.rlm[3];
+ }
+
+ if (verifyArrayTypes(data.margins, "number", "number")) {
+ this.margins.left = data.margins[0];
+ this.margins.right = data.margins[1];
+ }
+
+ if (typeof data.br === "number")
+ this.borderRadius = data.br;
+
+ if (verifyArrayTypes(data.ht, "string", "number", "number")) {
+ this.highlightedText.color = data.ht[0];
+ this.highlightedText.fontStyle = data.ht[1] === 0 ? "Normal" : "Italic";
+ this.highlightedText.fontWeight = data.ht[2] === 0 ? "Normal" : "Bold";
+ }
+ }
+
+ toJSON(): Record {
+ return {
+ r: [
+ this.regular.shortcut.color,
+ this.regular.shortcut.fontSize,
+ this.regular.shortcut.fontStyle === "Normal" ? 0 : 1,
+ this.regular.shortcut.fontWeight === "Normal" ? 0 : 1,
+ this.regular.glyph.color,
+ this.regular.glyph.fontSize,
+ this.regular.title,
+ this.regular.subtitle,
+ this.regular.bullet.color,
+ this.regular.bullet.width,
+ this.regular.bullet.height,
+ this.regular.bullet.borderRadius,
+ ],
+ a: [
+ this.active.shortcut.color,
+ this.active.shortcut.fontSize,
+ this.active.shortcut.fontStyle === "Normal" ? 0 : 1,
+ this.active.shortcut.fontWeight === "Normal" ? 0 : 1,
+ this.active.glyph.color,
+ this.active.glyph.fontSize,
+ this.active.title,
+ this.active.subtitle,
+ this.active.background,
+ this.active.bullet.color,
+ this.active.bullet.width,
+ this.active.bullet.height,
+ this.active.bullet.borderRadius,
+ ],
+ rlm: [
+ this.resultListMargins.top,
+ this.resultListMargins.right,
+ this.resultListMargins.bottom,
+ this.resultListMargins.left,
+ ],
+ m: [
+ this.margins.left,
+ this.margins.right,
+ ],
+ br: this.borderRadius,
+ ht: [
+ this.highlightedText.color,
+ this.highlightedText.fontStyle === "Normal" ? 0 : 1,
+ this.highlightedText.fontWeight === "Normal" ? 0 : 1,
+ ],
+ }
+ }
+}
diff --git a/src/components/theme-builder/state/ScrollbarState.svelte.ts b/src/components/theme-builder/state/ScrollbarState.svelte.ts
new file mode 100644
index 0000000..0eacbe0
--- /dev/null
+++ b/src/components/theme-builder/state/ScrollbarState.svelte.ts
@@ -0,0 +1,70 @@
+import type {IState} from "@/components/theme-builder/state/IState";
+import {normalizeHexColorForWpf, verifyArrayTypes} from "@/utils.ts";
+
+export class ScrollbarState implements IState {
+ width = $state(5);
+ color = $state("#3c454e");
+ borderRadius = $state(5);
+
+ reset(): void {
+ this.width = 5;
+ this.color = "#3c454e";
+ this.borderRadius = 5;
+ }
+
+ toCssProperties(): Record {
+ return {
+ '--scrollbar-width': `${this.width}px`,
+ '--scrollbar-color': this.color,
+ '--scrollbar-border-radius': `${this.borderRadius}px`,
+ };
+ }
+
+ toXamlString(): string {
+ return `
+
+
+
+
+
+ `;
+ }
+
+ fromJSON(data: any[]): void {
+ if (!verifyArrayTypes(data, "number", "string", "number"))
+ return;
+
+ this.width = data[0];
+ this.color = data[1];
+ this.borderRadius = data[2];
+ }
+
+ toJSON(): any[] {
+ return [
+ this.width,
+ this.color,
+ this.borderRadius,
+ ];
+ }
+}
diff --git a/src/components/theme-builder/state/SeparatorState.svelte.ts b/src/components/theme-builder/state/SeparatorState.svelte.ts
new file mode 100644
index 0000000..90ddc5a
--- /dev/null
+++ b/src/components/theme-builder/state/SeparatorState.svelte.ts
@@ -0,0 +1,76 @@
+import type {IState} from "@/components/theme-builder/state/IState";
+import {normalizeHexColorForWpf, normalizeMarginsForWpf, verifyArrayTypes} from "@/utils.ts";
+
+export class SeparatorState implements IState {
+ visible = $state(true);
+ color = $state("#3c454e");
+ margins = $state({
+ top: 1,
+ right: 0,
+ bottom: 0,
+ left: 0,
+ });
+ size = $state(2);
+
+ reset(): void {
+ this.visible = true;
+ this.color = "#3c454e";
+ this.margins = {
+ top: 1,
+ right: 0,
+ bottom: 0,
+ left: 0,
+ };
+ this.size = 2;
+ }
+
+ toCssProperties(): Record {
+ return {
+ '--separator-color': this.color,
+ '--separator-size': `${this.size}px`,
+ '--separator-margins': `${this.margins.top}px ${this.margins.right}px ${this.margins.bottom}px ${this.margins.left}px`,
+ };
+ }
+
+ toXamlString(): string {
+ const color = this.visible ? normalizeHexColorForWpf(this.color) : "Transparent";
+ const height = this.visible ? this.size : 0;
+ const margin = this.visible ? normalizeMarginsForWpf(this.margins) : "0";
+ return `
+
+
+ `;
+ }
+
+ fromJSON(data: any[]): void {
+ if (!verifyArrayTypes(data, "number", "string", "number", "number", "number", "number", "number"))
+ return;
+
+ this.visible = !!data[0];
+ this.color = data[1];
+ this.margins.top = data[2];
+ this.margins.right = data[3];
+ this.margins.bottom = data[4];
+ this.margins.left = data[5];
+ this.size = data[6];
+ }
+
+ toJSON(): any[] {
+ return [
+ +this.visible,
+ this.color,
+ this.margins.top,
+ this.margins.right,
+ this.margins.bottom,
+ this.margins.left,
+ this.size,
+ ];
+ }
+}
diff --git a/src/components/theme-builder/state/SettingsState.svelte.ts b/src/components/theme-builder/state/SettingsState.svelte.ts
new file mode 100644
index 0000000..ca28849
--- /dev/null
+++ b/src/components/theme-builder/state/SettingsState.svelte.ts
@@ -0,0 +1,70 @@
+import type {IState} from "@/components/theme-builder/state/IState.ts";
+import {verifyArrayTypes} from "@/utils.ts";
+
+export class SettingsState implements Omit {
+ name = $state("Hello World Theme");
+ dark = $state(false);
+ backgrounds = $state(false);
+ progressBar = $state(false);
+ caret = $state(false);
+ activeResults = $state([false, false, true, false]);
+ datetime = $state(false);
+ previewPanel = $state(false);
+
+ reset(): void {
+ this.name = "Hello World Theme";
+ this.dark = false;
+ this.backgrounds = false;
+ this.progressBar = false;
+ this.caret = false;
+ this.activeResults = [false, false, true, false];
+ this.datetime = false;
+ this.previewPanel = false;
+ }
+
+ fromJSON(data: any[]): void {
+ if (!verifyArrayTypes(
+ data,
+ "string",
+ "number",
+ "number",
+ "number",
+ "number",
+ "number",
+ "number",
+ "number",
+ ))
+ return;
+
+ this.name = data[0];
+ this.dark = !!data[1];
+ this.backgrounds = !!data[2];
+ this.progressBar = !!data[3];
+ this.caret = !!data[4];
+ this.activeResults[0] = !!(data[5] & 1 << 0);
+ this.activeResults[1] = !!(data[5] & 1 << 1);
+ this.activeResults[2] = !!(data[5] & 1 << 2);
+ this.activeResults[3] = !!(data[5] & 1 << 3);
+ this.datetime = !!data[6];
+ this.previewPanel = !!data[7];
+ }
+
+ toJSON(): any[] {
+ let activeResults = 0;
+
+ for (let i = 0; i < this.activeResults.length; i++) {
+ activeResults |= +this.activeResults[i] << i;
+ }
+
+ return [
+ this.name,
+ +this.dark,
+ +this.backgrounds,
+ +this.progressBar,
+ +this.caret,
+ activeResults,
+ +this.datetime,
+ +this.previewPanel
+ ].flat();
+ }
+}
diff --git a/src/components/theme-builder/state/WindowState.svelte.ts b/src/components/theme-builder/state/WindowState.svelte.ts
new file mode 100644
index 0000000..0c98471
--- /dev/null
+++ b/src/components/theme-builder/state/WindowState.svelte.ts
@@ -0,0 +1,81 @@
+import type {IState} from "@/components/theme-builder/state/IState";
+import {normalizeBooleanForWpf, normalizeHexColorForWpf, verifyArrayTypes} from "@/utils.ts";
+
+export class WindowState implements IState {
+ border = $state({
+ thickness: 2,
+ color: "#6C7279",
+ radius: 5,
+ });
+
+ background = $state({
+ color: "#303840",
+ blur: false,
+ });
+
+ reset(): void {
+ this.border.thickness = 2;
+ this.border.color = "#6C7279";
+ this.border.radius = 5;
+
+ this.background.color = "#303840";
+ this.background.blur = false
+ }
+
+ toCssProperties(): Record {
+ return {
+ '--border-thickness': `${this.border.thickness}px`,
+ '--border-color': this.border.color,
+ '--border-radius': `${this.border.radius}px`,
+ '--background': this.background.color,
+ '--backdrop-blur': this.background.blur ? 'blur(30px)' : 'none',
+ }
+ }
+
+ toXamlString(): string {
+ return `
+
+ ${normalizeBooleanForWpf(this.background.blur)}
+
+
+
+
+
+
+
+ `;
+ }
+
+ fromJSON(data: any[]): void {
+ if (!verifyArrayTypes(data, "number", "string", "number", "string", "number"))
+ return;
+
+ this.border.thickness = data[0];
+ this.border.color = data[1];
+ this.border.radius = data[2];
+ this.background.color = data[3];
+ this.background.blur = !!data[4];
+ }
+
+ toJSON(): any[] {
+ return [
+ this.border.thickness,
+ this.border.color,
+ this.border.radius,
+ this.background.color,
+ +this.background.blur,
+ ];
+ }
+}
diff --git a/src/components/theme-builder/theme-demo/Backgrounds.svelte b/src/components/theme-builder/theme-demo/Backgrounds.svelte
new file mode 100644
index 0000000..7c75aa3
--- /dev/null
+++ b/src/components/theme-builder/theme-demo/Backgrounds.svelte
@@ -0,0 +1,87 @@
+
+
+
+ {#each images as { imagePath, authorUsername, authorName, photoId }, i}
+
+ {/each}
+
+
+
diff --git a/src/components/theme-builder/theme-demo/PreviewPanel.svelte b/src/components/theme-builder/theme-demo/PreviewPanel.svelte
new file mode 100644
index 0000000..d66fbaf
--- /dev/null
+++ b/src/components/theme-builder/theme-demo/PreviewPanel.svelte
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+ A fast and powerful launcher for Windows
+
+
+
+
diff --git a/src/components/theme-builder/theme-demo/QueryBox.svelte b/src/components/theme-builder/theme-demo/QueryBox.svelte
new file mode 100644
index 0000000..2bca8bb
--- /dev/null
+++ b/src/components/theme-builder/theme-demo/QueryBox.svelte
@@ -0,0 +1,174 @@
+
+
+
+
hello World!
+
hel
+
+
+
+
+
+
+
diff --git a/src/components/theme-builder/theme-demo/Result.svelte b/src/components/theme-builder/theme-demo/Result.svelte
new file mode 100644
index 0000000..f489ba1
--- /dev/null
+++ b/src/components/theme-builder/theme-demo/Result.svelte
@@ -0,0 +1,146 @@
+
+
+
+ {#if image}
+
+ {:else if glyph}
+
{glyph}
+ {:else}
+
+ {/if}
+ {#if displayBullet}
+
+ {/if}
+
+
{@render title?.()}
+
{@render subtitle?.()}
+
+
Alt+{shortcut}
+
+
+
diff --git a/src/components/theme-builder/theme-demo/Results.svelte b/src/components/theme-builder/theme-demo/Results.svelte
new file mode 100644
index 0000000..a060de1
--- /dev/null
+++ b/src/components/theme-builder/theme-demo/Results.svelte
@@ -0,0 +1,38 @@
+
+
+
+
+ {#snippet title()}Hel lo world plugin{/snippet}
+
+
+ {#snippet title()}Hi{/snippet}
+ {#snippet subtitle()}Say Hel lo to Flow Launcher{/snippet}
+
+
+ {#snippet title()}Hel lo everyone{/snippet}
+ {#snippet subtitle()}This result has a glyph{/snippet}
+
+
+ {#snippet title()}Hel lo everyone again{/snippet}
+ {#snippet subtitle()}This result also has a glyph{/snippet}
+
+
+
+
+
+
diff --git a/src/components/theme-builder/theme-demo/Scrollbar.svelte b/src/components/theme-builder/theme-demo/Scrollbar.svelte
new file mode 100644
index 0000000..581c1f6
--- /dev/null
+++ b/src/components/theme-builder/theme-demo/Scrollbar.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/src/components/theme-builder/theme-demo/ThemeDemo.svelte b/src/components/theme-builder/theme-demo/ThemeDemo.svelte
new file mode 100644
index 0000000..aa744dc
--- /dev/null
+++ b/src/components/theme-builder/theme-demo/ThemeDemo.svelte
@@ -0,0 +1,117 @@
+
+
+
+ {#if state.settings.backgrounds}
+
+ {/if}
+
+
+
+
+
diff --git a/src/components/theme-builder/ui/Button.svelte b/src/components/theme-builder/ui/Button.svelte
new file mode 100644
index 0000000..7b8d9d8
--- /dev/null
+++ b/src/components/theme-builder/ui/Button.svelte
@@ -0,0 +1,35 @@
+
+
+
+ {@render children()}
+
+
+
diff --git a/src/components/theme-builder/ui/Collapsible.svelte b/src/components/theme-builder/ui/Collapsible.svelte
new file mode 100644
index 0000000..882c71c
--- /dev/null
+++ b/src/components/theme-builder/ui/Collapsible.svelte
@@ -0,0 +1,53 @@
+
+
+
+
+ {@render children()}
+
+
+
+
diff --git a/src/components/theme-builder/ui/CollapsibleGroup.svelte b/src/components/theme-builder/ui/CollapsibleGroup.svelte
new file mode 100644
index 0000000..9aad1fb
--- /dev/null
+++ b/src/components/theme-builder/ui/CollapsibleGroup.svelte
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+ {@render children()}
+
+
+
+
+
diff --git a/src/components/theme-builder/ui/Group.svelte b/src/components/theme-builder/ui/Group.svelte
new file mode 100644
index 0000000..96adc3d
--- /dev/null
+++ b/src/components/theme-builder/ui/Group.svelte
@@ -0,0 +1,41 @@
+
+
+
+
{title}
+
+ {@render children()}
+
+
+
+
diff --git a/src/components/theme-builder/ui/SaveFileButton.svelte b/src/components/theme-builder/ui/SaveFileButton.svelte
new file mode 100644
index 0000000..53dfd42
--- /dev/null
+++ b/src/components/theme-builder/ui/SaveFileButton.svelte
@@ -0,0 +1,30 @@
+
+
+
+ {#if children}
+ {@render children()}
+ {:else}
+ Save File
+ {/if}
+
diff --git a/src/components/theme-builder/ui/Section.svelte b/src/components/theme-builder/ui/Section.svelte
new file mode 100644
index 0000000..8b665d2
--- /dev/null
+++ b/src/components/theme-builder/ui/Section.svelte
@@ -0,0 +1,106 @@
+
+
+
+
+
diff --git a/src/components/theme-builder/ui/UniformGrid.svelte b/src/components/theme-builder/ui/UniformGrid.svelte
new file mode 100644
index 0000000..008a1a2
--- /dev/null
+++ b/src/components/theme-builder/ui/UniformGrid.svelte
@@ -0,0 +1,25 @@
+
+
+
+ {@render children?.()}
+
+
+
diff --git a/src/components/theme-builder/ui/inputs/Checkbox.svelte b/src/components/theme-builder/ui/inputs/Checkbox.svelte
new file mode 100644
index 0000000..1d1f634
--- /dev/null
+++ b/src/components/theme-builder/ui/inputs/Checkbox.svelte
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+ {#if !description}
+ {label}
+ {:else}
+
+
{label}
+
{description}
+
+ {/if}
+
+
+
diff --git a/src/components/theme-builder/ui/inputs/ColorPicker.svelte b/src/components/theme-builder/ui/inputs/ColorPicker.svelte
new file mode 100644
index 0000000..0abe46b
--- /dev/null
+++ b/src/components/theme-builder/ui/inputs/ColorPicker.svelte
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
diff --git a/src/components/theme-builder/ui/inputs/DoubleNumberInput.svelte b/src/components/theme-builder/ui/inputs/DoubleNumberInput.svelte
new file mode 100644
index 0000000..afe09cb
--- /dev/null
+++ b/src/components/theme-builder/ui/inputs/DoubleNumberInput.svelte
@@ -0,0 +1,110 @@
+
+
+
+
+
diff --git a/src/components/theme-builder/ui/inputs/NumberInput.svelte b/src/components/theme-builder/ui/inputs/NumberInput.svelte
new file mode 100644
index 0000000..f50229b
--- /dev/null
+++ b/src/components/theme-builder/ui/inputs/NumberInput.svelte
@@ -0,0 +1,51 @@
+
+
+
+
+
diff --git a/src/components/theme-builder/ui/inputs/QuadrupleNumberInput.svelte b/src/components/theme-builder/ui/inputs/QuadrupleNumberInput.svelte
new file mode 100644
index 0000000..56c17e4
--- /dev/null
+++ b/src/components/theme-builder/ui/inputs/QuadrupleNumberInput.svelte
@@ -0,0 +1,159 @@
+
+
+
+
+
diff --git a/src/components/theme-builder/ui/inputs/RadioGroup.svelte b/src/components/theme-builder/ui/inputs/RadioGroup.svelte
new file mode 100644
index 0000000..f385eb4
--- /dev/null
+++ b/src/components/theme-builder/ui/inputs/RadioGroup.svelte
@@ -0,0 +1,85 @@
+
+
+
+ {#if label}
+
{label}
+ {/if}
+
+ {#each optionObjects as { label, value: optionValue }}
+
+
+
+ {label}
+
+ {/each}
+
+
+
+
diff --git a/src/components/theme-builder/ui/inputs/TextInput.svelte b/src/components/theme-builder/ui/inputs/TextInput.svelte
new file mode 100644
index 0000000..cf8e4e2
--- /dev/null
+++ b/src/components/theme-builder/ui/inputs/TextInput.svelte
@@ -0,0 +1,45 @@
+
+
+
+ {#if label}
+
{label}:
+ {/if}
+
+
+
+
diff --git a/src/constants.ts b/src/constants.ts
new file mode 100644
index 0000000..2127d93
--- /dev/null
+++ b/src/constants.ts
@@ -0,0 +1,28 @@
+export const TAGS = [
+ "AI",
+ "Application Launchers",
+ "Automation",
+ "Browser Tools",
+ "Calculators & Converters",
+ "Date & Time",
+ "Development Tools",
+ "Dictionaries",
+ "Documentation",
+ "Examples",
+ "File Management",
+ "Finance",
+ "Gaming",
+ "Multimedia",
+ "Networking",
+ "Notes",
+ "Productivity",
+ "Programming",
+ "Search",
+ "Security",
+ "System",
+ "Text Tools",
+ "Translation",
+ "Social Media",
+ "Utilities",
+ "Untagged",
+] as const;
diff --git a/src/content.config.ts b/src/content.config.ts
new file mode 100644
index 0000000..f335763
--- /dev/null
+++ b/src/content.config.ts
@@ -0,0 +1,54 @@
+import { defineCollection, z } from "astro:content";
+import { glob } from 'astro/loaders';
+import { TAGS } from "@/constants";
+
+const DATE_NAME_PATTERN = "**/[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_*";
+
+const blog = defineCollection({
+ loader: glob({ pattern: `${DATE_NAME_PATTERN}.md`, base: "./src/data/blog" }),
+ schema: z.object({
+ slug: z.string().min(1),
+ title: z.string().min(3),
+ summary: z.string().min(5),
+ date: z.date(),
+ author: z.string(),
+ draft: z.boolean().optional(),
+ }).strict(),
+});
+
+const plugins = defineCollection({
+ loader: glob({ pattern: ["*/plugin.md"], base: "./src/data/plugins" }),
+ schema: ({ image }) => z.object({
+ id: z.string().min(10),
+ slug: z.string().min(1).optional(),
+ videos: z.array(
+ z.string()
+ .refine(v =>
+ v.startsWith("https://youtube.com/watch") ||
+ v.startsWith("https://www.youtube.com/watch") ||
+ v.startsWith("https://youtu.be/")
+ ),
+ ).optional(),
+ images: z.array(image()).optional(),
+ tags: z.array(z.enum(TAGS)).optional(),
+ draft: z.boolean().optional(),
+ }).strict(),
+});
+
+const pluginBlog = defineCollection({
+ loader: glob({ pattern: [`*/blog/${DATE_NAME_PATTERN}.md`], base: "./src/data/plugins" }),
+ schema: z.object({
+ slug: z.string().min(1),
+ title: z.string().min(3),
+ summary: z.string().min(5),
+ date: z.date(),
+ author: z.string(),
+ draft: z.boolean().optional(),
+ }).strict(),
+});
+
+export const collections = {
+ blog,
+ plugins,
+ pluginBlog,
+};
diff --git a/src/data/blog/_2024-12-20_example.md b/src/data/blog/_2024-12-20_example.md
new file mode 100644
index 0000000..6bb9e87
--- /dev/null
+++ b/src/data/blog/_2024-12-20_example.md
@@ -0,0 +1,10 @@
+---
+slug: example
+title: This is an example of a blog post
+summary: This is an example of a short summary
+date: 2024-12-20
+author: The Flow Launcher Team
+---
+# This is an example blog post
+
+Remove the underscore at the beginning of the file name to publish the blog post.
diff --git a/src/data/built-in-plugins.yml b/src/data/built-in-plugins.yml
new file mode 100644
index 0000000..1dc2d60
--- /dev/null
+++ b/src/data/built-in-plugins.yml
@@ -0,0 +1,15 @@
+- 0ECADE17459B49F587BF81DC3A125110 # BrowserBookmark
+- CEA0FDFC6D3B4085823D60DC76F28855 # Calculator
+- 572be03c74c642baae319fc283e561a8 # Explorer
+- 6A122269676E40EB86EB543B945932B9 # PluginIndicator
+- 9f8f9b14-2518-4907-b211-35ab6290dee7 # PluginsManager
+- b64d0a79-329a-48b0-b53f-d658318a1bf6 # ProcessKiller
+- 791FC278BA414111B8D1886DFE447410 # Program
+- D409510CD0D2481F853690A07E6DC426 # Shell
+- CEA08895D2544B019B2E9C5009600DF4 # Sys
+- 0308FD86DE0A4DEE8D62B9B535370992 # Url
+- 565B73353DBF4806919830B9202EE3BF # WebSearch
+- 5043CETYU6A748679OPA02D27D99677A # WindowsSettings
+- e6a13bf1-5op9-2b96-a7fd-130b7vdt3d14 # QuickLook
+- 427af2d93887868f8179665uy661c6c3 # Hello World Node.js
+- 2f4e384e-76ce-45c3-aea2-b16f5e5c328f # Hello World Python
diff --git a/src/data/featured-plugins.yml b/src/data/featured-plugins.yml
new file mode 100644
index 0000000..fe51488
--- /dev/null
+++ b/src/data/featured-plugins.yml
@@ -0,0 +1 @@
+[]
diff --git a/src/data/github-release.ts b/src/data/github-release.ts
new file mode 100644
index 0000000..8f13d8a
--- /dev/null
+++ b/src/data/github-release.ts
@@ -0,0 +1,58 @@
+import {formatBytes, formatDate} from "@/utils.ts";
+
+interface GHReleaseData {
+ html_url: string;
+ published_at: string;
+ tag_name: string;
+ assets: GHReleaseAsset[];
+}
+
+interface GHReleaseAsset {
+ name: "Flow-Launcher-Portable.zip" | "Flow-Launcher-Setup.exe" | string;
+ browser_download_url: string;
+ size: number;
+}
+
+interface CachedReleaseData {
+ pageLink: string;
+ tagName: string;
+ publishedAt: string;
+ formattedPublishedAt: string;
+
+ installer: CachedAssetData;
+ portable: CachedAssetData;
+}
+
+interface CachedAssetData {
+ url: string;
+ size: number;
+ formattedSize: string;
+}
+
+let cachedReleaseData: CachedReleaseData | null = null;
+
+export async function getGitHubReleaseData(): Promise {
+ if (cachedReleaseData) return cachedReleaseData;
+
+ const data: GHReleaseData = await fetch("https://api.github.com/repos/Flow-Launcher/Flow.Launcher/releases/latest").then(response => response.json());
+
+ cachedReleaseData = {
+ pageLink: data.html_url,
+ tagName: data.tag_name,
+ publishedAt: data.published_at,
+ formattedPublishedAt: formatDate(data.published_at),
+
+ installer: prepareAssetInfo(data.assets.find(asset => asset.name === "Flow-Launcher-Setup.exe")!),
+ portable: prepareAssetInfo(data.assets.find(asset => asset.name === "Flow-Launcher-Portable.zip")!),
+ }
+
+ return cachedReleaseData!;
+}
+
+function prepareAssetInfo(asset: GHReleaseAsset): CachedReleaseData["installer"] {
+ return {
+ url: asset.browser_download_url,
+ size: asset.size,
+ formattedSize: formatBytes(asset.size),
+ };
+}
diff --git a/src/data/plugins/7tv-emotes/plugin.md b/src/data/plugins/7tv-emotes/plugin.md
new file mode 100644
index 0000000..5b745cd
--- /dev/null
+++ b/src/data/plugins/7tv-emotes/plugin.md
@@ -0,0 +1,15 @@
+---
+id: 85eb90ff-b92d-476b-bae4-3d71398e61f9
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Multimedia
+- Search
+- Social Media
+---
diff --git a/src/data/plugins/add2path/plugin.md b/src/data/plugins/add2path/plugin.md
new file mode 100644
index 0000000..32474b2
--- /dev/null
+++ b/src/data/plugins/add2path/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 79BB35BC5B504F04B210D1C41DF14A02
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/amazing-marvin/plugin.md b/src/data/plugins/amazing-marvin/plugin.md
new file mode 100644
index 0000000..ad162fa
--- /dev/null
+++ b/src/data/plugins/amazing-marvin/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 90f799c3-c04e-443b-bce8-eec5fbcba1e9
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+---
diff --git a/src/data/plugins/anilist/AnimePresentation.png b/src/data/plugins/anilist/AnimePresentation.png
new file mode 100644
index 0000000..6af8adf
Binary files /dev/null and b/src/data/plugins/anilist/AnimePresentation.png differ
diff --git a/src/data/plugins/anilist/MangaPresentation.png b/src/data/plugins/anilist/MangaPresentation.png
new file mode 100644
index 0000000..8264776
Binary files /dev/null and b/src/data/plugins/anilist/MangaPresentation.png differ
diff --git a/src/data/plugins/anilist/QueryPresentation.png b/src/data/plugins/anilist/QueryPresentation.png
new file mode 100644
index 0000000..f576f3d
Binary files /dev/null and b/src/data/plugins/anilist/QueryPresentation.png differ
diff --git a/src/data/plugins/anilist/plugin.md b/src/data/plugins/anilist/plugin.md
new file mode 100644
index 0000000..e18e2d8
--- /dev/null
+++ b/src/data/plugins/anilist/plugin.md
@@ -0,0 +1,25 @@
+---
+id: 08AF784C-A014-4A03-822F-6C2F3665A843
+images:
+- QueryPresentation.png
+- AnimePresentation.png
+- MangaPresentation.png
+tags:
+- Utilities
+- Search
+---
+# Flow.Launcher.Plugin.Anilist
+An Anilist plugin for FlowLauncher
+
+- [x] Searching for Anime
+- [x] Adding anime/manga to your list
+- [x] Updating anime/manga entries from flow.
+
+This project uses the AnilistNet API Wrapper (https://github.com/dentolos19/AniListNet)
+
+### Search
+
+- To search
+ - Manga - use tag `m:` -> `al m:Kagurabachi` (Implemented by [NoPlagiarism](https://github.com/NoPlagiarism 'Awesome programmer'))
+ - Anime - use tag `a:` -> `al a:My Hero` (Implemented by [NoPlagiarism](https://github.com/NoPlagiarism 'Awesome programmer'))
+ - Using the default media type - search without a tag -> `al My hero`
diff --git a/src/data/plugins/antd-open-browser/plugin.md b/src/data/plugins/antd-open-browser/plugin.md
new file mode 100644
index 0000000..bdc5b75
--- /dev/null
+++ b/src/data/plugins/antd-open-browser/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 467A8D7E-0DC6-F0C8-347C-BC4B315C397F
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+---
diff --git a/src/data/plugins/any-video-downloader/plugin.md b/src/data/plugins/any-video-downloader/plugin.md
new file mode 100644
index 0000000..70af094
--- /dev/null
+++ b/src/data/plugins/any-video-downloader/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 70CED0AC-3D9D-4255-AD0B-D9A37862E879
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+---
diff --git a/src/data/plugins/app-upgrader/plugin.md b/src/data/plugins/app-upgrader/plugin.md
new file mode 100644
index 0000000..cddd3ec
--- /dev/null
+++ b/src/data/plugins/app-upgrader/plugin.md
@@ -0,0 +1,12 @@
+---
+id: c11d8b37-9967-4af3-b134-a22171d0dba8
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/apps-snapshoter/plugin.md b/src/data/plugins/apps-snapshoter/plugin.md
new file mode 100644
index 0000000..fe9770a
--- /dev/null
+++ b/src/data/plugins/apps-snapshoter/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 0F7232DB70E54C9B91205480C0C56D1F
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Automation
+- Productivity
+- System
+---
diff --git a/src/data/plugins/astro/plugin.md b/src/data/plugins/astro/plugin.md
new file mode 100644
index 0000000..58e840f
--- /dev/null
+++ b/src/data/plugins/astro/plugin.md
@@ -0,0 +1,15 @@
+---
+id: d429a0ef-94e5-4ba6-8eba-b4dd0e69dc48
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Documentation
+- Programming
+- Search
+---
diff --git a/src/data/plugins/aud-flow/plugin.md b/src/data/plugins/aud-flow/plugin.md
new file mode 100644
index 0000000..fce0247
--- /dev/null
+++ b/src/data/plugins/aud-flow/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 7CCD5CC94597483EBC3F179A69511D5C
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+---
diff --git a/src/data/plugins/audio-device-selector/plugin.md b/src/data/plugins/audio-device-selector/plugin.md
new file mode 100644
index 0000000..c4e7515
--- /dev/null
+++ b/src/data/plugins/audio-device-selector/plugin.md
@@ -0,0 +1,13 @@
+---
+id: C04175CF5284406DAA9E30A85EC7DA76
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- Multimedia
+---
diff --git a/src/data/plugins/aws-toolkit/plugin.md b/src/data/plugins/aws-toolkit/plugin.md
new file mode 100644
index 0000000..9e86722
--- /dev/null
+++ b/src/data/plugins/aws-toolkit/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 1602DFD6B9F843A3A31CB9AD5561A9A2
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+---
diff --git a/src/data/plugins/azan/plugin.md b/src/data/plugins/azan/plugin.md
new file mode 100644
index 0000000..4eacd0a
--- /dev/null
+++ b/src/data/plugins/azan/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 3458F01618974683B339D53528A78573
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Date & Time
+---
diff --git a/src/data/plugins/base-converter/plugin.md b/src/data/plugins/base-converter/plugin.md
new file mode 100644
index 0000000..7ca77b7
--- /dev/null
+++ b/src/data/plugins/base-converter/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 6361A46C-D08C-49AB-AAA4-D19E1F2ABA0D
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/base64/plugin.md b/src/data/plugins/base64/plugin.md
new file mode 100644
index 0000000..f95d654
--- /dev/null
+++ b/src/data/plugins/base64/plugin.md
@@ -0,0 +1,12 @@
+---
+id: B75F7BE9E8B544FAB7EADBB581DB7C7B
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+---
diff --git a/src/data/plugins/betterttv-twitch-emotes/plugin.md b/src/data/plugins/betterttv-twitch-emotes/plugin.md
new file mode 100644
index 0000000..ec7d3bd
--- /dev/null
+++ b/src/data/plugins/betterttv-twitch-emotes/plugin.md
@@ -0,0 +1,15 @@
+---
+id: 62A7E77D5AC84177AF902C4A5FF10603
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Multimedia
+- Search
+- Social Media
+---
diff --git a/src/data/plugins/binance-price/plugin.md b/src/data/plugins/binance-price/plugin.md
new file mode 100644
index 0000000..ee0d4db
--- /dev/null
+++ b/src/data/plugins/binance-price/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 9E3D73EA-6618-40B4-AA2A-60F6F60CDD15
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Finance
+---
diff --git a/src/data/plugins/bitwarden/plugin.md b/src/data/plugins/bitwarden/plugin.md
new file mode 100644
index 0000000..ecec6bf
--- /dev/null
+++ b/src/data/plugins/bitwarden/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 5A8EBCEB7F6940E5B628BE122A87B560
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Security
+---
diff --git a/src/data/plugins/board-game-geek/plugin.md b/src/data/plugins/board-game-geek/plugin.md
new file mode 100644
index 0000000..d3060c4
--- /dev/null
+++ b/src/data/plugins/board-game-geek/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 7AB469ED3A2845E6A7D2975ED4C77FE3
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Search
+---
diff --git a/src/data/plugins/browser-bookmarks/plugin.md b/src/data/plugins/browser-bookmarks/plugin.md
new file mode 100644
index 0000000..18cd18f
--- /dev/null
+++ b/src/data/plugins/browser-bookmarks/plugin.md
@@ -0,0 +1,6 @@
+---
+id: 0ECADE17459B49F587BF81DC3A125110
+tags:
+- Browser Tools
+- Search
+---
diff --git a/src/data/plugins/browser-history/plugin.md b/src/data/plugins/browser-history/plugin.md
new file mode 100644
index 0000000..2b3cd74
--- /dev/null
+++ b/src/data/plugins/browser-history/plugin.md
@@ -0,0 +1,13 @@
+---
+id: F6B8C1BC8441496798D2CE2BADB0E95E
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Browser Tools
+- Search
+---
diff --git a/src/data/plugins/bulk-url-opener/plugin.md b/src/data/plugins/bulk-url-opener/plugin.md
new file mode 100644
index 0000000..5620d12
--- /dev/null
+++ b/src/data/plugins/bulk-url-opener/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 2d5036e2-eccc-4254-b88e-de78580e2195
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Automation
+- Browser Tools
+- Productivity
+---
diff --git a/src/data/plugins/calculator/plugin.md b/src/data/plugins/calculator/plugin.md
new file mode 100644
index 0000000..4f9e4f5
--- /dev/null
+++ b/src/data/plugins/calculator/plugin.md
@@ -0,0 +1,5 @@
+---
+id: CEA0FDFC6D3B4085823D60DC76F28855
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/cd-list/plugin.md b/src/data/plugins/cd-list/plugin.md
new file mode 100644
index 0000000..f66a9b2
--- /dev/null
+++ b/src/data/plugins/cd-list/plugin.md
@@ -0,0 +1,13 @@
+---
+id: A3EA904783E14335894354F09DC4B054
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- File Management
+- System
+---
diff --git a/src/data/plugins/chatgpt/plugin.md b/src/data/plugins/chatgpt/plugin.md
new file mode 100644
index 0000000..80d31b2
--- /dev/null
+++ b/src/data/plugins/chatgpt/plugin.md
@@ -0,0 +1,14 @@
+---
+id: df432fe0-9ff7-4ba1-b0fd-5ffd26efbf86
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- AI
+- Productivity
+- Text Tools
+---
diff --git a/src/data/plugins/cider/plugin.md b/src/data/plugins/cider/plugin.md
new file mode 100644
index 0000000..51208f0
--- /dev/null
+++ b/src/data/plugins/cider/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 4e2018ca-4ed0-11ed-bdc3-0242ac120002
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+---
diff --git a/src/data/plugins/cider2/plugin.md b/src/data/plugins/cider2/plugin.md
new file mode 100644
index 0000000..008c5f2
--- /dev/null
+++ b/src/data/plugins/cider2/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 09CA50948EAC4077AACE55D8EA2E9283
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+---
diff --git a/src/data/plugins/ck-flow/plugin.md b/src/data/plugins/ck-flow/plugin.md
new file mode 100644
index 0000000..f5babe4
--- /dev/null
+++ b/src/data/plugins/ck-flow/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 75894EA334FA4C10AC16E28BC4616C4A
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/clipboard-history/plugin.md b/src/data/plugins/clipboard-history/plugin.md
new file mode 100644
index 0000000..72938a1
--- /dev/null
+++ b/src/data/plugins/clipboard-history/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 8025ce8b-b1ce-49cd-af48-b343a0df8606
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+- System
+---
diff --git a/src/data/plugins/clipboard-plus/plugin.md b/src/data/plugins/clipboard-plus/plugin.md
new file mode 100644
index 0000000..0d3fb8a
--- /dev/null
+++ b/src/data/plugins/clipboard-plus/plugin.md
@@ -0,0 +1,13 @@
+---
+id: ff9385ec-0e95-452f-bef2-62456f66fe0f
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+- System
+---
diff --git a/src/data/plugins/clipboardr/plugin.md b/src/data/plugins/clipboardr/plugin.md
new file mode 100644
index 0000000..39b01e3
--- /dev/null
+++ b/src/data/plugins/clipboardr/plugin.md
@@ -0,0 +1,13 @@
+---
+id: ac0201cb-6610-48dd-9c60-e292d5e3a3da
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+- System
+---
diff --git a/src/data/plugins/colors/plugin.md b/src/data/plugins/colors/plugin.md
new file mode 100644
index 0000000..d1ade4c
--- /dev/null
+++ b/src/data/plugins/colors/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 9B36CE6181FC47FBB597AA2C29CD9B0A
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+---
diff --git a/src/data/plugins/cpp-reference/plugin.md b/src/data/plugins/cpp-reference/plugin.md
new file mode 100644
index 0000000..57b9e6d
--- /dev/null
+++ b/src/data/plugins/cpp-reference/plugin.md
@@ -0,0 +1,15 @@
+---
+id: 28b1bc8d-06e1-4bda-8311-f36e8d4f9915
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Programming
+- Documentation
+- Search
+- Development Tools
+---
diff --git a/src/data/plugins/crates.io/plugin.md b/src/data/plugins/crates.io/plugin.md
new file mode 100644
index 0000000..703307f
--- /dev/null
+++ b/src/data/plugins/crates.io/plugin.md
@@ -0,0 +1,14 @@
+---
+id: DBBBC4D4C38147A7B0570A473CFA9521
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+- Search
+---
diff --git a/src/data/plugins/currency-converter/plugin.md b/src/data/plugins/currency-converter/plugin.md
new file mode 100644
index 0000000..573f574
--- /dev/null
+++ b/src/data/plugins/currency-converter/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 18892B7863AC43ABA27859A5A2866DD8
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+- Finance
+---
diff --git a/src/data/plugins/currencypp/plugin.md b/src/data/plugins/currencypp/plugin.md
new file mode 100644
index 0000000..b35d370
--- /dev/null
+++ b/src/data/plugins/currencypp/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 84d9d550-80cb-4e5f-a090-e1ccf3237a40
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+- Finance
+---
diff --git a/src/data/plugins/cursor-workspaces/plugin.md b/src/data/plugins/cursor-workspaces/plugin.md
new file mode 100644
index 0000000..1cda2f4
--- /dev/null
+++ b/src/data/plugins/cursor-workspaces/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 435b5226a00840cebfbdb54dacd26e9d
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Productivity
+- Programming
+---
diff --git a/src/data/plugins/date-calculator/plugin.md b/src/data/plugins/date-calculator/plugin.md
new file mode 100644
index 0000000..a1a325d
--- /dev/null
+++ b/src/data/plugins/date-calculator/plugin.md
@@ -0,0 +1,13 @@
+---
+id: b6a9192c-6646-4c77-bc6b-be4f8195ffda
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+- Date & Time
+---
diff --git a/src/data/plugins/date-diff/plugin.md b/src/data/plugins/date-diff/plugin.md
new file mode 100644
index 0000000..a90212a
--- /dev/null
+++ b/src/data/plugins/date-diff/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 6bfc4672-5550-4d40-b2dc-53093a2417a0
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+- Date & Time
+---
diff --git a/src/data/plugins/dd-flow/plugin.md b/src/data/plugins/dd-flow/plugin.md
new file mode 100644
index 0000000..34d0131
--- /dev/null
+++ b/src/data/plugins/dd-flow/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 735A3608B5D240E5A44357CCF852E329
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Date & Time
+---
diff --git a/src/data/plugins/deep-flow/plugin.md b/src/data/plugins/deep-flow/plugin.md
new file mode 100644
index 0000000..4bbcb35
--- /dev/null
+++ b/src/data/plugins/deep-flow/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 963cdb07-9143-41e6-b77b-14391e8344d8
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Translation
+- Text Tools
+---
diff --git a/src/data/plugins/desktop-cleanup/plugin.md b/src/data/plugins/desktop-cleanup/plugin.md
new file mode 100644
index 0000000..e5a41e2
--- /dev/null
+++ b/src/data/plugins/desktop-cleanup/plugin.md
@@ -0,0 +1,13 @@
+---
+id: a9b5753e-21a6-420f-9dc9-b67ce94ae1e8
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- File Management
+- System
+---
diff --git a/src/data/plugins/devdocs/plugin.md b/src/data/plugins/devdocs/plugin.md
new file mode 100644
index 0000000..1c2dbd8
--- /dev/null
+++ b/src/data/plugins/devdocs/plugin.md
@@ -0,0 +1,15 @@
+---
+id: a3c36e85-793c-4881-90bf-6d791a978a9f
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Documentation
+- Programming
+- Search
+---
diff --git a/src/data/plugins/devtoys-launcher/plugin.md b/src/data/plugins/devtoys-launcher/plugin.md
new file mode 100644
index 0000000..3b52120
--- /dev/null
+++ b/src/data/plugins/devtoys-launcher/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 14b986ef-45ec-44c1-be66-cab460a771f7
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+---
diff --git a/src/data/plugins/dictionary/plugin.md b/src/data/plugins/dictionary/plugin.md
new file mode 100644
index 0000000..3439811
--- /dev/null
+++ b/src/data/plugins/dictionary/plugin.md
@@ -0,0 +1,14 @@
+---
+id: c3406b5c-22f0-4984-b018-3dae897cab3f
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+- Dictionaries
+---
diff --git a/src/data/plugins/dir-quick-jump/plugin.md b/src/data/plugins/dir-quick-jump/plugin.md
new file mode 100644
index 0000000..b9467fc
--- /dev/null
+++ b/src/data/plugins/dir-quick-jump/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 01B2DC8D31394299ACBE3B32D91FA3EC
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- File Management
+- System
+---
diff --git a/src/data/plugins/direct-translate/plugin.md b/src/data/plugins/direct-translate/plugin.md
new file mode 100644
index 0000000..63c647d
--- /dev/null
+++ b/src/data/plugins/direct-translate/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 1b7c732781f94b748ed08351f8200894
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Translation
+- Text Tools
+---
diff --git a/src/data/plugins/discord-timestamps/plugin.md b/src/data/plugins/discord-timestamps/plugin.md
new file mode 100644
index 0000000..c8adb41
--- /dev/null
+++ b/src/data/plugins/discord-timestamps/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 32DD22C2-7E7D-4A49-9032-B57046975824
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Date & Time
+- Social Media
+---
diff --git a/src/data/plugins/dropbox-finder/plugin.md b/src/data/plugins/dropbox-finder/plugin.md
new file mode 100644
index 0000000..032c3d6
--- /dev/null
+++ b/src/data/plugins/dropbox-finder/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 5A1E2AA6-1C6A-4130-990E-973FC5795D87
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- File Management
+---
diff --git a/src/data/plugins/duckduckgo-bang/plugin.md b/src/data/plugins/duckduckgo-bang/plugin.md
new file mode 100644
index 0000000..80aeb05
--- /dev/null
+++ b/src/data/plugins/duckduckgo-bang/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 915f45f7747440f7828621bd8ec0f298
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+---
diff --git a/src/data/plugins/easyssh/plugin.md b/src/data/plugins/easyssh/plugin.md
new file mode 100644
index 0000000..07f7693
--- /dev/null
+++ b/src/data/plugins/easyssh/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 8CBACA12D99946D7B5E4E162EED6B045
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Networking
+- System
+---
diff --git a/src/data/plugins/edge-workspaces/plugin.md b/src/data/plugins/edge-workspaces/plugin.md
new file mode 100644
index 0000000..6b27cdc
--- /dev/null
+++ b/src/data/plugins/edge-workspaces/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 680d46c1-6405-47d4-8edd-62c6058522ae
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Browser Tools
+- Productivity
+---
diff --git a/src/data/plugins/element-flow/plugin.md b/src/data/plugins/element-flow/plugin.md
new file mode 100644
index 0000000..f92db9c
--- /dev/null
+++ b/src/data/plugins/element-flow/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 78c1bfc7-044e-46cd-b920-9e0ae0e7f234
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Documentation
+---
diff --git a/src/data/plugins/email-to/plugin.md b/src/data/plugins/email-to/plugin.md
new file mode 100644
index 0000000..04d1be6
--- /dev/null
+++ b/src/data/plugins/email-to/plugin.md
@@ -0,0 +1,12 @@
+---
+id: F229B92B-C4D1-4A87-B05B-A96ACC486263
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+---
diff --git a/src/data/plugins/emoji-finder/plugin.md b/src/data/plugins/emoji-finder/plugin.md
new file mode 100644
index 0000000..95acf20
--- /dev/null
+++ b/src/data/plugins/emoji-finder/plugin.md
@@ -0,0 +1,13 @@
+---
+id: d50362aa29f04cd59032bb44a5d5f7e5
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/emoji-plus/plugin.md b/src/data/plugins/emoji-plus/plugin.md
new file mode 100644
index 0000000..af7edb6
--- /dev/null
+++ b/src/data/plugins/emoji-plus/plugin.md
@@ -0,0 +1,13 @@
+---
+id: F32C0CF0270944AFAC9298BB67E16292
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/epic-games-store-launcher/plugin.md b/src/data/plugins/epic-games-store-launcher/plugin.md
new file mode 100644
index 0000000..a0a9aa5
--- /dev/null
+++ b/src/data/plugins/epic-games-store-launcher/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 02D91372A4C9429B93BA6365E38FBD4C
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Gaming
+---
diff --git a/src/data/plugins/explorer/plugin.md b/src/data/plugins/explorer/plugin.md
new file mode 100644
index 0000000..018c269
--- /dev/null
+++ b/src/data/plugins/explorer/plugin.md
@@ -0,0 +1,7 @@
+---
+id: 572be03c74c642baae319fc283e561a8
+tags:
+- File Management
+- Search
+- System
+---
diff --git a/src/data/plugins/fabcalc/plugin.md b/src/data/plugins/fabcalc/plugin.md
new file mode 100644
index 0000000..c2c694a
--- /dev/null
+++ b/src/data/plugins/fabcalc/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 4f9e42bbcd9045e1969f97293dfaf4c7
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/fake-data/categories.png b/src/data/plugins/fake-data/categories.png
new file mode 100644
index 0000000..642973a
Binary files /dev/null and b/src/data/plugins/fake-data/categories.png differ
diff --git a/src/data/plugins/fake-data/date-past.png b/src/data/plugins/fake-data/date-past.png
new file mode 100644
index 0000000..7ad8f42
Binary files /dev/null and b/src/data/plugins/fake-data/date-past.png differ
diff --git a/src/data/plugins/fake-data/lorem.png b/src/data/plugins/fake-data/lorem.png
new file mode 100644
index 0000000..3c6ecfe
Binary files /dev/null and b/src/data/plugins/fake-data/lorem.png differ
diff --git a/src/data/plugins/fake-data/plugin.md b/src/data/plugins/fake-data/plugin.md
new file mode 100644
index 0000000..15969e5
--- /dev/null
+++ b/src/data/plugins/fake-data/plugin.md
@@ -0,0 +1,219 @@
+---
+id: 8BE6E623BC294D4684F86A47CA797742
+images:
+- categories.png
+- date-past.png
+- lorem.png
+- random.png
+tags:
+- Text Tools
+---
+
+This plugin lets you generate a wide variety of data types for testing purposes. It can be useful when you need to fill a database with placeholder data, test an API, or create a sample dataset for a project.
+
+## Usage
+
+To use this plugin, type its action keyword (`fake` by default) followed by the category and type of data you want to generate. For example, to generate a random number, you would use the following syntax:
+
+```
+fake random number
+```
+
+You can also use additional arguments when generating data. Available arguments are usually displayed under the first generated result. For example, to generate a number between 10 and 20, you would use the following syntax:
+
+```
+fake random number min:10 max:20
+```
+
+Most arguments are command-specific, but there are two arguments that are available in all commands:
+
+* `repeat:n` — generates the result `n` times. For example:
+ ```
+ > fake random number repeat:5
+ < 60, 92, 40, 1, 87
+ ```
+* `lang:xx` — generates the result in the specified language when applicable. For example:
+ ```
+ > fake name full
+ < Anthony Russel
+
+ > fake name full lang:pl
+ < Aleksandra Kowalska
+ ```
+
+## Full list of supported categories
+
+* Internet
+ * Avatar
+ * Email
+ * ExampleEmail
+ * Username
+ * UsernameUnicode
+ * DomainName
+ * DomainWord
+ * DomainSuffix
+ * IP
+ * Port
+ * IPEndpoint
+ * IPv6
+ * IPv6Endpoint
+ * UserAgent
+ * Mac
+ * Password
+ * Color
+ * Protocol
+ * Url
+ * UrlWithPath
+ * UrlRootedPath
+* Address
+ * ZipCode
+ * City
+ * StreetAddress
+ * CityPrefix
+ * CitySuffix
+ * StreetName
+ * BuildingNumber
+ * StreetSuffix
+ * SecondaryAddress
+ * County
+ * Country
+ * FullAddress
+ * CountryCode
+ * State
+ * StateAbbr
+ * Latitude
+ * Longitude
+ * Direction
+ * CardinalDirection
+ * OrdinalDirection
+* Commerce
+ * Department
+ * Price
+ * Categories
+ * ProductName
+ * Color
+ * Product
+ * ProductAdjective
+ * ProductMaterial
+ * Ean8
+ * Ean13
+* Company
+ * Suffix
+ * Name
+ * CatchPhrase
+ * BS
+* Database
+ * Column
+ * Type
+ * Collation
+ * Engine
+* Date
+ * Past
+ * PastOffset
+ * Soon
+ * SoonOffset
+ * Future
+ * FutureOffset
+ * Between
+ * BetweenOffset
+ * Recent
+ * RecentOffset
+ * Timespan
+ * Month
+ * Weekday
+* Finance
+ * Account
+ * AccountName
+ * Amount
+ * TransactionType
+ * Currency
+ * CreditCardNumber
+ * CreditCardCvv
+ * BitcoinAddress
+ * EthereumAddress
+ * RoutingNumber
+ * BIC
+ * IBAN
+* Hacker
+ * Abbreviation
+ * Adjective
+ * Noun
+ * Verb
+ * IngVerb
+ * Phrase
+* Images
+ * DataUri
+ * PicsumUrl
+ * LoremFlickrUrl
+* Lorem
+ * Word
+ * Sentence
+ * Paragraph
+ * Text
+ * Lines
+ * Slug
+* Name
+ * Full
+ * First
+ * Last
+ * Prefix
+ * Suffix
+* Job
+ * Title
+ * Descriptor
+ * Area
+ * Type
+* Phone
+ * Number
+ * NumberFormat
+* Rant
+ * Review
+* System
+ * FileName
+ * DirectoryPath
+ * FilePath
+ * CommonFileName
+ * MimeType
+ * CommonFileType
+ * CommonFileExt
+ * FileType
+ * FileExt
+ * Semver
+ * Version
+ * Exception
+ * AndroidId
+ * ApplePushToken
+ * BlackberryPint
+* Vehicle
+ * Vin
+ * Manufacturer
+ * Model
+ * Type
+ * Fuel
+* Random
+ * Number
+ * Even
+ * Odd
+ * Double
+ * Decimal
+ * Float
+ * Byte
+ * SByte
+ * Int
+ * UInt
+ * Long
+ * ULong
+ * Short
+ * UShort
+ * Char
+ * String2
+ * Hash
+ * Bool
+ * ReplaceNumbers
+ * Replace
+ * ClampString
+ * Word
+ * GUID
+ * UUID
+ * AlphaNumeric
+ * Hexadecimal
diff --git a/src/data/plugins/fake-data/random.png b/src/data/plugins/fake-data/random.png
new file mode 100644
index 0000000..c60c8fd
Binary files /dev/null and b/src/data/plugins/fake-data/random.png differ
diff --git a/src/data/plugins/fancy-emoji/plugin.md b/src/data/plugins/fancy-emoji/plugin.md
new file mode 100644
index 0000000..52e868f
--- /dev/null
+++ b/src/data/plugins/fancy-emoji/plugin.md
@@ -0,0 +1,13 @@
+---
+id: FF2C31D6A47348FFB9ED4EB26F6794E2
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/favorites/plugin.md b/src/data/plugins/favorites/plugin.md
new file mode 100644
index 0000000..d89db97
--- /dev/null
+++ b/src/data/plugins/favorites/plugin.md
@@ -0,0 +1,13 @@
+---
+id: D0DB38F5-0199-4DFC-8A8D-1B22F68C157C
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+- File Management
+---
diff --git a/src/data/plugins/fend-calculator/plugin.md b/src/data/plugins/fend-calculator/plugin.md
new file mode 100644
index 0000000..8dad5a4
--- /dev/null
+++ b/src/data/plugins/fend-calculator/plugin.md
@@ -0,0 +1,12 @@
+---
+id: E5E5A4BD-39C7-4B41-93F8-0D4850BC317C
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/filezilla/plugin.md b/src/data/plugins/filezilla/plugin.md
new file mode 100644
index 0000000..7fea11d
--- /dev/null
+++ b/src/data/plugins/filezilla/plugin.md
@@ -0,0 +1,14 @@
+---
+id: dc27e477-0aff-45bf-801f-b09d3b843753
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- File Management
+- Development Tools
+---
diff --git a/src/data/plugins/firefox-keyword-bookmarks/plugin.md b/src/data/plugins/firefox-keyword-bookmarks/plugin.md
new file mode 100644
index 0000000..1ffc69d
--- /dev/null
+++ b/src/data/plugins/firefox-keyword-bookmarks/plugin.md
@@ -0,0 +1,14 @@
+---
+id: bb3ca236-f416-46d5-b88b-597748c33dce
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Browser Tools
+- Search
+- Productivity
+---
diff --git a/src/data/plugins/flow-load-notification/plugin.md b/src/data/plugins/flow-load-notification/plugin.md
new file mode 100644
index 0000000..59785c7
--- /dev/null
+++ b/src/data/plugins/flow-load-notification/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 5f48576d-efe7-4562-a4ed-fe64455f1ac1
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- System
+---
diff --git a/src/data/plugins/flow-plugin-urlencode/plugin.md b/src/data/plugins/flow-plugin-urlencode/plugin.md
new file mode 100644
index 0000000..9313023
--- /dev/null
+++ b/src/data/plugins/flow-plugin-urlencode/plugin.md
@@ -0,0 +1,14 @@
+---
+id: D2D2C23B084D411DB66EE0C79D6C2A7C
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Text Tools
+- Programming
+---
diff --git a/src/data/plugins/flow-raindrop/plugin.md b/src/data/plugins/flow-raindrop/plugin.md
new file mode 100644
index 0000000..9050510
--- /dev/null
+++ b/src/data/plugins/flow-raindrop/plugin.md
@@ -0,0 +1,13 @@
+---
+id: B9B8174812E4474D96C148317BE2BFB7
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Productivity
+---
diff --git a/src/data/plugins/flow-rich-presence/plugin.md b/src/data/plugins/flow-rich-presence/plugin.md
new file mode 100644
index 0000000..245a620
--- /dev/null
+++ b/src/data/plugins/flow-rich-presence/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 6CD987FE4D5E43438EE51C43D0961F89
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Social Media
+- Utilities
+---
diff --git a/src/data/plugins/flow-tamer/plugin.md b/src/data/plugins/flow-tamer/plugin.md
new file mode 100644
index 0000000..6ba12ad
--- /dev/null
+++ b/src/data/plugins/flow-tamer/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 2D0AFF97E5A445E3BEDD1081B811075A
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Browser Tools
+- Productivity
+---
diff --git a/src/data/plugins/flow-trumpet/plugin.md b/src/data/plugins/flow-trumpet/plugin.md
new file mode 100644
index 0000000..b65eb9e
--- /dev/null
+++ b/src/data/plugins/flow-trumpet/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 3AF7F9DD4367439AA4730641D99EDA21
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- Multimedia
+---
diff --git a/src/data/plugins/flow-youtube/plugin.md b/src/data/plugins/flow-youtube/plugin.md
new file mode 100644
index 0000000..1678fee
--- /dev/null
+++ b/src/data/plugins/flow-youtube/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 42DE0794627A48B2847E6FDF29DD5561
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- Search
+- Social Media
+---
diff --git a/src/data/plugins/games-launcher/plugin.md b/src/data/plugins/games-launcher/plugin.md
new file mode 100644
index 0000000..4521d5c
--- /dev/null
+++ b/src/data/plugins/games-launcher/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 54545DC7B3A542DBB6C7DA50DEAD455B
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Gaming
+---
diff --git a/src/data/plugins/general-converter/plugin.md b/src/data/plugins/general-converter/plugin.md
new file mode 100644
index 0000000..ee72482
--- /dev/null
+++ b/src/data/plugins/general-converter/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 73f2c04d-176a-4586-9ff5-69fae63321ef
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/git-easy/plugin.md b/src/data/plugins/git-easy/plugin.md
new file mode 100644
index 0000000..53c6e62
--- /dev/null
+++ b/src/data/plugins/git-easy/plugin.md
@@ -0,0 +1,14 @@
+---
+id: AA9EA7B6AB4A4822858BC38FF6344248
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+- Productivity
+---
diff --git a/src/data/plugins/github-notifications/plugin.md b/src/data/plugins/github-notifications/plugin.md
new file mode 100644
index 0000000..584ca08
--- /dev/null
+++ b/src/data/plugins/github-notifications/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 9B66F9CD1BF54CBBADCF1ACB378E33BB
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Productivity
+---
diff --git a/src/data/plugins/github-quick-launcher/plugin.md b/src/data/plugins/github-quick-launcher/plugin.md
new file mode 100644
index 0000000..49e0f4f
--- /dev/null
+++ b/src/data/plugins/github-quick-launcher/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 240B648F33DD4105800747A2749E1B5C
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Search
+---
diff --git a/src/data/plugins/github/plugin.md b/src/data/plugins/github/plugin.md
new file mode 100644
index 0000000..21dd8cc
--- /dev/null
+++ b/src/data/plugins/github/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 6c22cffe6b3546ec9087abe149c4a575
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Search
+---
diff --git a/src/data/plugins/gitmoji-plus/plugin.md b/src/data/plugins/gitmoji-plus/plugin.md
new file mode 100644
index 0000000..f696918
--- /dev/null
+++ b/src/data/plugins/gitmoji-plus/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 218DAC752A2E468AB3781AFAEB481CBF
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/gitmoji/plugin.md b/src/data/plugins/gitmoji/plugin.md
new file mode 100644
index 0000000..eb4f1b4
--- /dev/null
+++ b/src/data/plugins/gitmoji/plugin.md
@@ -0,0 +1,14 @@
+---
+id: dff48291-c333-46ed-8784-115aa85acb4f
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/godot/plugin.md b/src/data/plugins/godot/plugin.md
new file mode 100644
index 0000000..576b4ef
--- /dev/null
+++ b/src/data/plugins/godot/plugin.md
@@ -0,0 +1,14 @@
+---
+id: D8AF059F555C48A380AAD5D57B4A5D61
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Development Tools
+- Gaming
+---
diff --git a/src/data/plugins/google-search-plus/plugin.md b/src/data/plugins/google-search-plus/plugin.md
new file mode 100644
index 0000000..92579f0
--- /dev/null
+++ b/src/data/plugins/google-search-plus/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 4579F00804F94B54B23CF207856E495F
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+---
diff --git a/src/data/plugins/google-translate/plugin.md b/src/data/plugins/google-translate/plugin.md
new file mode 100644
index 0000000..c34a203
--- /dev/null
+++ b/src/data/plugins/google-translate/plugin.md
@@ -0,0 +1,13 @@
+---
+id: e47fca5f-4305-4c14-9928-57d2c319d78e
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Translation
+- Text Tools
+---
diff --git a/src/data/plugins/guid-converter/plugin.md b/src/data/plugins/guid-converter/plugin.md
new file mode 100644
index 0000000..79a5cb7
--- /dev/null
+++ b/src/data/plugins/guid-converter/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 27ad17d5-dacb-4732-9653-03def5f86125
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Calculators & Converters
+---
diff --git a/src/data/plugins/ha-commander/plugin.md b/src/data/plugins/ha-commander/plugin.md
new file mode 100644
index 0000000..a748bb2
--- /dev/null
+++ b/src/data/plugins/ha-commander/plugin.md
@@ -0,0 +1,13 @@
+---
+id: B2D2C23B055D411GH66FF0C79D6C2A6H
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Automation
+- System
+---
diff --git a/src/data/plugins/hacker-news/plugin.md b/src/data/plugins/hacker-news/plugin.md
new file mode 100644
index 0000000..9f0adde
--- /dev/null
+++ b/src/data/plugins/hacker-news/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 140f3da0-7d14-4b20-b897-b4cb155fec2d
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Social Media
+---
diff --git a/src/data/plugins/heidi/plugin.md b/src/data/plugins/heidi/plugin.md
new file mode 100644
index 0000000..fcf4364
--- /dev/null
+++ b/src/data/plugins/heidi/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 76148ECE-AA72-4C68-AFD5-54BA8A3C1F61
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+---
diff --git a/src/data/plugins/hello-world-deno/plugin.md b/src/data/plugins/hello-world-deno/plugin.md
new file mode 100644
index 0000000..2e2557c
--- /dev/null
+++ b/src/data/plugins/hello-world-deno/plugin.md
@@ -0,0 +1,12 @@
+---
+id: baa012dc-141d-4df9-a592-79a71e870e10
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Examples
+- Programming
+---
diff --git a/src/data/plugins/hello-world-nodejs/plugin.md b/src/data/plugins/hello-world-nodejs/plugin.md
new file mode 100644
index 0000000..3cc53fb
--- /dev/null
+++ b/src/data/plugins/hello-world-nodejs/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 427af2d93887868f8179665uy661c6c3
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Examples
+- Programming
+---
diff --git a/src/data/plugins/hello-world-python/plugin.md b/src/data/plugins/hello-world-python/plugin.md
new file mode 100644
index 0000000..dfd5721
--- /dev/null
+++ b/src/data/plugins/hello-world-python/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 2f4e384e-76ce-45c3-aea2-b16f5e5c328f
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Examples
+- Programming
+---
diff --git a/src/data/plugins/hltb/plugin.md b/src/data/plugins/hltb/plugin.md
new file mode 100644
index 0000000..16722ec
--- /dev/null
+++ b/src/data/plugins/hltb/plugin.md
@@ -0,0 +1,13 @@
+---
+id: cdd437bf-10e4-4ef1-b22d-0af20780df63
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Search
+---
diff --git a/src/data/plugins/how-long-to-beat/plugin.md b/src/data/plugins/how-long-to-beat/plugin.md
new file mode 100644
index 0000000..dfe3cff
--- /dev/null
+++ b/src/data/plugins/how-long-to-beat/plugin.md
@@ -0,0 +1,13 @@
+---
+id: dcbb0454f0694431944b1b7f18673a54
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Search
+---
diff --git a/src/data/plugins/http-status-codes/plugin.md b/src/data/plugins/http-status-codes/plugin.md
new file mode 100644
index 0000000..1391bb7
--- /dev/null
+++ b/src/data/plugins/http-status-codes/plugin.md
@@ -0,0 +1,15 @@
+---
+id: 20CA96840A77452B92D83FB3DD01927C
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Search
+- Documentation
+- Networking
+---
diff --git a/src/data/plugins/hypixel-skyblock-wiki/plugin.md b/src/data/plugins/hypixel-skyblock-wiki/plugin.md
new file mode 100644
index 0000000..a68d6ef
--- /dev/null
+++ b/src/data/plugins/hypixel-skyblock-wiki/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 007b90cb-708c-4d36-81bf-82db4550a322
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Search
+- Documentation
+---
diff --git a/src/data/plugins/ip-address/plugin.md b/src/data/plugins/ip-address/plugin.md
new file mode 100644
index 0000000..4fbc6f2
--- /dev/null
+++ b/src/data/plugins/ip-address/plugin.md
@@ -0,0 +1,13 @@
+---
+id: E2D2C23B084D41D1B6F60EC79D62CAH6
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- System
+---
diff --git a/src/data/plugins/ip-details/plugin.md b/src/data/plugins/ip-details/plugin.md
new file mode 100644
index 0000000..73091e1
--- /dev/null
+++ b/src/data/plugins/ip-details/plugin.md
@@ -0,0 +1,13 @@
+---
+id: EEC889D32E2A4F7FA7153C32B0C048F6
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- System
+---
diff --git a/src/data/plugins/ip-mac-address/plugin.md b/src/data/plugins/ip-mac-address/plugin.md
new file mode 100644
index 0000000..a7b9377
--- /dev/null
+++ b/src/data/plugins/ip-mac-address/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 56A92C3AB5714EA9841098CE7D105E11
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- System
+---
diff --git a/src/data/plugins/is-prime/plugin.md b/src/data/plugins/is-prime/plugin.md
new file mode 100644
index 0000000..a5d1047
--- /dev/null
+++ b/src/data/plugins/is-prime/plugin.md
@@ -0,0 +1,12 @@
+---
+id: b9aaddfa36a948f384b31b4fb6186861
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/jetbrains-ide-projects/plugin.md b/src/data/plugins/jetbrains-ide-projects/plugin.md
new file mode 100644
index 0000000..1e127ee
--- /dev/null
+++ b/src/data/plugins/jetbrains-ide-projects/plugin.md
@@ -0,0 +1,14 @@
+---
+id: E1E3DB9C-632D-4187-A5B4-EED6E09CACA7
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+- Search
+---
diff --git a/src/data/plugins/kaomoji/plugin.md b/src/data/plugins/kaomoji/plugin.md
new file mode 100644
index 0000000..fe2d2ad
--- /dev/null
+++ b/src/data/plugins/kaomoji/plugin.md
@@ -0,0 +1,13 @@
+---
+id: B348C4F7608746DAA8B519F223CFC8FB
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/keepass2flow/plugin.md b/src/data/plugins/keepass2flow/plugin.md
new file mode 100644
index 0000000..2f25fea
--- /dev/null
+++ b/src/data/plugins/keepass2flow/plugin.md
@@ -0,0 +1,12 @@
+---
+id: a6da9c8f-523f-4806-a140-45f10af18e21
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Security
+---
diff --git a/src/data/plugins/killer-sudoku-calculator/plugin.md b/src/data/plugins/killer-sudoku-calculator/plugin.md
new file mode 100644
index 0000000..aef3b44
--- /dev/null
+++ b/src/data/plugins/killer-sudoku-calculator/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 9A30A1AFC6719927B20DFEFFA9DCD50D
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Calculators & Converters
+---
diff --git a/src/data/plugins/kitty/plugin.md b/src/data/plugins/kitty/plugin.md
new file mode 100644
index 0000000..09d7d00
--- /dev/null
+++ b/src/data/plugins/kitty/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 898FC7F0-4F38-401B-82E0-A852798C2D59
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- System
+---
diff --git a/src/data/plugins/libre-translate/plugin.md b/src/data/plugins/libre-translate/plugin.md
new file mode 100644
index 0000000..e99cd41
--- /dev/null
+++ b/src/data/plugins/libre-translate/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 81b8c8c8-72ef-427c-a9c1-17cf8f1c766c
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Translation
+- Text Tools
+---
diff --git a/src/data/plugins/linguee/plugin.md b/src/data/plugins/linguee/plugin.md
new file mode 100644
index 0000000..41c0f1c
--- /dev/null
+++ b/src/data/plugins/linguee/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 9316b88a-009d-498c-a980-1aefa44d2fd2
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Translation
+- Text Tools
+---
diff --git a/src/data/plugins/link-opener/plugin.md b/src/data/plugins/link-opener/plugin.md
new file mode 100644
index 0000000..bfcb458
--- /dev/null
+++ b/src/data/plugins/link-opener/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 4905edc2-7feb-4036-bfae-b06efc60c879
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Browser Tools
+- Productivity
+---
diff --git a/src/data/plugins/lorem-ipsum-generator/plugin.md b/src/data/plugins/lorem-ipsum-generator/plugin.md
new file mode 100644
index 0000000..466259f
--- /dev/null
+++ b/src/data/plugins/lorem-ipsum-generator/plugin.md
@@ -0,0 +1,13 @@
+---
+id: e483e4f2-ec67-3c54-2aea-f823c5e5f61b
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Development Tools
+---
diff --git a/src/data/plugins/mcfunction-ansi-highlighter/plugin.md b/src/data/plugins/mcfunction-ansi-highlighter/plugin.md
new file mode 100644
index 0000000..a5dc505
--- /dev/null
+++ b/src/data/plugins/mcfunction-ansi-highlighter/plugin.md
@@ -0,0 +1,14 @@
+---
+id: dae80b9d-368b-4851-9e64-c24ae1d9a5a1
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Text Tools
+- Social Media
+---
diff --git a/src/data/plugins/media-control/plugin.md b/src/data/plugins/media-control/plugin.md
new file mode 100644
index 0000000..64b9b4e
--- /dev/null
+++ b/src/data/plugins/media-control/plugin.md
@@ -0,0 +1,13 @@
+---
+id: C7529F50-2A71-441D-8200-D5C3BCAADAB2
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- System
+---
diff --git a/src/data/plugins/minecraft-multi-launcher/plugin.md b/src/data/plugins/minecraft-multi-launcher/plugin.md
new file mode 100644
index 0000000..0ea3472
--- /dev/null
+++ b/src/data/plugins/minecraft-multi-launcher/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 91B97FA34859445782AEF1893DE4E350
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Gaming
+---
diff --git a/src/data/plugins/mock/plugin.md b/src/data/plugins/mock/plugin.md
new file mode 100644
index 0000000..ca28c8e
--- /dev/null
+++ b/src/data/plugins/mock/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 251B44B4162E470B9167A2954DAEBC6E
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Utilities
+---
diff --git a/src/data/plugins/my-anime-list/plugin.md b/src/data/plugins/my-anime-list/plugin.md
new file mode 100644
index 0000000..63092f9
--- /dev/null
+++ b/src/data/plugins/my-anime-list/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 7463e642-7ab5-4df5-b537-56eefcc53e74
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Multimedia
+---
diff --git a/src/data/plugins/my-ips/plugin.md b/src/data/plugins/my-ips/plugin.md
new file mode 100644
index 0000000..ce2a199
--- /dev/null
+++ b/src/data/plugins/my-ips/plugin.md
@@ -0,0 +1,13 @@
+---
+id: F03364BE-101B-4988-B555-528B961E6A86
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- System
+---
diff --git a/src/data/plugins/nexusmods-search/plugin.md b/src/data/plugins/nexusmods-search/plugin.md
new file mode 100644
index 0000000..ab3ec8f
--- /dev/null
+++ b/src/data/plugins/nexusmods-search/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 3C62514E3C8644D583E3F12202F11161
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Gaming
+---
diff --git a/src/data/plugins/nightlight/plugin.md b/src/data/plugins/nightlight/plugin.md
new file mode 100644
index 0000000..825a3c5
--- /dev/null
+++ b/src/data/plugins/nightlight/plugin.md
@@ -0,0 +1,13 @@
+---
+id: ef3a6ece-ca05-4d4f-92ba-2ff8a67e017b
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- Utilities
+---
diff --git a/src/data/plugins/notion-search/plugin.md b/src/data/plugins/notion-search/plugin.md
new file mode 100644
index 0000000..2e16a34
--- /dev/null
+++ b/src/data/plugins/notion-search/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 2bf97885-af0d-11ee-94b6-00e04c239987
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Productivity
+- Notes
+---
diff --git a/src/data/plugins/notion/plugin.md b/src/data/plugins/notion/plugin.md
new file mode 100644
index 0000000..954874b
--- /dev/null
+++ b/src/data/plugins/notion/plugin.md
@@ -0,0 +1,14 @@
+---
+id: BDC409081E7F4D879FC1FE8BC7F9D606
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Productivity
+- Notes
+---
diff --git a/src/data/plugins/number-converter/plugin.md b/src/data/plugins/number-converter/plugin.md
new file mode 100644
index 0000000..15ab1fd
--- /dev/null
+++ b/src/data/plugins/number-converter/plugin.md
@@ -0,0 +1,12 @@
+---
+id: d6675ca0-9da6-4361-8342-95564214cd04
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/obsidian-notes/plugin.md b/src/data/plugins/obsidian-notes/plugin.md
new file mode 100644
index 0000000..eac87d0
--- /dev/null
+++ b/src/data/plugins/obsidian-notes/plugin.md
@@ -0,0 +1,14 @@
+---
+id: F0DC45CD032F438C9B900679BD9B117A
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Productivity
+- Notes
+---
diff --git a/src/data/plugins/obsidian/plugin.md b/src/data/plugins/obsidian/plugin.md
new file mode 100644
index 0000000..c8d3c64
--- /dev/null
+++ b/src/data/plugins/obsidian/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 028C97F910684231AB09B5DD5997D424
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Productivity
+- Notes
+---
diff --git a/src/data/plugins/ollama/plugin.md b/src/data/plugins/ollama/plugin.md
new file mode 100644
index 0000000..e9be968
--- /dev/null
+++ b/src/data/plugins/ollama/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 129ae526-b5c7-4ba5-9f94-d60dffd68b98
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- AI
+- Productivity
+- Text Tools
+---
diff --git a/src/data/plugins/one-time-password/plugin.md b/src/data/plugins/one-time-password/plugin.md
new file mode 100644
index 0000000..d0ca539
--- /dev/null
+++ b/src/data/plugins/one-time-password/plugin.md
@@ -0,0 +1,12 @@
+---
+id: EAE9772F43F949CAB65F826300C5AD3C
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Security
+---
diff --git a/src/data/plugins/onenote/plugin.md b/src/data/plugins/onenote/plugin.md
new file mode 100644
index 0000000..a4773b0
--- /dev/null
+++ b/src/data/plugins/onenote/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 506B2EE8-4117-4BDF-8F00-DF58498DF922
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Productivity
+- Notes
+---
diff --git a/src/data/plugins/open-window-search/plugin.md b/src/data/plugins/open-window-search/plugin.md
new file mode 100644
index 0000000..dde7984
--- /dev/null
+++ b/src/data/plugins/open-window-search/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 0A3D1C9663EB49308749EC0FED268729
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- Productivity
+- Search
+---
diff --git a/src/data/plugins/periodic-table/plugin.md b/src/data/plugins/periodic-table/plugin.md
new file mode 100644
index 0000000..b99024d
--- /dev/null
+++ b/src/data/plugins/periodic-table/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 3998f3c6-1271-4590-a715-0f2a5745851c
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Documentation
+---
diff --git a/src/data/plugins/playnite/plugin.md b/src/data/plugins/playnite/plugin.md
new file mode 100644
index 0000000..a26c49b
--- /dev/null
+++ b/src/data/plugins/playnite/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 625A2812D5364D708582FDD9ACCD8C93
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Gaming
+---
diff --git a/src/data/plugins/plexy/plugin.md b/src/data/plugins/plexy/plugin.md
new file mode 100644
index 0000000..7cb0b80
--- /dev/null
+++ b/src/data/plugins/plexy/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 32D9F15C38EE400EA7E3DF57DA15BFD5
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- Search
+- Networking
+---
diff --git a/src/data/plugins/plugin-indicator/plugin.md b/src/data/plugins/plugin-indicator/plugin.md
new file mode 100644
index 0000000..a1ff177
--- /dev/null
+++ b/src/data/plugins/plugin-indicator/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 6A122269676E40EB86EB543B945932B9
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Documentation
+---
diff --git a/src/data/plugins/plugin-runner/plugin.md b/src/data/plugins/plugin-runner/plugin.md
new file mode 100644
index 0000000..c1b3df2
--- /dev/null
+++ b/src/data/plugins/plugin-runner/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 176690627AB54C8381A7FD99A3519F42
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+---
diff --git a/src/data/plugins/plugins-manager/plugin.md b/src/data/plugins/plugins-manager/plugin.md
new file mode 100644
index 0000000..2c97e93
--- /dev/null
+++ b/src/data/plugins/plugins-manager/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 9f8f9b14-2518-4907-b211-35ab6290dee7
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Utilities
+---
diff --git a/src/data/plugins/poi-poi-clipboard/plugin.md b/src/data/plugins/poi-poi-clipboard/plugin.md
new file mode 100644
index 0000000..11e5fd3
--- /dev/null
+++ b/src/data/plugins/poi-poi-clipboard/plugin.md
@@ -0,0 +1,13 @@
+---
+id: D738C474-9262-4B94-B58D-0413ED8EB9C6
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- Text Tools
+---
diff --git a/src/data/plugins/pokedex/plugin.md b/src/data/plugins/pokedex/plugin.md
new file mode 100644
index 0000000..ca2e310
--- /dev/null
+++ b/src/data/plugins/pokedex/plugin.md
@@ -0,0 +1,13 @@
+---
+id: eda56b23-b5c5-48d9-be0d-05ccb907c86d
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Search
+---
diff --git a/src/data/plugins/powertoys/plugin.md b/src/data/plugins/powertoys/plugin.md
new file mode 100644
index 0000000..d73f97d
--- /dev/null
+++ b/src/data/plugins/powertoys/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 0930723F-73EA-488A-BEE9-8B8D4845B2F1
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+- System
+---
diff --git a/src/data/plugins/process-killer/plugin.md b/src/data/plugins/process-killer/plugin.md
new file mode 100644
index 0000000..1921afb
--- /dev/null
+++ b/src/data/plugins/process-killer/plugin.md
@@ -0,0 +1,12 @@
+---
+id: b64d0a79-329a-48b0-b53f-d658318a1bf6
+# Uncomment and fill in relevant sections if you provide videos and/or images
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/program/plugin.md b/src/data/plugins/program/plugin.md
new file mode 100644
index 0000000..ddc57f2
--- /dev/null
+++ b/src/data/plugins/program/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 791FC278BA414111B8D1886DFE447410
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- System
+---
diff --git a/src/data/plugins/putty/plugin.md b/src/data/plugins/putty/plugin.md
new file mode 100644
index 0000000..531c3f4
--- /dev/null
+++ b/src/data/plugins/putty/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 54A6672C06E047A48A7D88C78FA5F13E
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- Development Tools
+---
diff --git a/src/data/plugins/pyrepl/plugin.md b/src/data/plugins/pyrepl/plugin.md
new file mode 100644
index 0000000..7b8928c
--- /dev/null
+++ b/src/data/plugins/pyrepl/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 8d7d2301-4d69-4da2-a19b-e51c8ea239a9
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+---
diff --git a/src/data/plugins/qr-code-generator/plugin.md b/src/data/plugins/qr-code-generator/plugin.md
new file mode 100644
index 0000000..b1fef55
--- /dev/null
+++ b/src/data/plugins/qr-code-generator/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 340E73A8A8C148A28082C90207E097B3
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- Text Tools
+- Utilities
+---
diff --git a/src/data/plugins/qr-flow/plugin.md b/src/data/plugins/qr-flow/plugin.md
new file mode 100644
index 0000000..fad29d7
--- /dev/null
+++ b/src/data/plugins/qr-flow/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 725660A1CB3D4FFE978A8B477EB376B4
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- Text Tools
+- Utilities
+---
diff --git a/src/data/plugins/quick-uninstaller/plugin.md b/src/data/plugins/quick-uninstaller/plugin.md
new file mode 100644
index 0000000..6b20102
--- /dev/null
+++ b/src/data/plugins/quick-uninstaller/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 095A6AE3A255532EAAD78F05A71D4981
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/quicklook/plugin.md b/src/data/plugins/quicklook/plugin.md
new file mode 100644
index 0000000..dc59f0f
--- /dev/null
+++ b/src/data/plugins/quicklook/plugin.md
@@ -0,0 +1,11 @@
+---
+id: e6a13bf1-5op9-2b96-a7fd-130b7vdt3d14
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- File Management
+---
diff --git a/src/data/plugins/rdp/plugin.md b/src/data/plugins/rdp/plugin.md
new file mode 100644
index 0000000..f64e341
--- /dev/null
+++ b/src/data/plugins/rdp/plugin.md
@@ -0,0 +1,12 @@
+---
+id: B7CDDEA47E354243BEE0434DDBAE438A
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- System
+---
diff --git a/src/data/plugins/recent-projects-open/plugin.md b/src/data/plugins/recent-projects-open/plugin.md
new file mode 100644
index 0000000..171b02c
--- /dev/null
+++ b/src/data/plugins/recent-projects-open/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 7f805128-d4f3-4bfa-bd6e-b4ca0ff58ee9
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- File Management
+- Productivity
+---
diff --git a/src/data/plugins/reddit-browser/plugin.md b/src/data/plugins/reddit-browser/plugin.md
new file mode 100644
index 0000000..1d5a807
--- /dev/null
+++ b/src/data/plugins/reddit-browser/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 51F9B93359B24716BF9D7FCD1CB075B6
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Social Media
+- Search
+---
diff --git a/src/data/plugins/registry/plugin.md b/src/data/plugins/registry/plugin.md
new file mode 100644
index 0000000..0432fab
--- /dev/null
+++ b/src/data/plugins/registry/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 8533B2E5632A449F916D3658EABFB595
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/remind-me/add.png b/src/data/plugins/remind-me/add.png
new file mode 100644
index 0000000..514c298
Binary files /dev/null and b/src/data/plugins/remind-me/add.png differ
diff --git a/src/data/plugins/remind-me/commands.png b/src/data/plugins/remind-me/commands.png
new file mode 100644
index 0000000..4810c6d
Binary files /dev/null and b/src/data/plugins/remind-me/commands.png differ
diff --git a/src/data/plugins/remind-me/list.png b/src/data/plugins/remind-me/list.png
new file mode 100644
index 0000000..858623e
Binary files /dev/null and b/src/data/plugins/remind-me/list.png differ
diff --git a/src/data/plugins/remind-me/plugin.md b/src/data/plugins/remind-me/plugin.md
new file mode 100644
index 0000000..1cc72bb
--- /dev/null
+++ b/src/data/plugins/remind-me/plugin.md
@@ -0,0 +1,116 @@
+---
+id: 522FAF05-36F4-4504-BFF6-5D8F8F4396D5
+tags:
+- Date & Time
+- Productivity
+---
+
+# Plugin
+
+This plugin lets you set simple reminders at specific times.
+
+> Please note that the reminders will not work if you close Flow Launcher.
+
+## Usage
+
+To use this plugin, type its action keyword (`remind` by default) followed by the command (either `add`, or `list`),
+followed by command arguments.
+
+
+
+### Add
+
+To add a reminder, type `add` followed by the time and the message in the following format:
+
+```js
+add to
+```
+
+Time can be either relative:
+
+```
+in 5 minutes
+in 1 hour
+in 2 days
+```
+
+or absolute:
+
+```
+7 pm
+19:00
+2025-02-13
+2025-02-13 15:00
+```
+
+Examples of valid commands:
+
+```
+remind add in 5 minutes to begin cooking the chicken
+remind add in 1 hour to go to the gym
+remind add 2025-01-20 to go buy some milk
+```
+
+
+
+### List
+
+To list all your reminders, type `list`. This will display a list of all your reminders, with the time and the message.
+You can select a reminder to delete it.
+
+
+
+## Settings
+
+The plugin has a few settings that you can change:
+
+### Show notifications when adding or deleting reminders
+
+When this setting is enabled, the plugin will show a notification every time you add or delete a reminder, just so
+you're sure it worked.
+
+### How to show reminders
+
+You can choose between two different ways to show your reminders:
+
+- Standard Windows notification
+ This could be somewhat easy to miss and might also not be available on all Windows versions.
+
+
+- Always-on-top window
+ A window that always appears on top of everything else you do, forcing you to pay attention to it.
+
+### Also accept new reminders in short form
+
+When this setting is enabled, the plugin will also accept new reminders in the short form, which looks like this:
+
+```
+remind
+```
+
+No command is required, and the time can be mixed with the message. The time must always be in this format:
+``, i.e. `1h`, `5m`, `2d`, etc.
+
+Examples of valid commands:
+
+```yaml
+# In 5 minutes:
+remind 5m do stuff
+remind do stuff 5m
+
+# In 5 hours and 5 minutes:
+remind 5h 5m do stuff
+
+# In 5 hours, 5 minutes, and 15 seconds:
+remind 5h do stuff 5m 15s
+
+# In 1 week minus 12 hours:
+remind 1w -12h do stuff
+
+# In 1 week plus 5 minutes minus 12 hours:
+remind 1w do stuff -12h 5m
+```
+
+
+
+As you can see, in the short form, you can specify the time and the message in any order.
diff --git a/src/data/plugins/remind-me/short_form.png b/src/data/plugins/remind-me/short_form.png
new file mode 100644
index 0000000..bb661b8
Binary files /dev/null and b/src/data/plugins/remind-me/short_form.png differ
diff --git a/src/data/plugins/remove-bg/plugin.md b/src/data/plugins/remove-bg/plugin.md
new file mode 100644
index 0000000..906d269
--- /dev/null
+++ b/src/data/plugins/remove-bg/plugin.md
@@ -0,0 +1,11 @@
+---
+id: D2B1550D-7F24-4A9C-9952-2CF0A253A555
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+---
diff --git a/src/data/plugins/remove-paywall/plugin.md b/src/data/plugins/remove-paywall/plugin.md
new file mode 100644
index 0000000..4d104de
--- /dev/null
+++ b/src/data/plugins/remove-paywall/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 19f6bd38-d732-4d94-9283-e459b6ce0a5c
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Browser Tools
+- Utilities
+---
diff --git a/src/data/plugins/remove-usb/plugin.md b/src/data/plugins/remove-usb/plugin.md
new file mode 100644
index 0000000..7de0672
--- /dev/null
+++ b/src/data/plugins/remove-usb/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 5DBA462B9AB77AC5DC158EB5047367F0
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/ride-projects-helper/plugin.md b/src/data/plugins/ride-projects-helper/plugin.md
new file mode 100644
index 0000000..3cfdbe5
--- /dev/null
+++ b/src/data/plugins/ride-projects-helper/plugin.md
@@ -0,0 +1,13 @@
+---
+id: ade0b65b-a1bc-4130-ab4b-18eb7ac9143f
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+- Productivity
+---
diff --git a/src/data/plugins/roll-dice/plugin.md b/src/data/plugins/roll-dice/plugin.md
new file mode 100644
index 0000000..e96d68e
--- /dev/null
+++ b/src/data/plugins/roll-dice/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 5403b2dc28fb4327aedc9f8c872d9d1f
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+---
diff --git a/src/data/plugins/rtfm/plugin.md b/src/data/plugins/rtfm/plugin.md
new file mode 100644
index 0000000..5aa5e34
--- /dev/null
+++ b/src/data/plugins/rtfm/plugin.md
@@ -0,0 +1,13 @@
+---
+id: bd4aff8b-108f-4ce9-affb-57c736648fe7
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Documentation
+- Development Tools
+- Search
+---
diff --git a/src/data/plugins/ryot/plugin.md b/src/data/plugins/ryot/plugin.md
new file mode 100644
index 0000000..2b99e94
--- /dev/null
+++ b/src/data/plugins/ryot/plugin.md
@@ -0,0 +1,12 @@
+---
+id: BC4E22D7C0CD4FBA9108C26B8B8DBA8D
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+- Search
+---
diff --git a/src/data/plugins/screen-brightness/plugin.md b/src/data/plugins/screen-brightness/plugin.md
new file mode 100644
index 0000000..d0d1c1d
--- /dev/null
+++ b/src/data/plugins/screen-brightness/plugin.md
@@ -0,0 +1,11 @@
+---
+id: eb0c1059-1824-4fa6-b04e-aaeb4303cbe1
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/search-mdi/plugin.md b/src/data/plugins/search-mdi/plugin.md
new file mode 100644
index 0000000..55c4a41
--- /dev/null
+++ b/src/data/plugins/search-mdi/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 8G5CDC9A78EF4A7E667E138F1FC04015
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Search
+- Documentation
+---
diff --git a/src/data/plugins/search-mdn/plugin.md b/src/data/plugins/search-mdn/plugin.md
new file mode 100644
index 0000000..a7bc772
--- /dev/null
+++ b/src/data/plugins/search-mdn/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 1e87e4c90c8e4daf9eee182d7c023919
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Documentation
+- Search
+---
diff --git a/src/data/plugins/search-npm/plugin.md b/src/data/plugins/search-npm/plugin.md
new file mode 100644
index 0000000..dfc8a1b
--- /dev/null
+++ b/src/data/plugins/search-npm/plugin.md
@@ -0,0 +1,13 @@
+---
+id: d91d366e4ff742b3b821f9d60031c3df
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+- Search
+---
diff --git a/src/data/plugins/search-scrapbox/plugin.md b/src/data/plugins/search-scrapbox/plugin.md
new file mode 100644
index 0000000..56d38f2
--- /dev/null
+++ b/src/data/plugins/search-scrapbox/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 6ef46440-fc69-57a1-df6a-9f2d826bdfc0
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Productivity
+- Documentation
+---
diff --git a/src/data/plugins/search-unicode-emoji/plugin.md b/src/data/plugins/search-unicode-emoji/plugin.md
new file mode 100644
index 0000000..a4cf033
--- /dev/null
+++ b/src/data/plugins/search-unicode-emoji/plugin.md
@@ -0,0 +1,12 @@
+---
+id: BB55C11CB9FB4AAF81B670D9FF0BFBEE
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/search-unicode-identify/plugin.md b/src/data/plugins/search-unicode-identify/plugin.md
new file mode 100644
index 0000000..1a11944
--- /dev/null
+++ b/src/data/plugins/search-unicode-identify/plugin.md
@@ -0,0 +1,12 @@
+---
+id: B9EE77F84A9141C3850BB329D45B8D9A
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Utilities
+---
diff --git a/src/data/plugins/search-unicode-search/plugin.md b/src/data/plugins/search-unicode-search/plugin.md
new file mode 100644
index 0000000..41e47a3
--- /dev/null
+++ b/src/data/plugins/search-unicode-search/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 10DB6EB0939443BCA556ACCF93AA98BF
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/sharex-flow-plugin/plugin.md b/src/data/plugins/sharex-flow-plugin/plugin.md
new file mode 100644
index 0000000..613badd
--- /dev/null
+++ b/src/data/plugins/sharex-flow-plugin/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 75763350-A89D-4942-B697-14875D94C222
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- Text Tools
+- Utilities
+---
diff --git a/src/data/plugins/shell/plugin.md b/src/data/plugins/shell/plugin.md
new file mode 100644
index 0000000..015782b
--- /dev/null
+++ b/src/data/plugins/shell/plugin.md
@@ -0,0 +1,11 @@
+---
+id: D409510CD0D2481F853690A07E6DC426
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/shiki-flow/plugin.md b/src/data/plugins/shiki-flow/plugin.md
new file mode 100644
index 0000000..561617c
--- /dev/null
+++ b/src/data/plugins/shiki-flow/plugin.md
@@ -0,0 +1,12 @@
+---
+id: b34023f6440d11ef94540242ac120002
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Multimedia
+---
diff --git a/src/data/plugins/shortcuts/plugin.md b/src/data/plugins/shortcuts/plugin.md
new file mode 100644
index 0000000..15413fa
--- /dev/null
+++ b/src/data/plugins/shortcuts/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 661D020D-4E0B-414B-B12B-58F795A20D79
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+---
diff --git a/src/data/plugins/smart-timestamps/plugin.md b/src/data/plugins/smart-timestamps/plugin.md
new file mode 100644
index 0000000..42641fa
--- /dev/null
+++ b/src/data/plugins/smart-timestamps/plugin.md
@@ -0,0 +1,13 @@
+---
+id: e375c983-bdea-4b5f-9325-ea71e44c1a08
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Date & Time
+- Productivity
+- Text Tools
+---
diff --git a/src/data/plugins/snippets-4FD15DF08F7146B3AC36AB5F143D8058/plugin.md b/src/data/plugins/snippets-4FD15DF08F7146B3AC36AB5F143D8058/plugin.md
new file mode 100644
index 0000000..9dce622
--- /dev/null
+++ b/src/data/plugins/snippets-4FD15DF08F7146B3AC36AB5F143D8058/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 4FD15DF08F7146B3AC36AB5F143D8058
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Productivity
+---
diff --git a/src/data/plugins/snippets/plugin.md b/src/data/plugins/snippets/plugin.md
new file mode 100644
index 0000000..0d45a1f
--- /dev/null
+++ b/src/data/plugins/snippets/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 51dd36d2-9824-4977-8e15-294dfbd7961e
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Productivity
+---
diff --git a/src/data/plugins/sonarr-search/plugin.md b/src/data/plugins/sonarr-search/plugin.md
new file mode 100644
index 0000000..2c2335a
--- /dev/null
+++ b/src/data/plugins/sonarr-search/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 258159A0D7A64C7A931CBBD8FB3A6FA6
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Multimedia
+- Networking
+---
diff --git a/src/data/plugins/spotify-premium/plugin.md b/src/data/plugins/spotify-premium/plugin.md
new file mode 100644
index 0000000..1c438ad
--- /dev/null
+++ b/src/data/plugins/spotify-premium/plugin.md
@@ -0,0 +1,12 @@
+---
+id: SY91U1N7H9D0X1DTZ8IOP4YV43KT7C5M
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- Search
+---
diff --git a/src/data/plugins/stardew-valley-wiki/plugin.md b/src/data/plugins/stardew-valley-wiki/plugin.md
new file mode 100644
index 0000000..79984d6
--- /dev/null
+++ b/src/data/plugins/stardew-valley-wiki/plugin.md
@@ -0,0 +1,13 @@
+---
+id: E5CBD6900F7743059CCB66A44652E12A
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Search
+- Documentation
+---
diff --git a/src/data/plugins/statis/plugin.md b/src/data/plugins/statis/plugin.md
new file mode 100644
index 0000000..2601419
--- /dev/null
+++ b/src/data/plugins/statis/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 763D015F571C48E4ACA5EF5DFD0BCA30
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/steam-account-switcher/plugin.md b/src/data/plugins/steam-account-switcher/plugin.md
new file mode 100644
index 0000000..e484625
--- /dev/null
+++ b/src/data/plugins/steam-account-switcher/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 5314722CF6AA4EBF86666C693412A276
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- System
+---
diff --git a/src/data/plugins/steam-search/plugin.md b/src/data/plugins/steam-search/plugin.md
new file mode 100644
index 0000000..b9764af
--- /dev/null
+++ b/src/data/plugins/steam-search/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 4D5DF575E4964C6AAADCF86134F09CC0
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Gaming
+---
diff --git a/src/data/plugins/string-utils/plugin.md b/src/data/plugins/string-utils/plugin.md
new file mode 100644
index 0000000..1d99c06
--- /dev/null
+++ b/src/data/plugins/string-utils/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 2972879D-1702-48A7-BA50-CA8352A6AA74
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Text Tools
+---
diff --git a/src/data/plugins/system-commands/plugin.md b/src/data/plugins/system-commands/plugin.md
new file mode 100644
index 0000000..f29a6b9
--- /dev/null
+++ b/src/data/plugins/system-commands/plugin.md
@@ -0,0 +1,11 @@
+---
+id: CEA08895D2544B019B2E9C5009600DF4
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/tailwindcss/plugin.md b/src/data/plugins/tailwindcss/plugin.md
new file mode 100644
index 0000000..97f25df
--- /dev/null
+++ b/src/data/plugins/tailwindcss/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 5c221cee-07a5-4e4c-a669-a0e0f7486c65
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Documentation
+- Search
+---
diff --git a/src/data/plugins/temp-cleaner/plugin.md b/src/data/plugins/temp-cleaner/plugin.md
new file mode 100644
index 0000000..49a833b
--- /dev/null
+++ b/src/data/plugins/temp-cleaner/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 2DC588F9-98DB-4E8E-BBE0-B4EFF4286E40
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- File Management
+---
diff --git a/src/data/plugins/tenor-gif/plugin.md b/src/data/plugins/tenor-gif/plugin.md
new file mode 100644
index 0000000..a6cfd0e
--- /dev/null
+++ b/src/data/plugins/tenor-gif/plugin.md
@@ -0,0 +1,13 @@
+---
+id: A4A92BC0C742463187E5CCBA9B849B86
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Multimedia
+- Social Media
+---
diff --git a/src/data/plugins/tenor/plugin.md b/src/data/plugins/tenor/plugin.md
new file mode 100644
index 0000000..17e70c8
--- /dev/null
+++ b/src/data/plugins/tenor/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 22a114b1-aa5f-4bca-8763-03d58bc4029b
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Multimedia
+- Social Media
+---
diff --git a/src/data/plugins/terraria-wiki/plugin.md b/src/data/plugins/terraria-wiki/plugin.md
new file mode 100644
index 0000000..08b307a
--- /dev/null
+++ b/src/data/plugins/terraria-wiki/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 8F1A123859D0489C8B72187FB724DD42
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Search
+- Documentation
+---
diff --git a/src/data/plugins/timer/plugin.md b/src/data/plugins/timer/plugin.md
new file mode 100644
index 0000000..da8b1cd
--- /dev/null
+++ b/src/data/plugins/timer/plugin.md
@@ -0,0 +1,12 @@
+---
+id: a0d7601f81a942e58b4952be3eb17fb2
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Date & Time
+- Productivity
+---
diff --git a/src/data/plugins/timestamp/plugin.md b/src/data/plugins/timestamp/plugin.md
new file mode 100644
index 0000000..93ea39b
--- /dev/null
+++ b/src/data/plugins/timestamp/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 84ddc2a6d43911e8a8d5f2801f1b9fd1
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Date & Time
+---
diff --git a/src/data/plugins/timezone-conversion/plugin.md b/src/data/plugins/timezone-conversion/plugin.md
new file mode 100644
index 0000000..7212788
--- /dev/null
+++ b/src/data/plugins/timezone-conversion/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 9a791986-e9d1-47f1-a342-5ec506135385
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Date & Time
+- Calculators & Converters
+---
diff --git a/src/data/plugins/tinyurl-plugin/plugin.md b/src/data/plugins/tinyurl-plugin/plugin.md
new file mode 100644
index 0000000..24e86c5
--- /dev/null
+++ b/src/data/plugins/tinyurl-plugin/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 589CA535BD5041E78179C4F2D2F2D8FD
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+---
diff --git a/src/data/plugins/todoist/plugin.md b/src/data/plugins/todoist/plugin.md
new file mode 100644
index 0000000..638bcd1
--- /dev/null
+++ b/src/data/plugins/todoist/plugin.md
@@ -0,0 +1,11 @@
+---
+id: F71F6EE367D34BAFB681A9287ACF59EB
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+---
diff --git a/src/data/plugins/todos/plugin.md b/src/data/plugins/todos/plugin.md
new file mode 100644
index 0000000..352bc02
--- /dev/null
+++ b/src/data/plugins/todos/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 5B7E53D506844D2D8B7001AA19F5EF8F
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+---
diff --git a/src/data/plugins/toggl-track/plugin.md b/src/data/plugins/toggl-track/plugin.md
new file mode 100644
index 0000000..45f1fb1
--- /dev/null
+++ b/src/data/plugins/toggl-track/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 01B8703D-13E2-483D-BBF9-603425628151
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+---
diff --git a/src/data/plugins/totp/plugin.md b/src/data/plugins/totp/plugin.md
new file mode 100644
index 0000000..dfedd49
--- /dev/null
+++ b/src/data/plugins/totp/plugin.md
@@ -0,0 +1,11 @@
+---
+id: D58F8A08-0C0A-45C3-8690-F7C7877EE611
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Security
+---
diff --git a/src/data/plugins/translation-tool/plugin.md b/src/data/plugins/translation-tool/plugin.md
new file mode 100644
index 0000000..10d92e7
--- /dev/null
+++ b/src/data/plugins/translation-tool/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 7bfc4332-55t0-4d40-b4cc-530889g415a0
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Translation
+- Text Tools
+---
diff --git a/src/data/plugins/translation/plugin.md b/src/data/plugins/translation/plugin.md
new file mode 100644
index 0000000..5f80865
--- /dev/null
+++ b/src/data/plugins/translation/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 5423df3c6dd84fc5ad3ca1bfadad872dfca307c0a013d116dc3e8bed60b8ca5b
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Translation
+- Text Tools
+---
diff --git a/src/data/plugins/twitchy/plugin.md b/src/data/plugins/twitchy/plugin.md
new file mode 100644
index 0000000..0b6606c
--- /dev/null
+++ b/src/data/plugins/twitchy/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 477F16413D374364A4D5D36DCE68ED45
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- Social Media
+- Search
+---
diff --git a/src/data/plugins/two-factor-authenticator/plugin.md b/src/data/plugins/two-factor-authenticator/plugin.md
new file mode 100644
index 0000000..8e8a7e7
--- /dev/null
+++ b/src/data/plugins/two-factor-authenticator/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 789B27F3EB8B42D5B6EFB6EF7DFD2BE1
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Security
+---
diff --git a/src/data/plugins/unicode-finder/plugin.md b/src/data/plugins/unicode-finder/plugin.md
new file mode 100644
index 0000000..e5c930a
--- /dev/null
+++ b/src/data/plugins/unicode-finder/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 88312EF0-3300-4D7E-999C-50212CF8F3C8
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+---
diff --git a/src/data/plugins/unit-converter/plugin.md b/src/data/plugins/unit-converter/plugin.md
new file mode 100644
index 0000000..4eceaa7
--- /dev/null
+++ b/src/data/plugins/unit-converter/plugin.md
@@ -0,0 +1,11 @@
+---
+id: D87F82F1-5A19-46CC-B5CC-50430B2F77AB
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/unity-3d-helper/plugin.md b/src/data/plugins/unity-3d-helper/plugin.md
new file mode 100644
index 0000000..4bef08e
--- /dev/null
+++ b/src/data/plugins/unity-3d-helper/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 68B179AA-4E80-4080-AC68-CC922CD2AE60
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Development Tools
+- Gaming
+---
diff --git a/src/data/plugins/unity-engine/plugin.md b/src/data/plugins/unity-engine/plugin.md
new file mode 100644
index 0000000..b827dc1
--- /dev/null
+++ b/src/data/plugins/unity-engine/plugin.md
@@ -0,0 +1,13 @@
+---
+id: F8775498-BD72-4ECA-893F-B33863D81CB5
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Development Tools
+- Gaming
+---
diff --git a/src/data/plugins/unity-projects-launcher/plugin.md b/src/data/plugins/unity-projects-launcher/plugin.md
new file mode 100644
index 0000000..831a9f4
--- /dev/null
+++ b/src/data/plugins/unity-projects-launcher/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 8de584c0-f855-4825-8886-65e670ebe441
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Development Tools
+- Gaming
+---
diff --git a/src/data/plugins/upset-galgame/plugin.md b/src/data/plugins/upset-galgame/plugin.md
new file mode 100644
index 0000000..8596363
--- /dev/null
+++ b/src/data/plugins/upset-galgame/plugin.md
@@ -0,0 +1,11 @@
+---
+id: cb7d1472-7da9-459e-b987-57f92cb3cea2
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+---
diff --git a/src/data/plugins/urban-dictionary/plugin.md b/src/data/plugins/urban-dictionary/plugin.md
new file mode 100644
index 0000000..4e95e0d
--- /dev/null
+++ b/src/data/plugins/urban-dictionary/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 57696D7108C9401A9EC016BF63A86CCB
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Dictionaries
+---
diff --git a/src/data/plugins/url-shortener/plugin.md b/src/data/plugins/url-shortener/plugin.md
new file mode 100644
index 0000000..d94f04e
--- /dev/null
+++ b/src/data/plugins/url-shortener/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 425D1CE7-1327-4593-B1C0-A37614B313EF
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+---
diff --git a/src/data/plugins/url/plugin.md b/src/data/plugins/url/plugin.md
new file mode 100644
index 0000000..90a6dc3
--- /dev/null
+++ b/src/data/plugins/url/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 0308FD86DE0A4DEE8D62B9B535370992
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Browser Tools
+---
diff --git a/src/data/plugins/uuid-generator/plugin.md b/src/data/plugins/uuid-generator/plugin.md
new file mode 100644
index 0000000..4cc300d
--- /dev/null
+++ b/src/data/plugins/uuid-generator/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 959A3FED8292422784F7892F7FB59DB1
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+---
diff --git a/src/data/plugins/uvx-py/plugin.md b/src/data/plugins/uvx-py/plugin.md
new file mode 100644
index 0000000..274367a
--- /dev/null
+++ b/src/data/plugins/uvx-py/plugin.md
@@ -0,0 +1,13 @@
+---
+id: e4b82cb4-a09a-418a-bb8c-75153379a54c
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Programming
+- Utilities
+---
diff --git a/src/data/plugins/vim-cheatsheet/plugin.md b/src/data/plugins/vim-cheatsheet/plugin.md
new file mode 100644
index 0000000..ae5ca5c
--- /dev/null
+++ b/src/data/plugins/vim-cheatsheet/plugin.md
@@ -0,0 +1,14 @@
+---
+id: ddd30a33-c565-4dcf-9558-7bc5bb433e13
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Development Tools
+- Documentation
+- Search
+- Programming
+---
diff --git a/src/data/plugins/visual-studio-launcher/plugin.md b/src/data/plugins/visual-studio-launcher/plugin.md
new file mode 100644
index 0000000..b4edb3b
--- /dev/null
+++ b/src/data/plugins/visual-studio-launcher/plugin.md
@@ -0,0 +1,13 @@
+---
+id: CBDFA9CF044842B4A79939112240FD38
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Development Tools
+- Productivity
+---
diff --git a/src/data/plugins/volume-flow/plugin.md b/src/data/plugins/volume-flow/plugin.md
new file mode 100644
index 0000000..6c99499
--- /dev/null
+++ b/src/data/plugins/volume-flow/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 7d2d209d-5ab9-42dd-ae9b-2487b57ff569
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- System
+---
diff --git a/src/data/plugins/vs-code-workspaces/plugin.md b/src/data/plugins/vs-code-workspaces/plugin.md
new file mode 100644
index 0000000..b62268d
--- /dev/null
+++ b/src/data/plugins/vs-code-workspaces/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 525995402BEF4A8CA860D92F6D108092
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Development Tools
+- Programming
+- Productivity
+---
diff --git a/src/data/plugins/wallpaper-changer/plugin.md b/src/data/plugins/wallpaper-changer/plugin.md
new file mode 100644
index 0000000..d26af7c
--- /dev/null
+++ b/src/data/plugins/wallpaper-changer/plugin.md
@@ -0,0 +1,12 @@
+---
+id: d3dcd1a102b8412bb9e92bf78a5f4e82
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- System
+---
diff --git a/src/data/plugins/wallpaper-engine-profile-selector/plugin.md b/src/data/plugins/wallpaper-engine-profile-selector/plugin.md
new file mode 100644
index 0000000..94bdeab
--- /dev/null
+++ b/src/data/plugins/wallpaper-engine-profile-selector/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 62EE2B99A29740B2A8CB6B58D067DBD2
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+- System
+---
diff --git a/src/data/plugins/wallpaper-searcher/plugin.md b/src/data/plugins/wallpaper-searcher/plugin.md
new file mode 100644
index 0000000..e449bd5
--- /dev/null
+++ b/src/data/plugins/wallpaper-searcher/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 8EC2CDFB9A8C4CC0A49CC61F158510F2
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Multimedia
+- System
+---
diff --git a/src/data/plugins/weather/plugin.md b/src/data/plugins/weather/plugin.md
new file mode 100644
index 0000000..e43a2ba
--- /dev/null
+++ b/src/data/plugins/weather/plugin.md
@@ -0,0 +1,11 @@
+---
+id: A9146CE1489147D29A46F32D2EB9FB5E
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+---
diff --git a/src/data/plugins/web-app-launcher/plugin.md b/src/data/plugins/web-app-launcher/plugin.md
new file mode 100644
index 0000000..e910185
--- /dev/null
+++ b/src/data/plugins/web-app-launcher/plugin.md
@@ -0,0 +1,11 @@
+---
+id: CF8389C7-61AC-4387-93DE-370B31BD07EB
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Browser Tools
+---
diff --git a/src/data/plugins/web-searches/plugin.md b/src/data/plugins/web-searches/plugin.md
new file mode 100644
index 0000000..837d7c5
--- /dev/null
+++ b/src/data/plugins/web-searches/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 565B73353DBF4806919830B9202EE3BF
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Search
+- Browser Tools
+---
diff --git a/src/data/plugins/when-to-expect/plugin.md b/src/data/plugins/when-to-expect/plugin.md
new file mode 100644
index 0000000..78d326a
--- /dev/null
+++ b/src/data/plugins/when-to-expect/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 77435DA907472F189B759F9F4F3E3C23
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Calculators & Converters
+---
diff --git a/src/data/plugins/win-hotkey/plugin.md b/src/data/plugins/win-hotkey/plugin.md
new file mode 100644
index 0000000..cde660d
--- /dev/null
+++ b/src/data/plugins/win-hotkey/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 7D530704C68E4838896BBA5C4C1DE7DF
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/window-services/plugin.md b/src/data/plugins/window-services/plugin.md
new file mode 100644
index 0000000..a0cc515
--- /dev/null
+++ b/src/data/plugins/window-services/plugin.md
@@ -0,0 +1,11 @@
+---
+id: C7E78C47FA5942E4B7972EAD844F5007
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/window-walker/plugin.md b/src/data/plugins/window-walker/plugin.md
new file mode 100644
index 0000000..ab4bcd1
--- /dev/null
+++ b/src/data/plugins/window-walker/plugin.md
@@ -0,0 +1,13 @@
+---
+id: F737A9223560B3C6833B5FFB8CDF78E5
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- Productivity
+- Search
+---
diff --git a/src/data/plugins/windows-dark-mode-toggle/plugin.md b/src/data/plugins/windows-dark-mode-toggle/plugin.md
new file mode 100644
index 0000000..ef7e996
--- /dev/null
+++ b/src/data/plugins/windows-dark-mode-toggle/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 4F31D5DF26984581BDF4213D40860ADF
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+---
diff --git a/src/data/plugins/windows-settings/plugin.md b/src/data/plugins/windows-settings/plugin.md
new file mode 100644
index 0000000..4e84f9c
--- /dev/null
+++ b/src/data/plugins/windows-settings/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 5043CETYU6A748679OPA02D27D99677A
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- Search
+---
diff --git a/src/data/plugins/windows-startup/plugin.md b/src/data/plugins/windows-startup/plugin.md
new file mode 100644
index 0000000..697b120
--- /dev/null
+++ b/src/data/plugins/windows-startup/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 747F1A93B6D24CCFBC433BA2455B3BEA
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Automation
+- System
+---
diff --git a/src/data/plugins/windows-terminal-profile-launcher/plugin.md b/src/data/plugins/windows-terminal-profile-launcher/plugin.md
new file mode 100644
index 0000000..963c9fc
--- /dev/null
+++ b/src/data/plugins/windows-terminal-profile-launcher/plugin.md
@@ -0,0 +1,14 @@
+---
+id: 638ee5a4-60ed-4a72-9f61-776934003cca
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Development Tools
+- Productivity
+- System
+---
diff --git a/src/data/plugins/windows-terminal-profiles/plugin.md b/src/data/plugins/windows-terminal-profiles/plugin.md
new file mode 100644
index 0000000..3e27eb2
--- /dev/null
+++ b/src/data/plugins/windows-terminal-profiles/plugin.md
@@ -0,0 +1,14 @@
+---
+id: a56ae6ac-7b3b-47b9-857f-05ff25d29510
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Application Launchers
+- Development Tools
+- Productivity
+- System
+---
diff --git a/src/data/plugins/wins-flow/plugin.md b/src/data/plugins/wins-flow/plugin.md
new file mode 100644
index 0000000..884bb53
--- /dev/null
+++ b/src/data/plugins/wins-flow/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 72E67DFE0F6F482395AF3CD0A3BC6F04
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- System
+- Productivity
+---
diff --git a/src/data/plugins/winscp/plugin.md b/src/data/plugins/winscp/plugin.md
new file mode 100644
index 0000000..859798f
--- /dev/null
+++ b/src/data/plugins/winscp/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 955EF4A86D8C47F088131A92D9D0E9E5
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- File Management
+- Development Tools
+---
diff --git a/src/data/plugins/wireguard/plugin.md b/src/data/plugins/wireguard/plugin.md
new file mode 100644
index 0000000..96d2692
--- /dev/null
+++ b/src/data/plugins/wireguard/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 89f50521dd80461895ae6ce1b700f444
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Networking
+- System
+---
diff --git a/src/data/plugins/word-reference/plugin.md b/src/data/plugins/word-reference/plugin.md
new file mode 100644
index 0000000..207a1e5
--- /dev/null
+++ b/src/data/plugins/word-reference/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 90170ddfd94a4c188bc5ff2e3690d0ae
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Translation
+- Text Tools
+---
diff --git a/src/data/plugins/wordle/plugin.md b/src/data/plugins/wordle/plugin.md
new file mode 100644
index 0000000..d5de1b5
--- /dev/null
+++ b/src/data/plugins/wordle/plugin.md
@@ -0,0 +1,11 @@
+---
+id: 32dcd763-f8ad-4f14-b000-fcf0884f0093
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+---
diff --git a/src/data/plugins/wordnik-dictionary/plugin.md b/src/data/plugins/wordnik-dictionary/plugin.md
new file mode 100644
index 0000000..67687e2
--- /dev/null
+++ b/src/data/plugins/wordnik-dictionary/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 7ed41d7e3d174379972e1cdacb647474
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Text Tools
+- Search
+- Dictionaries
+---
diff --git a/src/data/plugins/workflowy/plugin.md b/src/data/plugins/workflowy/plugin.md
new file mode 100644
index 0000000..7520566
--- /dev/null
+++ b/src/data/plugins/workflowy/plugin.md
@@ -0,0 +1,13 @@
+---
+id: 3b42afc0d17f45b98a55e324728252be
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+- Text Tools
+- Notes
+---
diff --git a/src/data/plugins/workspacer/plugin.md b/src/data/plugins/workspacer/plugin.md
new file mode 100644
index 0000000..c5b424c
--- /dev/null
+++ b/src/data/plugins/workspacer/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 5C36ECBD-629E-412B-8DD3-2457EE7C522B
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Productivity
+- System
+---
diff --git a/src/data/plugins/youtube-downloader/plugin.md b/src/data/plugins/youtube-downloader/plugin.md
new file mode 100644
index 0000000..fd9b298
--- /dev/null
+++ b/src/data/plugins/youtube-downloader/plugin.md
@@ -0,0 +1,11 @@
+---
+id: d58fbe34-bce7-11ed-afa1-0242ac120002
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Multimedia
+---
diff --git a/src/data/plugins/yugioh-card-search/plugin.md b/src/data/plugins/yugioh-card-search/plugin.md
new file mode 100644
index 0000000..52f2023
--- /dev/null
+++ b/src/data/plugins/yugioh-card-search/plugin.md
@@ -0,0 +1,12 @@
+---
+id: 53fcad7f00e244829b0059eaa8ea5ab7
+#videos:
+#- https://youtu.be/dQw4w9WgXcQ
+#images:
+#- image1.png
+#- image2.png
+#- image3.png
+tags:
+- Gaming
+- Search
+---
diff --git a/src/files.d.ts b/src/files.d.ts
new file mode 100644
index 0000000..b42cdb4
--- /dev/null
+++ b/src/files.d.ts
@@ -0,0 +1,9 @@
+declare module "*.yml" {
+ const value: any;
+ export default value;
+}
+
+declare module "*.yaml" {
+ const value: any;
+ export default value;
+}
diff --git a/src/getPluginsJson.ts b/src/getPluginsJson.ts
new file mode 100644
index 0000000..bcff8bc
--- /dev/null
+++ b/src/getPluginsJson.ts
@@ -0,0 +1,55 @@
+import {getCollection} from "astro:content";
+import {slugify} from "@/utils.ts";
+import builtInPluginIds from "@/data/built-in-plugins.yml";
+import type {ExtendedPlugin} from "@/pages/plugins/_types.ts";
+import {dirname, basename} from "node:path";
+
+interface FlowPlugin {
+ ID: string;
+ Name: string;
+ Description: string;
+ Author: string;
+ Version: string;
+ Language: string;
+ Website: string;
+ IcoPath: string;
+ UrlSourceCode: string;
+ UrlDownload: string;
+ DateAdded: string;
+ LatestReleaseDate: string;
+}
+
+let cachedData: ExtendedPlugin[] = [];
+
+export async function getPluginsJson() {
+ if (!cachedData?.length) {
+ const data: FlowPlugin[] = await fetch("https://fastly.jsdelivr.net/gh/Flow-Launcher/Flow.Launcher.PluginsManifest@plugin_api_v2/plugins.json").then(v => v.json());
+ const plugins = await getCollection("plugins");
+
+ cachedData = data.map(v => {
+ const plugin = plugins.find(p => p.data.id === v.ID);
+ if (plugin && !plugin.data.slug) {
+ plugin.data.slug = basename(dirname(plugin.filePath!));
+ }
+
+ return {
+ id: v.ID,
+ slug: `${slugify(v.Name)}-${v.ID}`,
+ name: v.Name,
+ description: v.Description,
+ tags: [],
+ firstReleaseDate: v.DateAdded,
+ latestReleaseDate: v.LatestReleaseDate,
+ icon: v.IcoPath,
+ sourceCodeUrl: v.UrlSourceCode,
+ author: v.Author,
+ version: v.Version,
+ language: v.Language,
+ isBuiltIn: builtInPluginIds.includes(v.ID),
+ ...(plugin?.data ?? {}),
+ };
+ }).sort((a, b) => a.name.localeCompare(b.name));
+ }
+
+ return cachedData;
+}
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro
new file mode 100644
index 0000000..3be1560
--- /dev/null
+++ b/src/layouts/Layout.astro
@@ -0,0 +1,245 @@
+---
+import Header from "@/components/Header.astro";
+import Footer from "@/components/Footer.astro";
+import {getBaseUrl} from "@/utils";
+import DownloadDialog from "@/components/DownloadDIalog.astro";
+import CopyButtonsScript from "../components/CopyButtonsScript.astro";
+
+interface Props {
+ title?: string;
+ description?: string;
+ image?: string;
+}
+
+const {
+ title = "Flow Launcher",
+ description = "Quick file search & app launcher for Windows with community-made plugins",
+ image = "/flowlauncher_large.jpg",
+} = Astro.props;
+
+const base = getBaseUrl();
+const favIconLink = `${base === '/' ? '' : base}/favicon.ico`;
+---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/404.astro b/src/pages/404.astro
new file mode 100644
index 0000000..275c34f
--- /dev/null
+++ b/src/pages/404.astro
@@ -0,0 +1,34 @@
+---
+import Layout from "@/layouts/Layout.astro";
+import Section from "@/components/Section.astro";
+---
+
+
+
+
+
diff --git a/src/pages/_blog/[slug].astro b/src/pages/_blog/[slug].astro
new file mode 100644
index 0000000..c989317
--- /dev/null
+++ b/src/pages/_blog/[slug].astro
@@ -0,0 +1,61 @@
+---
+import {getCollection, getEntry, render} from "astro:content";
+import Layout from "@/layouts/Layout.astro";
+import Section from "@/components/Section.astro";
+import {formatDate} from "@/utils";
+
+export async function getStaticPaths() {
+ const allBlogPosts = await getCollection("blog");
+ return allBlogPosts.map(v => ({
+ params: {
+ slug: v.data.slug,
+ },
+ }));
+}
+
+const {slug} = Astro.params;
+
+const blog = await getEntry("blog", slug);
+const title = `${blog.data.title} | Flow Launcher`;
+const {Content} = await render(blog);
+---
+
+
+ {blog.data.title}
+
+ by
+ {blog.data.author}
+ on
+ {formatDate(blog.data.date)}
+
+
+
+
+
+
+
+
diff --git a/src/pages/_blog/index.astro b/src/pages/_blog/index.astro
new file mode 100644
index 0000000..338e8d7
--- /dev/null
+++ b/src/pages/_blog/index.astro
@@ -0,0 +1,41 @@
+---
+import {getCollection} from 'astro:content';
+import Layout from '@/layouts/Layout.astro';
+import Section from "@/components/Section.astro";
+import BlogArticle from "@/components/blog/BlogArticleCard.astro";
+
+const allBlogPosts = await getCollection("blog");
+---
+
+
+
+ The Flow Launcher Blog
+
+
+
+ {allBlogPosts.map(post =>
+
+ )}
+
+
+
+
diff --git a/src/pages/_contributors.astro b/src/pages/_contributors.astro
new file mode 100644
index 0000000..5d2ab66
--- /dev/null
+++ b/src/pages/_contributors.astro
@@ -0,0 +1,70 @@
+---
+import Layout from "@/layouts/Layout.astro";
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import Contributor from "@/components/contributors/Contributor.astro";
+import {getCache, setCache} from "@/utils";
+import SectionSubheader from "@/components/SectionSubheader.astro";
+
+interface IContributor {
+ id: number;
+ login: string;
+ avatar_url: string;
+ count: number;
+}
+
+interface PullRequest {
+ state: "locked" | string & {};
+ merged_at: string;
+ user: IContributor;
+}
+
+let contributors: IContributor[] = getCache("contributors") ?? [];
+if (contributors.length === 0) {
+ let prs: PullRequest[] = [];
+ const contributorMap: Map = new Map();
+
+ let page = 1;
+ while (true) {
+ const response: PullRequest[] = await fetch(`https://api.github.com/repos/Flow-Launcher/Flow.Launcher/pulls?state=closed&per_page=100&page=${page}`)
+ .then(v => v.json());
+ prs.push(...response.filter(pr => pr.merged_at && pr.user.login));
+ if (response.length < 100) {
+ break;
+ }
+ page++;
+ }
+
+ for (const pr of prs) {
+ const userId = pr.user.id;
+ if (contributorMap.has(userId)) {
+ contributorMap.get(userId)!.count++;
+ } else {
+ contributorMap.set(userId, {id: userId, login: pr.user.login, avatar_url: pr.user.avatar_url, count: 1});
+ }
+ }
+
+ contributors = Array.from(contributorMap.values()).sort((a, b) => b.count! - a.count!);
+ setCache("contributors", contributors);
+}
+---
+
+
+ Contributors
+
+ Big thank you to all these people for making Flow Launcher better
+
+
+ {contributors.map(contributor => )}
+
+
+
+
+
diff --git a/src/pages/index.astro b/src/pages/index.astro
new file mode 100644
index 0000000..ed27acd
--- /dev/null
+++ b/src/pages/index.astro
@@ -0,0 +1,18 @@
+---
+import Layout from "@/layouts/Layout.astro";
+import HeroSection from "@/components/main-page/1_HeroSection.astro";
+import StartAnywhereSection from "@/components/main-page/2_StartAnywhereSection.astro";
+import FeaturesSection from "@/components/main-page/3_FeaturesSection.astro";
+import CustomizationsSection from "@/components/main-page/4_CustomizationsSection.astro";
+import PluginsSection from "@/components/main-page/5_PluginsSection.astro";
+import SponsorSection from "@/components/main-page/7_SponsorSection.astro";
+---
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/plugins/[slug]/_get-plugin-blog-posts.ts b/src/pages/plugins/[slug]/_get-plugin-blog-posts.ts
new file mode 100644
index 0000000..209d6be
--- /dev/null
+++ b/src/pages/plugins/[slug]/_get-plugin-blog-posts.ts
@@ -0,0 +1,12 @@
+import {getCollection} from "astro:content";
+import path from "node:path";
+
+export async function getPluginBlogPosts(pluginId?: string) {
+ if (!pluginId) return [];
+
+ const plugin = await getCollection("plugins", v => v.data.id === pluginId).then(v => v[0]);
+ if (!plugin) return [];
+
+ const directoryPath = path.join(plugin!.filePath!, "..", "blog");
+ return getCollection("pluginBlog", v => path.join(v.filePath!).startsWith(directoryPath));
+}
diff --git a/src/pages/plugins/[slug]/_static-paths.ts b/src/pages/plugins/[slug]/_static-paths.ts
new file mode 100644
index 0000000..d7ed66a
--- /dev/null
+++ b/src/pages/plugins/[slug]/_static-paths.ts
@@ -0,0 +1,13 @@
+import {getPluginsJson} from "@/getPluginsJson.ts";
+
+export async function getStaticPaths() {
+ const data = await getPluginsJson();
+ return data.map((v: any) => ({
+ params: {
+ slug: v.slug,
+ },
+ props: {
+ plugin: v,
+ },
+ }));
+}
diff --git a/src/pages/plugins/[slug]/blog/[postSlug].astro b/src/pages/plugins/[slug]/blog/[postSlug].astro
new file mode 100644
index 0000000..3043553
--- /dev/null
+++ b/src/pages/plugins/[slug]/blog/[postSlug].astro
@@ -0,0 +1,118 @@
+---
+import Layout from "@/layouts/Layout.astro";
+import {getPluginsJson} from "@/getPluginsJson";
+import type {ExtendedPlugin} from "@/pages/plugins/_types";
+import {getCollection, render} from "astro:content";
+import SectionHeader from "@/components/SectionHeader.astro";
+import Section from "@/components/Section.astro";
+import {formatDate, getBaseUrl} from "@/utils";
+import path from "node:path";
+import BuiltInTag from "@/components/BuiltInTag.astro";
+
+interface Props {
+ plugin: ExtendedPlugin;
+ post: any;
+}
+
+export async function getStaticPaths() {
+ const pluginsManifest = await getPluginsJson();
+ const plugins = await getCollection("plugins");
+
+ const data = await getCollection("pluginBlog");
+ return data.map((v: any) => {
+ const plugin = plugins.find(p => {
+ const pluginPath = path.resolve(p.filePath!, "..", "blog");
+ const postPath = path.resolve(v.filePath, "..");
+
+ return pluginPath === postPath;
+ });
+ const pluginManifest = pluginsManifest.find(p => p.id === plugin!.data.id);
+ return {
+ params: {
+ slug: pluginManifest!.slug,
+ postSlug: v.data.slug,
+ },
+ props: {
+ plugin: pluginManifest,
+ post: v,
+ },
+ };
+ });
+}
+
+const {plugin, post} = Astro.props;
+const {Content} = await render(post);
+
+const pluginLink = getBaseUrl(true) + `/plugins/${plugin.slug}`;
+const pluginBlogLink = pluginLink + "/blog";
+
+const title = `${post.data.title} | ${plugin.name} | Plugin Blog | Flow Launcher`;
+const description = post.data.summary;
+---
+
+
+
+
+
{post.data.title}
+
+ by
+ {post.data.author}
+ on
+ {formatDate(post.data.date)}
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/plugins/[slug]/blog/index.astro b/src/pages/plugins/[slug]/blog/index.astro
new file mode 100644
index 0000000..5549bb5
--- /dev/null
+++ b/src/pages/plugins/[slug]/blog/index.astro
@@ -0,0 +1,81 @@
+---
+import Layout from "@/layouts/Layout.astro";
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import SectionSubheader from "@/components/SectionSubheader.astro";
+import BlogArticleCard from "@/components/blog/BlogArticleCard.astro";
+import {getBaseUrl} from "@/utils";
+import {getPluginBlogPosts} from "@/pages/plugins/[slug]/_get-plugin-blog-posts";
+import type {ExtendedPlugin} from "@/pages/plugins/_types";
+import BuiltInTag from "@/components/BuiltInTag.astro";
+
+export {getStaticPaths} from "@/pages/plugins/[slug]/_static-paths";
+
+interface Props {
+ plugin: ExtendedPlugin;
+}
+const {plugin} = Astro.props;
+const pluginBlogs = await getPluginBlogPosts(plugin.id);
+
+const pluginLink = getBaseUrl(true) + `/plugins/${plugin.slug}`;
+
+const title = `${plugin.name} | Plugin Blog | Flow Launcher`;
+const description = plugin.description;
+---
+
+
+
+
+
+
+ {pluginBlogs.map(v =>
+ )}
+
+
+
+
+
diff --git a/src/pages/plugins/[slug]/index.astro b/src/pages/plugins/[slug]/index.astro
new file mode 100644
index 0000000..03d7da0
--- /dev/null
+++ b/src/pages/plugins/[slug]/index.astro
@@ -0,0 +1,199 @@
+---
+import {render, getCollection} from "astro:content";
+import Layout from "@/layouts/Layout.astro";
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import {formatDate, getBaseUrl} from "@/utils";
+import Tags from "@/components/plugins/Tags.astro";
+import LabelValue from "@/components/plugins/LabelValue.astro";
+import {Picture} from "astro:assets";
+import Swiper from "@/components/Swiper.astro";
+import YouTubeEmbed from "@/components/YouTubeEmbed.astro";
+import BlogArticleCard from "@/components/blog/BlogArticleCard.astro";
+import type {ExtendedPlugin} from "@/pages/plugins/_types";
+import {getPluginBlogPosts} from "@/pages/plugins/[slug]/_get-plugin-blog-posts";
+import type {ImageMetadata} from "astro";
+import InstallPlugin from "@/components/plugins/InstallPlugin.astro";
+import BuiltInTag from "@/components/BuiltInTag.astro";
+
+export {getStaticPaths} from "@/pages/plugins/[slug]/_static-paths";
+
+interface Props {
+ plugin: ExtendedPlugin;
+}
+
+const {plugin} = Astro.props;
+
+const title = `${plugin.name} | Plugins | Flow Launcher`;
+const description = plugin.description;
+
+const pluginContent = await getCollection("plugins", v => v.data.id === plugin.id).then(v => v?.[0]);
+const {Content} = pluginContent ? await render(pluginContent) : {Content: null};
+
+const pluginLanguage = plugin.language.toLowerCase();
+let pluginType = "";
+if (pluginLanguage === "javascript" || pluginLanguage === "javascript_v2") {
+ pluginType = "JavaScript";
+} else if (pluginLanguage === "typescript" || pluginLanguage === "typescript_v2") {
+ pluginType = "TypeScript";
+} else if (pluginLanguage === "python" || pluginLanguage === "python_v2") {
+ pluginType = "Python";
+} else if (pluginLanguage === "executable" || pluginLanguage === "executable_v2") {
+ pluginType = "Executable";
+} else if (pluginLanguage === "csharp") {
+ pluginType = "C#";
+} else if (pluginLanguage === "fsharp") {
+ pluginType = "F#";
+}
+
+const sourceCodeLabel = plugin.sourceCodeUrl.startsWith("https://github.com/") ? "GitHub" : "Source Code";
+
+const videos: string[] = pluginContent?.data?.videos ?? [];
+const images: ImageMetadata[] = pluginContent?.data?.images ?? [];
+
+const pluginBlog = await getPluginBlogPosts(plugin.id);
+const latestPosts = pluginBlog.slice(0, 2).map(v => v.data);
+const viewAllBlogPostsLink = getBaseUrl(true) + `/plugins/${plugin.slug}/blog`;
+const hasCarousel = videos.length > 0 || images.length > 0;
+---
+
+
+
+
+
+
+
+ {plugin.name}
+ {plugin.isBuiltIn ? : null}
+
+
by {plugin.author}
+
+
+
+ {hasCarousel &&
+ {videos.map(v => )}
+ {images.map(v => )}
+ }
+
+
+
+
+ {pluginContent?.rendered?.html && Content ? : plugin.description}
+
+
+
+
+
+
+
+
+
+
+ {sourceCodeLabel}
+
+ {plugin.tags?.length > 0 ?
+
+
+
+ : null}
+ {latestPosts.length > 0 ?
+
+ {latestPosts.map(post => (
+
+ ))}
+ View all blog posts
+
+ : null}
+
+
+
+
+
+
+
diff --git a/src/pages/plugins/_types.ts b/src/pages/plugins/_types.ts
new file mode 100644
index 0000000..533c243
--- /dev/null
+++ b/src/pages/plugins/_types.ts
@@ -0,0 +1,15 @@
+export interface ExtendedPlugin {
+ id: string;
+ slug: string;
+ name: string;
+ description: string;
+ tags: string[];
+ firstReleaseDate: string;
+ latestReleaseDate: string;
+ icon: string;
+ sourceCodeUrl: string;
+ author: string;
+ version: string;
+ language: string;
+ isBuiltIn: boolean;
+}
diff --git a/src/pages/plugins/index.astro b/src/pages/plugins/index.astro
new file mode 100644
index 0000000..a81704d
--- /dev/null
+++ b/src/pages/plugins/index.astro
@@ -0,0 +1,171 @@
+---
+import {getPluginsJson} from "@/getPluginsJson";
+import Plugin from "@/components/plugins/Plugin.astro";
+import Layout from "@/layouts/Layout.astro";
+import Section from "@/components/Section.astro";
+import SectionHeader from "@/components/SectionHeader.astro";
+import SectionSubheader from "@/components/SectionSubheader.astro";
+import LabelValue from "@/components/plugins/LabelValue.astro";
+import {TAGS} from "@/constants";
+import featuredPluginIds from "@/data/featured-plugins.yml";
+import Swiper from "@/components/Swiper.astro";
+
+const plugins = await getPluginsJson();
+const featured = plugins
+ .filter(v => featuredPluginIds.includes(v.id))
+ .sort((a, b) => featuredPluginIds.indexOf(a.id) - featuredPluginIds.indexOf(b.id));
+
+const hasFeaturedPlugins = featured.length > 0;
+---
+
+
+
+ Plugins
+ Extend Flow Launcher's functionality
+
+ {hasFeaturedPlugins &&
+ Featured plugins
+
+ {featured.map(v => )}
+
+ }
+
+
+
+
+
+
diff --git a/src/pages/theme-builder.astro b/src/pages/theme-builder.astro
new file mode 100644
index 0000000..bf0f460
--- /dev/null
+++ b/src/pages/theme-builder.astro
@@ -0,0 +1,14 @@
+---
+import ThemeBuilder from "@/components/theme-builder/ThemeBuilder.svelte";
+import Layout from "@/layouts/Layout.astro";
+import Section from "@/components/Section.astro";
+---
+
+
+
+
diff --git a/src/utils.ts b/src/utils.ts
new file mode 100644
index 0000000..21d687f
--- /dev/null
+++ b/src/utils.ts
@@ -0,0 +1,155 @@
+import process from 'node:process';
+
+export function formatDate(date: Date | string): string {
+ return new Date(date).toLocaleDateString('en-US', {
+ year: 'numeric',
+ month: 'short',
+ day: 'numeric'
+ });
+}
+
+export function slugify(text: string): string {
+ return text
+ .toLowerCase()
+ .replace(/\s+/g, '-')
+ .replace(/[^a-z0-9-]/g, '-')
+ .replace(/^-+/, '')
+ .replace(/-+$/, '')
+ .replace(/-{2,}/, '-');
+}
+
+declare function refreshFsLightbox(): void;
+
+export function addLightboxToBlogPostImages(): void {
+ const blogs = document.querySelectorAll('.blog-content') as NodeListOf;
+
+ for (let i = 0; i < blogs.length; i++) {
+ const blog = blogs[i];
+ const images = blog.querySelectorAll('img');
+ for (const image of images) {
+ const a = document.createElement('a');
+ a.href = image.src;
+ a.dataset.fslightbox = `blog-${i}`;
+ image.replaceWith(a);
+ a.appendChild(image);
+ }
+ }
+
+ refreshFsLightbox();
+}
+
+let themeToggleButtons: NodeListOf | null = null;
+
+export function setTheme(theme: string): void {
+ if (!themeToggleButtons) {
+ themeToggleButtons = document.querySelectorAll(".theme-toggle-button[data-theme-toggle-button]") as NodeListOf;
+ }
+
+ document.documentElement.setAttribute("data-theme", theme);
+ localStorage.setItem("theme", theme);
+}
+
+export function toggleTheme(e?: Event): void {
+ e?.preventDefault();
+ const currentTheme = document.documentElement.getAttribute("data-theme");
+ const newTheme = currentTheme === "light" ? "dark" : "light";
+ setTheme(newTheme);
+}
+
+export function setUpThemeToggleButton(buttonSelector: string): void {
+ const buttons = document.querySelectorAll(buttonSelector) as NodeListOf;
+ buttons.forEach(button => button.addEventListener("click", toggleTheme));
+}
+
+export function getBaseUrl(emptyRoot = false): string {
+ const path = "/" + (process.env.WEBSITE_BASE?.split('/')?.slice(1)?.join('/') ?? "");
+ return emptyRoot && path === "/" ? "" : path;
+}
+
+export function getBaseUrlFromHtml(emptyRoot = false): string {
+ const path = document.querySelector('base')?.getAttribute('href') ?? "/";
+ return emptyRoot && path === "/" ? "" : path;
+}
+
+const cache = new Map();
+
+export function setCache(key: string, value: any): void {
+ cache.set(key, value);
+}
+
+export function getCache(key: string): any {
+ return cache.get(key);
+}
+
+const SIZE_UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
+export function formatBytes(bytes: number): string {
+ let unitIndex = 0;
+ while (bytes >= 1024) {
+ bytes /= 1024;
+ unitIndex++;
+ }
+ return `${bytes.toFixed(2)} ${SIZE_UNITS[unitIndex]}`;
+}
+
+export function setupButtonToOpenDownloadDialog(buttonSelector: string): void {
+ const dialog = document.querySelector('#download-dialog') as HTMLDialogElement;
+
+ document.querySelector(buttonSelector)?.addEventListener('click', (e: Event) => {
+ e.preventDefault();
+ dialog.showModal();
+ dialog.focus();
+ });
+}
+
+export function normalizeHexColorForWpf(hexColor: string): string {
+ hexColor = hexColor.toUpperCase();
+
+ if (hexColor.length === 4) {
+ return `#FF${hexColor[1]}${hexColor[1]}${hexColor[2]}${hexColor[2]}${hexColor[3]}${hexColor[3]}`;
+ }
+
+ if (hexColor.length === 5) {
+ return `#${hexColor[4]}${hexColor[4]}${hexColor[1]}${hexColor[1]}${hexColor[2]}${hexColor[2]}${hexColor[3]}${hexColor[3]}`;
+ }
+
+ if (hexColor.length === 7) {
+ return `#FF${hexColor.substring(1)}`;
+ }
+
+ if (hexColor.length === 9) {
+ return `#${hexColor.substring(7)}${hexColor.substring(1, 7)}`;
+ }
+
+ return hexColor;
+}
+
+export function normalizeMarginsForWpf({top = 0, right = 0, bottom = 0, left = 0}: {
+ top?: number;
+ right?: number;
+ bottom?: number;
+ left?: number
+}): string {
+ return `${left} ${top} ${right} ${bottom}`;
+}
+
+export function normalizeBooleanForWpf(value: boolean): string {
+ return value ? "True" : "False";
+}
+
+export function getFontSizeSetterForWpf(size: number): string {
+ if (size > 0) {
+ return ` `;
+ }
+
+ return `
+
+
+ `.trim();
+}
+
+export function verifyArrayTypes(array: any[] | undefined, ...types: string[]): boolean {
+ if (array?.length !== types.length) {
+ return false;
+ }
+ return array.every((item, index) => typeof item === types[index]);
+}
diff --git a/svelte.config.js b/svelte.config.js
new file mode 100644
index 0000000..522c1ef
--- /dev/null
+++ b/svelte.config.js
@@ -0,0 +1,5 @@
+import { vitePreprocess } from '@astrojs/svelte';
+
+export default {
+ preprocess: vitePreprocess(),
+}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..9fd178e
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "extends": "astro/tsconfigs/strict",
+ "include": [
+ ".astro/types.d.ts",
+ "src/**/*.d.ts",
+ "**/*",
+ ],
+ "exclude": [
+ "dist"
+ ],
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/*": [
+ "./src/*"
+ ],
+ "$styles/*": [
+ "./src/assets/styles/*"
+ ]
+ }
+ }
+}