From e3d7a911f4310d315c075a702979f64bc1444de3 Mon Sep 17 00:00:00 2001 From: Raphix Date: Fri, 25 Jul 2025 18:00:14 +0200 Subject: [PATCH] Version 1.0.0 - Initialisation du depot --- .browserslistrc | 4 + .gitignore | 23 + README.md | 22 + babel.config.js | 5 + index.html | 12 + jsconfig.json | 19 + package-lock.json | 2183 +++++++++++++++++++ package.json | 24 + public/discord-logo-white.png | Bin 0 -> 32637 bytes public/favicon.ico | Bin 0 -> 5402 bytes public/gunship.ttf | Bin 0 -> 21992 bytes public/information.json | 14 + public/logo-white.svg | 52 + public/logo.png | Bin 0 -> 24142 bytes public/logo.svg | 52 + public/logoblack.png | Bin 0 -> 28088 bytes public/logoblack.svg | 54 + src/App.vue | 14 + src/assets/Global.scss | 84 + src/components/Actions/ReturnHomeButton.vue | 30 + src/components/Features/ServerListItem.vue | 84 + src/components/Features/UserAction.vue | 50 + src/components/Layout/DefaultSplash.vue | 37 + src/components/Layout/Splash.vue | 44 + src/components/UI/Avatar.vue | 23 + src/components/UI/Box.vue | 73 + src/components/UI/Button.vue | 61 + src/components/UI/Error.vue | 30 + src/components/UI/IconAction.vue | 36 + src/components/UI/Info.vue | 30 + src/components/UI/ServerAvatar.vue | 24 + src/components/UI/User.vue | 61 + src/main.js | 40 + src/routes.js | 100 + src/socket.js | 22 + src/stores/globalStore.js | 44 + src/stores/loginStore.js | 58 + src/stores/userStore.js | 30 + src/utils/Access.vue | 24 + src/utils/IORequest.js | 22 + src/utils/Loader.vue | 40 + src/utils/Redirect.vue | 85 + src/utils/SocketEnvironment.vue | 88 + src/utils/UserRequest.js | 11 + src/views/Interface.vue | 95 + src/views/Login.vue | 193 ++ src/views/PageError.vue | 45 + src/views/Privacy.vue | 119 + src/views/Servers.vue | 117 + src/views/Terms.vue | 43 + vite.config.js | 14 + 51 files changed, 4335 insertions(+) create mode 100644 .browserslistrc create mode 100644 .gitignore create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 index.html create mode 100644 jsconfig.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/discord-logo-white.png create mode 100644 public/favicon.ico create mode 100644 public/gunship.ttf create mode 100644 public/information.json create mode 100644 public/logo-white.svg create mode 100644 public/logo.png create mode 100644 public/logo.svg create mode 100644 public/logoblack.png create mode 100644 public/logoblack.svg create mode 100644 src/App.vue create mode 100644 src/assets/Global.scss create mode 100644 src/components/Actions/ReturnHomeButton.vue create mode 100644 src/components/Features/ServerListItem.vue create mode 100644 src/components/Features/UserAction.vue create mode 100644 src/components/Layout/DefaultSplash.vue create mode 100644 src/components/Layout/Splash.vue create mode 100644 src/components/UI/Avatar.vue create mode 100644 src/components/UI/Box.vue create mode 100644 src/components/UI/Button.vue create mode 100644 src/components/UI/Error.vue create mode 100644 src/components/UI/IconAction.vue create mode 100644 src/components/UI/Info.vue create mode 100644 src/components/UI/ServerAvatar.vue create mode 100644 src/components/UI/User.vue create mode 100644 src/main.js create mode 100644 src/routes.js create mode 100644 src/socket.js create mode 100644 src/stores/globalStore.js create mode 100644 src/stores/loginStore.js create mode 100644 src/stores/userStore.js create mode 100644 src/utils/Access.vue create mode 100644 src/utils/IORequest.js create mode 100644 src/utils/Loader.vue create mode 100644 src/utils/Redirect.vue create mode 100644 src/utils/SocketEnvironment.vue create mode 100644 src/utils/UserRequest.js create mode 100644 src/views/Interface.vue create mode 100644 src/views/Login.vue create mode 100644 src/views/PageError.vue create mode 100644 src/views/Privacy.vue create mode 100644 src/views/Servers.vue create mode 100644 src/views/Terms.vue create mode 100644 vite.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..dc3bc09 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,4 @@ +> 1% +last 2 versions +not dead +not ie 11 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..403adbc --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules +/dist + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md new file mode 100644 index 0000000..cb0c26e --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# **Subsonics - Chopin Frontend** + +> Cette version est une refonte complète et intégrale de [Subsonics - Web](https://git.raphix.fr/subsonics/web) + +Ce dépot est le frontend de [Subsonics Chopin](https://git.raphix.fr/subsonics/chopin) + +## Bienvenue sur Chopin, la nouvelle version de Subsonics + +## **Fonctionnalités** + +> - Lecture de vidéos depuis Youtube, Spotify et SoundClound +> - Lecture de fichiers locaux *(Uniquement sur le site)* +> - Gestion et lecture de playlist +> - Accéder à votre propre historique et à l'historique du Bot +> - Affichage des paroles de la musique en cours +> - Une interface refaite pour toutes les platformes. +> - Récupération de vos recommendations & Playlists Spotify / Youtube + +Le FrontEnd est gérée par VueJS ✌️et le BackEnd a été entièrement refait localement pour des réponses plus rapide et plus stable + + +[CHANGELOG](https://git.raphix.fr/subsonics/chopin/src/branch/main/changelog.md) diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..e955840 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..5ce059d --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + + + + +
+ + + diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..4aafc5f --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "esnext", + "baseUrl": "./", + "moduleResolution": "node", + "paths": { + "@/*": [ + "src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a9dcd2b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2183 @@ +{ + "name": "chopin-frontend", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chopin-frontend", + "version": "0.1.0", + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/vue-fontawesome": "^3.0.8", + "@unhead/vue": "^2.0.12", + "@vitejs/plugin-vue": "^6.0.0", + "core-js": "^3.8.3", + "pinia": "^3.0.3", + "socket.io-client": "^4.8.1", + "vite": "^7.0.5", + "vue": "^3.2.13", + "vue-router": "^4.0.3" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.1.tgz", + "integrity": "sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.6.1.tgz", + "integrity": "sha512-DaG6XlyKpz08bmHY5SGX2gfIllaqtDJ/KwVoxsmP22COOLYwDBe7yD3DZGwXem/Xq7QOc9cuR7R3MpAv5CFfDw==", + "license": "(Apache-2.0 AND BSD-3-Clause)", + "optional": true, + "peer": true + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", + "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.7.2.tgz", + "integrity": "sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.2.tgz", + "integrity": "sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz", + "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz", + "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==", + "license": "MIT", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", + "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", + "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.19", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz", + "integrity": "sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.1.tgz", + "integrity": "sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.1.tgz", + "integrity": "sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.1.tgz", + "integrity": "sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.1.tgz", + "integrity": "sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.1.tgz", + "integrity": "sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.1.tgz", + "integrity": "sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.1.tgz", + "integrity": "sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.1.tgz", + "integrity": "sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.1.tgz", + "integrity": "sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.1.tgz", + "integrity": "sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.1.tgz", + "integrity": "sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.1.tgz", + "integrity": "sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.1.tgz", + "integrity": "sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.1.tgz", + "integrity": "sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.1.tgz", + "integrity": "sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.1.tgz", + "integrity": "sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.1.tgz", + "integrity": "sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.1.tgz", + "integrity": "sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.1.tgz", + "integrity": "sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.1.tgz", + "integrity": "sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.14.tgz", + "integrity": "sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "undici-types": "~7.8.0" + } + }, + "node_modules/@unhead/vue": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.0.12.tgz", + "integrity": "sha512-WFaiCVbBd39FK6Bx3GQskhgT9s45Vjx6dRQegYheVwU1AnF+FAfJVgWbrl21p6fRJcLAFp0xDz6wE18JYBM0eQ==", + "license": "MIT", + "dependencies": { + "hookable": "^5.5.3", + "unhead": "2.0.12" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + }, + "peerDependencies": { + "vue": ">=3.5.13" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.0.tgz", + "integrity": "sha512-iAliE72WsdhjzTOp2DtvKThq1VBC4REhwRcaA+zPAAph6I+OQhUXv+Xu2KS7ElxYtb7Zc/3R30Hwv1DxEo7NXQ==", + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-beta.19" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.17.tgz", + "integrity": "sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.5", + "@vue/shared": "3.5.17", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.17.tgz", + "integrity": "sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.17", + "@vue/shared": "3.5.17" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.17.tgz", + "integrity": "sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.5", + "@vue/compiler-core": "3.5.17", + "@vue/compiler-dom": "3.5.17", + "@vue/compiler-ssr": "3.5.17", + "@vue/shared": "3.5.17", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.17", + "postcss": "^8.5.6", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.17.tgz", + "integrity": "sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.17", + "@vue/shared": "3.5.17" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz", + "integrity": "sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.7", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz", + "integrity": "sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==", + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.17.tgz", + "integrity": "sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.17" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.17.tgz", + "integrity": "sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.17", + "@vue/shared": "3.5.17" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.17.tgz", + "integrity": "sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.17", + "@vue/runtime-core": "3.5.17", + "@vue/shared": "3.5.17", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.17.tgz", + "integrity": "sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.17", + "@vue/shared": "3.5.17" + }, + "peerDependencies": { + "vue": "3.5.17" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.17.tgz", + "integrity": "sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg==", + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "optional": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/birpc": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.5.0.tgz", + "integrity": "sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "license": "MIT/X11", + "optional": true, + "peer": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/core-js": { + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.44.0.tgz", + "integrity": "sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io-client": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", + "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.1.1" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "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/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "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/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/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/immutable": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "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/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "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/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "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/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, + "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/pinia": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.3.tgz", + "integrity": "sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^7.7.2" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/@vue/devtools-api": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.7.tgz", + "integrity": "sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.7" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "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.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.45.1.tgz", + "integrity": "sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.45.1", + "@rollup/rollup-android-arm64": "4.45.1", + "@rollup/rollup-darwin-arm64": "4.45.1", + "@rollup/rollup-darwin-x64": "4.45.1", + "@rollup/rollup-freebsd-arm64": "4.45.1", + "@rollup/rollup-freebsd-x64": "4.45.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.45.1", + "@rollup/rollup-linux-arm-musleabihf": "4.45.1", + "@rollup/rollup-linux-arm64-gnu": "4.45.1", + "@rollup/rollup-linux-arm64-musl": "4.45.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.45.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.45.1", + "@rollup/rollup-linux-riscv64-gnu": "4.45.1", + "@rollup/rollup-linux-riscv64-musl": "4.45.1", + "@rollup/rollup-linux-s390x-gnu": "4.45.1", + "@rollup/rollup-linux-x64-gnu": "4.45.1", + "@rollup/rollup-linux-x64-musl": "4.45.1", + "@rollup/rollup-win32-arm64-msvc": "4.45.1", + "@rollup/rollup-win32-ia32-msvc": "4.45.1", + "@rollup/rollup-win32-x64-msvc": "4.45.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/sass-embedded": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.89.2.tgz", + "integrity": "sha512-Ack2K8rc57kCFcYlf3HXpZEJFNUX8xd8DILldksREmYXQkRHI879yy8q4mRDJgrojkySMZqmmmW1NxrFxMsYaA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@bufbuild/protobuf": "^2.5.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.0.2", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-android-arm": "1.89.2", + "sass-embedded-android-arm64": "1.89.2", + "sass-embedded-android-riscv64": "1.89.2", + "sass-embedded-android-x64": "1.89.2", + "sass-embedded-darwin-arm64": "1.89.2", + "sass-embedded-darwin-x64": "1.89.2", + "sass-embedded-linux-arm": "1.89.2", + "sass-embedded-linux-arm64": "1.89.2", + "sass-embedded-linux-musl-arm": "1.89.2", + "sass-embedded-linux-musl-arm64": "1.89.2", + "sass-embedded-linux-musl-riscv64": "1.89.2", + "sass-embedded-linux-musl-x64": "1.89.2", + "sass-embedded-linux-riscv64": "1.89.2", + "sass-embedded-linux-x64": "1.89.2", + "sass-embedded-win32-arm64": "1.89.2", + "sass-embedded-win32-x64": "1.89.2" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.2.tgz", + "integrity": "sha512-oHAPTboBHRZlDBhyRB6dvDKh4KvFs+DZibDHXbkSI6dBZxMTT+Yb2ivocHnctVGucKTLQeT7+OM5DjWHyynL/A==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.2.tgz", + "integrity": "sha512-+pq7a7AUpItNyPu61sRlP6G2A8pSPpyazASb+8AK2pVlFayCSPAEgpwpCE9A2/Xj86xJZeMizzKUHxM2CBCUxA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.2.tgz", + "integrity": "sha512-HfJJWp/S6XSYvlGAqNdakeEMPOdhBkj2s2lN6SHnON54rahKem+z9pUbCriUJfM65Z90lakdGuOfidY61R9TYg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.2.tgz", + "integrity": "sha512-BGPzq53VH5z5HN8de6jfMqJjnRe1E6sfnCWFd4pK+CAiuM7iw5Fx6BQZu3ikfI1l2GY0y6pRXzsVLdp/j4EKEA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.2.tgz", + "integrity": "sha512-UCm3RL/tzMpG7DsubARsvGUNXC5pgfQvP+RRFJo9XPIi6elopY5B6H4m9dRYDpHA+scjVthdiDwkPYr9+S/KGw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.2.tgz", + "integrity": "sha512-D9WxtDY5VYtMApXRuhQK9VkPHB8R79NIIR6xxVlN2MIdEid/TZWi1MHNweieETXhWGrKhRKglwnHxxyKdJYMnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.2.tgz", + "integrity": "sha512-leP0t5U4r95dc90o8TCWfxNXwMAsQhpWxTkdtySDpngoqtTy3miMd7EYNYd1znI0FN1CBaUvbdCMbnbPwygDlA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.2.tgz", + "integrity": "sha512-2N4WW5LLsbtrWUJ7iTpjvhajGIbmDR18ZzYRywHdMLpfdPApuHPMDF5CYzHbS+LLx2UAx7CFKBnj5LLjY6eFgQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.2.tgz", + "integrity": "sha512-Z6gG2FiVEEdxYHRi2sS5VIYBmp17351bWtOCUZ/thBM66+e70yiN6Eyqjz80DjL8haRUegNQgy9ZJqsLAAmr9g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.2.tgz", + "integrity": "sha512-nTyuaBX6U1A/cG7WJh0pKD1gY8hbg1m2SnzsyoFG+exQ0lBX/lwTLHq3nyhF+0atv7YYhYKbmfz+sjPP8CZ9lw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.2.tgz", + "integrity": "sha512-N6oul+qALO0SwGY8JW7H/Vs0oZIMrRMBM4GqX3AjM/6y8JsJRxkAwnfd0fDyK+aICMFarDqQonQNIx99gdTZqw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.2.tgz", + "integrity": "sha512-K+FmWcdj/uyP8GiG9foxOCPfb5OAZG0uSVq80DKgVSC0U44AdGjvAvVZkrgFEcZ6cCqlNC2JfYmslB5iqdL7tg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.2.tgz", + "integrity": "sha512-g9nTbnD/3yhOaskeqeBQETbtfDQWRgsjHok6bn7DdAuwBsyrR3JlSFyqKc46pn9Xxd9SQQZU8AzM4IR+sY0A0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.2.tgz", + "integrity": "sha512-Ax7dKvzncyQzIl4r7012KCMBvJzOz4uwSNoyoM5IV6y5I1f5hEwI25+U4WfuTqdkv42taCMgpjZbh9ERr6JVMQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-arm64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.2.tgz", + "integrity": "sha512-j96iJni50ZUsfD6tRxDQE2QSYQ2WrfHxeiyAXf41Kw0V4w5KYR/Sf6rCZQLMTUOHnD16qTMVpQi20LQSqf4WGg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-x64": { + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.2.tgz", + "integrity": "sha512-cS2j5ljdkQsb4PaORiClaVYynE9OAPZG/XjbOMxpQmjRIf7UroY4PEIH+Waf+y47PfXFX9SyxhYuw2NIKGbEng==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/socket.io-client": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", + "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/superjson": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", + "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/terser": { + "version": "5.43.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", + "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "license": "BSD-2-Clause", + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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", + "optional": true, + "peer": true + }, + "node_modules/undici-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/unhead": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.0.12.tgz", + "integrity": "sha512-5oo0lwz81XDXCmrHGzgmbaNOxM8R9MZ3FkEs2ROHeW8e16xsrv7qXykENlISrcxr3RLPHQEsD1b6js9P2Oj/Ow==", + "license": "MIT", + "dependencies": { + "hookable": "^5.5.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/vite": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.5.tgz", + "integrity": "sha512-1mncVwJxy2C9ThLwz0+2GKZyEXuC3MyWtAAlNftlZZXZDP3AJt5FmwcMit/IGGaNZ8ZOB2BNO/HFUB+CpN0NQw==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.6", + "picomatch": "^4.0.2", + "postcss": "^8.5.6", + "rollup": "^4.40.0", + "tinyglobby": "^0.2.14" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "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/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vue": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.17.tgz", + "integrity": "sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.17", + "@vue/compiler-sfc": "3.5.17", + "@vue/runtime-dom": "3.5.17", + "@vue/server-renderer": "3.5.17", + "@vue/shared": "3.5.17" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz", + "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0eef251 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "chopin-frontend", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "vite --host --port 8080", + "build": "vue-tsc -b && vite build" + }, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/vue-fontawesome": "^3.0.8", + "@unhead/vue": "^2.0.12", + "@vitejs/plugin-vue": "^6.0.0", + "core-js": "^3.8.3", + "pinia": "^3.0.3", + "socket.io-client": "^4.8.1", + "vite": "^7.0.5", + "vue": "^3.2.13", + "vue-router": "^4.0.3" + } +} diff --git a/public/discord-logo-white.png b/public/discord-logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..22ef91af1ba3f864dee7066c171223337bf67f03 GIT binary patch literal 32637 zcmbSz1z42X`{-xyD&o2-p@52jNOwsYsDlg$NJ}}4IKa?Ihif3c3z7p2Dj`w=14v^4 zA~DL4gETT2Lkl7T_x%v}cmFq^d*^v}ojBilJI{Lvxuku5_s)Ym5d_(dxo}nwL4MCh zkWF2`ZHI3>N%80pzdK(raYGQ<4)niG7WfapA;{KA!ewK3W2}}E&WR{yZR2zmFXlyb zhSdn7tmfrxjkCwQAGwORB{-_^PF2?O9wFGM@EXZtC9uwC@Ye|!d|dJRKH8UYKK3|8 z8(uZlBg$S%umKV8Zhgdy=-}w4aGV-$0B1fboq@=|qq{XGAMI{uJWaX5k<&SK+bH(O5)<4o}OZ!(qc}ow&IeCii+YAQsPolqOd~L&D+u4+Dp{Y?bxp! z&f?v0t^{Xyf|KJBbVuu}P9E+mynyOY8i>ySZtLi_!6)FDxR6cB}B>P_g1|csIT#{C{)c=eC~L@v!OtLEJx=xj9{P_q2A!pRxsR z{a@8d9FP}B?eHfZ;{PLw>%aYXHv4NiI0E$Tzb*(q{OiQf?B$0hYbKB7a;d-Z>w>`T2$Cc+pJGUE5 zKioOH`YdBd?@X|2kbNLmqp3)5$gwu#y1V}5<%+ch203s$!efk1@e_+imI!bjBzkX$^c)EX^XQ2UazZ^z5u3DjearxP^QcRIr`yv`G z(3jE$%x+bg*5C|E0kL=K%9P{Oo(j9zF~+{Z#(u*GBwx!7WP@&A(!+g0QC(s(jcE^g zUdqT;*hP-vU!D(>%+lO*o`xg+9p5fdSqIQCMHo}HDh(&0hhDnF5Apsl9Ce30)Z zm`iMb1F>oSrM^cnThbc zM;-Q{aS?rSKS)0}*y1XfS)I?~x>=s^A-m99BqXX%!5#+vy=3gY zr3GQXkXm_=-jFTo+Ve(Vk~yrUKl;8)QiE9-Kz%?d&G{E|^UU;y6C#uS7MHhwRHSt% z#1pi1ee)Ly8nros|KhddeuqMw#(r94tBhK;FG#~ql#?0S|?@U=@NMQ zB>$aXQah)EiD)!EE6Gd-@Es`lEBk-(f`gx5mgj1!4QD+?2q+MWp%mR`d|j$;egHK5 zi(VF>$5ulm&h~?B=_ekFf^ZLv652VaDBpjp-oVZKS!XAn# zBdC35B#cSSI0P(v+*qa_|2S~DxX_DiXxhiPbfs@#H6WhB9t8%x*fMoWEg^ryo9 zW`FJD&C9hBYJc`VJvL&&@|$!FrM-9lQ6JyV>;9f8hK8_#Ro}QZf2l{b{Bewik@@j* zt>xaSe;F-dp=q}wjS#l|>(u5U#Q}!IFPac-ZA{*BTv=H+tmQ}`alNstd~;;uDHc++sXVql zGgB0IQ3uhUBAQwg%?@q(`D@ToJ-yFyglL0kjc9gID~=3LLQH4Ze?b1pU*edMh1FiJ zk=u^&Ve;L2cDh?~{?e*deZ8C#E#a){ClQ+vvU|)K6Qa?7e$>;;k;D{*xE@4SW{A;5 zk6#x5oiWw9>73nxZL-LBygBy^7Q#_ej8Z2vVrN4uEU}?PfXAF zz98#D=JAcCd#*;)y>lO?ZLfQpo3jB8dAmo`E=xX)sJe-Rr!QbbgQt&_E-P0P>8Di@ zmVbz98y@Z(Z%l`_Jxa%2;(zFH)Ym(iViHY8=?Ljv*!L4yka$r) zS5y;!_WAR4^X{}m!n?!xK7aaS;}Q2Tj9sHNhQx&<=^zc0mYDn}XEuI%yIUZen~LAx zfgB;wIt1!DH@=_vjlX0x;kdUx_hv+CM8nkk(8dqIM7~NsaiC1S(J$Tx{eArvWGaxY zGAIPFr%!zTw6PfJ(AV=#B}9jfupn;@#A$EdZ~PFRz*HsM#*BG@Moc_&YATN+jRoxriaBOvHg4x_xGDX9;ASGhaT4B-~ zi=Fv2?OH{eNWcU2Xv2e+2LJL*VHHhU4Q(g>!bW!kuY>mZ#oq|ukaAk1mfpp2-Ah}7 z#7qtT#dHb2EX7!$d#EbC{yFV&Pf0VJ=#>h?vHq|0Gkbs>57N{DxPzk$X?USV8^Saj86)=h|VkA{~1 zhJ%^Nkc{idl#JMhd>_}~`lTQ~ADseMmux-mx^2kHE7~dg%fFU7?TjO(%SC{nnD2d} zv;i53k}i#=qaUY5oZ2-R8(+`AO3<`}3~D=a=IN6Sfgp7+SC~|_wcIvmv7h>noc}LA zxyDf>remFHN6T~n^H6w3dMUaGSLbKSpTFR8%im?HGBB$sWnBH0f=@Of?)7|4UxWj% zk!%7-xKKRQcSJl$FAd34-DLH+=Hkh&Er>G@jUq)CVg7ZK5FH=&gQpwpYHD;ca6PHm zZa2YS;;p5-CFrO$b~iFK&sJ9E&0~4N_wi>4{hiG2m5|AGIS5M3N7Dr|A8)FAo0z#B zarO)IEo0xdxaJ$}VM6#B0+}jZkd`o|GILN1 zP~V=Pyj&Sxv|fPBw_UnuH-|D4cQxrCQb)VO zXOdC*ffCgp+iCdI_Xag`*kOqK^g9qM2UN;l&rIlYNdr{*bCZ}N>I=bvFa z=%xu?f!#N5+1DfJ80kD%WP^hN#E!H_;{^Wv2M0Q$7uG14qQ?*`;pNx%R?{vA>{~s% zyYRztq^>azvwC6np+e({>I<{vo`CgLN`wnP`H$T1+JsD+p*i0x&J{L|bwim*J{sF0 z_5>6-Wm>5z7hHq-4iV}6zv$c>zb8Dn-;oJ9C@6$`gN6r!1YK;pH-%2uiaOTEvEd4&`17fqUF z#V(X)oIszm8iOazP$!^-+PqM|c$I(lw*@gMM<*9bTdkE2DR&vrN2A6yST#!g@#`Uz zqqru%LjcvEZ&hJ^hYtDdmFJ5|uW>L_N1Lm}09 zeXUNvp^H*T!PEa5tC87;C=c}Wl}2SfHD_G1=sW8Yacey(aPNsC=#R_&)E%qjRSWJR zP61u;h&5j{sw@#JV~b3z`LbfuVa%$QaBd#$O)o9U*uAboNqx^ol2T{<6;xNt%xgRH zEjkQD>wL8!x(YLE7QL21+*1+RPEQcQk*L95oKw3|>870}U$kRK{h5W=Kc&vQ5ZsJZ zplF`CfXRLS5!BK7*u=`E97f4dcvKVD5l1-QzX{>Fippzewbm>ydM%x}2QB>W+Hf*1 z@VvY+jjp|vR={6^f>$r73jZjHI5U>HGINPERh-V}k!dZ^ITgx=E5Xqkqv^_MX@ICt zUAepi31an$9UFuKPcA#`<*`;=C|$oQ{NcLAB^w;R_)}rUtF_HuZ$ng>`A-+tTzme! z?`USYW1$Pfn_daSJOcedGE za9gQggHQ0XV)?G8SBc`u@}}AN{k97_>xm}v!K~JN#UpCFWNP)r<2I7b(GJ2YUJw^gggLVEEe4t z?GPkuL8z$;O-4GJ`PMM52lP96aQZ*#8Ir6p1;0RC+k`l?HiIHcxDFogt-mbW=CrY* zAuZ>piq<`@3i&9CTw-d_FPAhchy}LR{1jvz&K=xx2tfd;TM|WCfQdd#%QS1X!@1K- zmFj{V{$)#Hdg+BqpM%Iy^13HnV;Gp~5={<0DlSD?Y_!4RA@Fpn!|Qy}6pv}4vAx<9 zQ~#+neW>T z#t*Lq#1%LxuFeF;_^l|vP!05-3}n`BQgw>_m`in3)x-9M zIQO!uM@!|&uKxZ~!jzf3PF3LR!POsg)K4snc{FX+Ey(31Tah1if8@=6h-p?|>`zZg z?(1rp2*=aY6;mg(_~JW{dKD2^kAIq~(UywbWi`dNvs6*!k1wNN|Cve1P#I(_J^fp5 zY<3|lb+J|EBX36;>^M(Y@J{@bL!8#Bf*rg_YICoV}YGVeI`l9N4|u4tBO3@?Jc=n zJ_*3f$|^0-9LCNLpY9jwx6I9%7CWpuRpv6o{WX(7?KNSg4j*O5kVi%tlbK>Wk!|CP zj%Sv_m&KR~H)5^1yA2CVon_30vPDOCS|Moz9;{}+BQFa>_e4wZ)uyWyG&;r%C%;xM zTU2z|f+^FQ8$K|$^F*UdnX&WQc5`X!aJgF8>1MYpjF;JLeHDV?b$o&Ts|PR4$V|;y z6NqN)+XUrW8QmuqX1>2YPvZ-t;65zIo@$#|q>T0&eE0unNT`b~GV>yT2{zey8&WY` z$?{ofPu&g-$HOuLdsRfQl-M_4A(~qyF6m{+cW)6pax<27*N~^YLYennd6kFF1NCmH zqX}cqUs5$5{J8JvDwt!gabnwDo47q$8alJ{(NoJ@q4vu?rq3>B5*l0ZT;hXS%y8$} zRTVj-b+S)nV{u_Sk+hQ{J};+pM{e=4yz7bTjiK!G)l`XEr1tF0d&5W6^>tb9Oi!P@ zWHsDzO;LF*w*6B-wzTK$%$)+Wu}ebS%e=lBmF;wal`CVxlJL!>O84>+_RNliu}fNW zsf)A#os*Gy_BiF9bz+72OTas$71uM57{iBy&}WOhe&8^l_2Yr8l!^ZC2EpRc?y|;% zzU754WSD#_yxQ%HA)9wKKE0=Bclb({=zd4X+82C>RRhiUzr#+^Qp-Lo7@q0Ya`ob7 zws%E(en`s+UsQgR-4cBzeWit4{_waGlcQ9-EUY_6Vey8H`H5`i$QB{wt*BbMnvn}) zS%ym51}F9ei&I*``Nuete{h8o9PFj|x)tvmmB3nb}BBovT3+Hz<~31G3i`( z6_qRJ!J%;i`6k=P0NrdST5g5iKZe?FU;I+b2#jgZ5=m9U0sCF&X?LROyiI{<;ovvs zPmdL^lUQeRe?pjDj#q@Qpgwdg{_IN%zwyQ$s{bDt`#)@tr-+~w}r&O?fy8CaE!BQS6*IHi2CxK2Zt0p|6JOL~=|@->LM zd}7h2pE|r9C;9~2K2YqwBE+;SbyrLA{w^&VGzu^ZOdJR@0`iIujg&l=7rHI9$o|lb zm(VU#E)ShcHh&rtrWiR~NvUlXGrnf5ks-!*yW(1+^-4?SlZ#RH2DzeKt%G4xfqz29 znpU~)gQI4JM&D;%Jv?Q`bM?TsBwP|WjzRvVW5j>VF!HdtB@a1Q*2O8&um@ZE*o~+T{RXpu6 zM`28@T_kND=~1y5%sQ~&lfYiCwX;~=65DQ}zxMj+;GUJ_1=GUZheiy5SYS34s9`_e&Y3_t#oV%qxN8GyLN17GZ0L zb`AT>>yWDEY7>$gEc>xW(hsspafH6%#H5DC$;=$)!|OYv3NQE$gny9zs$nW=pPNaT za=L4A;ma*xP|U(y!hM0^UZIP2#a>cS3a_V5%1xy3sgY;q4U20({$M8r$}6|Z1iR9W z*>DQ^m3OAs*lC^LZ4%Fve^_qko3HP`orz7pm|fap{b~4fJD+?1%EOOJZ|tTOV<@K? zfe)XmvE@)cnh)&oY+fWxxv-T;dPTm8rWZ}uKvHVA*XSCeZn+XSgPnh-IeXFL9_y0q zXz~+JmKeb-7e7y0r<_Z`vz$0x$6;@aEYXpv5$^!U=AKAWmhV2i?6>;_x^MSkdz`aC zF~v3M<8c31US{>UQrDzUc2Rn%V3iXR6zsEi$_z=P=1bLNtK{%G<(zS^>!X~oQ*Ps9 zN>ajH4`$6N<((}I%Tuqs%K3pU@-v>5I)^7j51Td2#gFP5-nwOCYTY#HJo;3#GOdAH zd3YfGzy(_%BKHZH=78W9WTg;IMdJa+ zI<7D&OLS7O%vs12UxICrA71ES)72hzpN#Jm$iSpENaZ~pb9*=4>iUgKtF|gMZ`?Pl zD1AHfmVK}>_7?Kiwm_;)^l&_X@TA6K3N8jll6p>g)g9HsVrBe885%SGlS<4rdu44Y+g>tl637gRFUjOrD=j-bjG zYyvqvlKNpe+^wifYE?)illY_N_&@9+b7n!rE4Z zzi7r`+f!@bWF+_X&v+kVT;QyM)=Ps`^bM^Q(aaCK>#3ZKZBMH8b@j{|_HiQRnBdQ@rL7hY84Ib=mGjTeVy)k@Ueu->CmqJ9>q?e~vepsLq~&x%+{aIW><3@XFTr&E%!T4!w%;&d+^x@AKDoPhf@U4@iy(jIEK0l~}A^vFwOj{{I zs{!S{=5S9*d`jto@nt&4`LC+XHG=t}M@C{aO*OWPk1^eZKK)sR7z%D65O*}v(U+TX zMHRC0Yrd=PcuzBTsy(i*xbA!!ow8L@Liz{le4}TUQ947=q7d^R2nfY~wLFcI3*FsCJjqII&-pm)69xHS_12aUp zMj*#ouIw&3kkoW^Z^V@ea^_JyY2BOy_c5v|r4axl3f0SNvFCxF_#`eoH%B zC2{I^(0O5&Dv`EL$^$~Fwez&7LKS&9<~S*DRn!IA5YXUchr2YE|M*;RaxrAx&>ad| zg_;gscdU&60AA$7aIYy?AmWl@M2MmKO_ z^?Kagqv!ovfIz-;pre5a$@o8!3bq)ccf;~#L?IR}5{IrgR52O;B=^eP1+k_*gs?KB z49s`i#L`RGr4W`uDdyMrr-kRKQh90POU;*laGB-4^KTXu-`&eMaL8?1Ak;490a(PuE;FDD5rDga)>AZ;fIoi;AhWEWKfr?3(5guIa)Y!5w=# z`F7g*4LB7(I$a)^{4s#dw&E}nXtNwdHtIjX7yjofGlyWM5wa=>>~SF(o9Z?y0%JQlZk; zX}%mjH8^oUUC^#7FEaY@fL$&w^uwjRQDvSzi$YBQ-Y0Sm3Mr4$OBG)FBS>-|ucjU1 zU)CIaCp|~!2U-cGzGMp)*I^I2`k6~J^zHGO9yyiaAFkEUwxaxP0O8~gAd z7KEi6)e-&$f_}GHyQcjh-_nVuSPChNqtDI8ls-z4d$U_9dGz&;)hGd($;yk zaDK1D=F+La(#w~ZmU(aIigXA=T=|ug?&VR60D|J*0sClTphNr7A_Mz& zQ_#suN(`CCH^}d8mT)HvT5Ul)5?;m0O4!5*K7-6&mqNjAet!zRnte{yD)J9KFxxOaw#?Bv?bkP54WX!C@WpoQN5#8deS+ebi zZvq5<*}EU4B8$1=iE7jd*rWdUT6sj>NCb-Xx89Y4IbYuayZoLji?QB$kaYI>w(kxg zIj<)k(Izh2AwGzG;Y`w?FN8Zguot?unM0~Pqom}~2F`5O0e}BkB`4x}5Hzud9t+HvB+$I~(mL8+@Ih2$m_bxb zGb$yp-&nanmMQbQr5li@I?PKH-f894rR#jNrXrjn&h^qc2 z3NW#!(2Hg&QxBZi9sSr#atrCusj!4mg{$ih>Yd~gp z%G(o~c60mubdaEY5*+PX{ZUG|^B4mEx7UEwJz;O_dtENi<>x!`^m>-Mk9oAv^V5Go z3y7Ksi)ILWW)P!BX>dT|YUHsw?AD_#E z%w*{CwGB=Zv^;L^EEp+o>=qpvNqvyOkGi8r(9p8Fx9T!BRi-ezcuVY=c2VWxGLin5 z?yNPZ^`E2FM=_4=smDEUC@KeEBT!>chPJY_@@mH+&dSS_t8WDIxtM=xT&dPc0eXk7 z3%DrXRILnM9KZCTk-`|tl-tf-`k1xu9UR34QJT7GpZ+-G2FU(+J-DasqrYk4_+)8w z@CQn8Qu+axYXouAIl%%+EqTJ>?PX<_i%UVP5vdJZY!6FDW$8W;@DG0qEEIs@1HY1o_^BM+tl_pRRTt& zDz(if%HKS&a${NUn<^_`qzVvrba;m+Wef&ThrNqWjx6^3jgVX0Q^ms+md@0+j6U%~ zBJD|X7OQ1+jz^wl9~dy+aqhYWm|K#!gV|OHMzd}nza0^$35bZ=lVYYHE<~E>nQ_hdJ}<1kDBP>n&g$6rLZr$1&lfUHwe6bfZ~411 z0Zk7QO0}8azL=XTI>s3qFU#h+?=+WL*C6w=gjzZZOFDw^MPh%Bm+BeIysOW-U<9mm zd6?WE~KI&$kG&Yyt&Zbm@Y2Fo^PurP7qsafY z{6d6W-27l{>7o{2y01m%0ijJp``L863g&s+0-Y`9J|T6wEmui86FCHW`Gqtyiw3ut zTMz&uuX5s#a8%)9I|MKmhd=s0m#n%d>@OPQpc$k5UQD#0=-`3Lcv@EmhR2a?m=1l` zZFYrmVu`3VKE2^$KqvvtJcl;~k%fZg)y0@+nm&Av z+S3o0A^=YmMv#t==dy>}6q&gCy^+T~z%E*6E!kGl!P;Yus)egi9~2q=!86~fTpD#N z->lJA=6=UrD^9YT)&Bb(9H9^P6DRvJRLaH)PDR`ailt?QjC_A$_@iFNrO7LezgyXP z|JdYg$BrIoO6nD~?>x5rg2f0r<5Rw#cND)nB;EM)$E3Yc>ys_v@0TeLd&QWFWs1-J zzo^am*WR#<;o>iDC~h*c^+jYIb@@L)u$q0SngWs0}Me8i3|} zT&~lvx_I(IRZfJ96p0cO4oQpQc58`zT0x%kVf*-n2V=ZU@6ngP8;o;K&anjfkSJlS z1N#{qIo_taxzHN>YnqA)sBJCE52Fc(_4W0;G5T%SY^pJSsfuOLn4lTZKYytadt=0O z`&L!B^s1JeaiHtkqT?HThUebEsr5AMwB?nCdTt!*K#E&&We7(^?crfxtD_b_>pG(FTGDs zxqP`|_yk}oSzQp}VpvHT?GP`KUa@dGD!0X#>cEX38wM-Q`G3m+nA0ok5 z>47wXn9A4DQD}8RAH{<)DK8KhafWcJSA$tT`As%2w{hmmE19zsIZ!yB9s~uxboI}D z&%Qe*-I(E)_!CeOjRaIA2QpHW-*-XVP{-_#r4qUADy}guaY|EW87c1aA%DC1#4a4= zM6?M8+*auo0e}9$o1XZrMj#(8XcyR}m9shJIUkd&6Mt7<3((|vRylXks6_G&vwf9S ztbJ8=HSr9gHN7N@gz8cbMmg|7ltqI~iKHnc9KC4Qi-C_m=szdNlq@TNP7pi6Ot&t+ zO2_OT9SYvtIh5`_$9omCe)58y*72kzXN&UNFs{_k{^9p;p1u{kzUx$CXn2Wo{>FrHUaA4>?(BvPcKdL%qa0+ ztyr<_)@mOxGEetsg~_&dIEHqM?&i;)$RQ;>o93vbF#36$2HP`pt0Q*R)!6*G?`T?q zz|4<3s?u1Z-+1RHuQ0zsvA1PeHr31JfRdNNkQL#1tx!;S_COrCGxA zs`T2bQr@#0wxr-{M&gI3zj-bCl5vVzIdCpmgcY_iPgjW-e>n6HDhU|EsJm5t@nl&g z)>o&(zhRN?H%``Rk93;zwQLLs|9q=kF?rdxXPrp|)xesY0Tm~8+&wSy+{nKU!;R4| z6_44MZOKeO*L~u#%6qv`JHFcUr#_v~s!o#$i6~uQy?ir$Nej{Ze(Kco-#kOy7U~qgujg-O7V4LwyYmU=} zv=%j8ye_DVH+g~6ImYlppYo`$|72~-xP)~e43<6hoQY&(5hcGYUQ-WqNYqvmANQb$WDA ztwSU@Bps%%E48Qk8)p4ZmO^H>IwHXIa!s79Vhjun7!s&u`2Ad!6IeR+y3wIq`$z^m zhD;#M^SV#s3LP<0q)wiy?Ca~S4wR!l5Si@h)2E&Qk8@zN>M$|6!}|%5KA3W1=jf~| z)5F{H(4+VTLZD}*pr`A>b^U5EfMG*o(xgbjrajV8O$Ql8I>KyMGFPg_X>1X}c0BBL z5lzcnr5x|aC0ssslpbDL{Ujae=;KQoTrT;zk1QWiOBO5F7UnR|=wnoR5)`2h`M^G- z@F^PaFnrP`#%r+CmiBGwYyA|VanyqtzE)gbZJvI>AYRw_b4sn+Xl=@2;jMnJWF9lj zjxS{^ZMAiaSxD~fZkQh}*6Tb17gn#4KB z8B@S8Z8))b_=z0t7eD5t=&)4w#(LKavEB^4X@-g%gHT?JojpTeqk3pOjjVXgsvf3ehbrNq0a8x1NWJC7i6&T-wZ@_UobI$Qy5J`ujhkTeT(DyVZ zBELMOv8(V(Cbv3A4PMJh;Vv=x?-6&g3eSI;C<^etZb7-bAfhr7}nyj_qddO`ScNgeCT-yM9+zF)O!xU2a9<4)lgi)c zlH9oNW(%`fC8UZ!AuRNKIIUjc3X3x@(q3z}gN#hM$%9@WIym-Juq-c(_Io8I#HE;W z!d@*s_TF6w)H^%2v;EEfaq;T6?%eh_1^y~EU;Dwljz7Bc-V*5Y8&V>E?~!_`w8JHK zA)w1Dn$@R`PgWt*lW;gdv4*%m@$Q6xc3N^f@0%2^?i`BnZDgne)v|^V7j1$Ox7AR< z#gpu^&|+2jJYSqEhebyUqh@_g6|W`TC>+U`xERl*rN)P`c)p_Ntj)n*o-I9D#KUegRgNO zf2&Pk|DYY|1R5Ts+tU~l??!@PmHMTTa%U6|rDsvwgWRs*U9Z`|?*ArHh~W_M6U`0o zetclgy05DSYu54Q<=mV-{CsZ0@noSnV9}SQGT^Z09RRGT+W|kk#?o!`!dQHhKBi#r z*Pr}wg1-a?+0M5;f0idzvxo0M9A`tw7SrMBCrYn=yK=5PW;6-Slx1$fme)+VgPzkt zg+k&9`ke~|@|LVSCg0vFF&Q%#EBv+XK{Zi}VZn|*q~dxrMeVfP*%X$Q&52M#+5|*& zw;0gp?#`h-_f@KhK)VrCTREoP4GNY1^qIN^GWYcTX!@6)qa3n*eyLP3fit^rHr--C zpSdm#qCX;WkOU;Wb1zSjmJx3k$XOB33n~nqOEZ5;9k!h*m3nQfg^n{lx2?tsXXQyn zp4fY!i$JALwYM@Rx?zLx*Zr^9=yT_EnSK_p+_)>Q!c@xGWNF_3WI!H!8;4wVP>0F= zmo7}FNJzzhT#O}B$iw*xFB868-FmWdt^!R53UlB$aG5OVRKKDOD39YFQkqG3y4I5E88r zsQ1yIKDY)48^?1;Ij(48A~c;wZS3!$7TN2e^)kmfF(BFa(P2nIP{)E6(WM~7WK)n)@EZ~!J}2-LkPU7S804&vtA^Ep=&>2OHbP*V5?d1$4=&)sNV&1b zDP}>J3yauX)bStk4e@R)@-xrV-v}`6PVe*oZi{An3xwm{0ni>&Zy7zSh-8)JK|$GC zs)Pi(7@5M@#4?FOrj0}Jdh-G&g{rl8yy3z3aEqZ!m3d_xPxme%e}3o(wP@XMKT;jF zpMQz=pcjs{#;E7FU_FqU zPa5<)L5D3_zKI3DpvwisoskK2~^<<00^-9W|V5r2(T=odvgHCmi*|W=G zo(8_IJS60Uf8j;pkt+iOPuN=+^^0oT!;JR_hHKF0UisG05}~_FtJHP{XB8Ne)cw5m z_-gNufxJ%~%HkD+lBCABX~D+lOn&5|+(`lMxN#oVt{9TiwDY$PHI>hWwj*^>ig?u5 z^3ax`y*>5IY#gE3=&77D&ilokoXANP&`{B5Td=)Yuipwbk(?Lyoj_V}GfPjg&k-7H z37hm32?&{;z%glTO>6pxaBor8=2ps9c~qGFMjyLmK}zQiW>=hIwDfXLg~<`T%(x$( zXVYaBPF&$_KTiiy4h4_4chVSu3CFbcDfybAQ zHLW#UkI;pP?|cmRhKqxv;VAUfz4W;HLQik2t|tam2+~jlXLRcxcL{mMdRh3%pVRs`g)`WgC6C< zzInzGmF+oTB%Rp(Co9K9W)<3ok&f7x$qr>9z=`14yc-+`?P56e&`{V?q=toxlBs=7|<|5 zWbJF3k*PG^r+_xZeLm+W%VB+~)#5F#LQqP-hHDqa#{$(YWt;ncZprgt*hg06H_u&*#&@MrrVVryDx1=&O`~+ccy3l+-!`Xm4$l|-#C;G|=U5d?) zi~|$2$;XB1MB17{Hb2l%{sq_D=tIxe%GvT(7>7U%j&M|YTHl14>dO%9n9=E3?6<;h4!93CE z*91`XyI&qaK&5x=@p>{idiHd@Ii%?^`CtVmM!y)0_}H3r2c7cyXKa~oO6$>1 zJMpH&g9h$;PM^M2U4e~1cGQ<0ZuAikGtzX>#*uaiZpKvNpF$OV^z1U*75aou*0#mQNVj&X*69s0lircA%595)O0N=Q7^FF zD6kwkAg2V?m+ek^pfC6DDrA8xJjd{$-!ECqz!q2ByOZe+y%iI~9ahenFk3hw02h*= zAZ&HMQVe?4-bY#Vfy@6YaOoMJL)o z_oO|JrE8rc10dG?e!UKybhKIPa|i9{g@(jhRh0Zo|ECuZJ=moqn}d13pg@pnS}E-@c;?5g3>rt$_0ZXGll3$biyky+6>Qkb<&uSw-xNLI!BgQJ)JK z=t3~Jq<#Xf?J2^Z+;p}YEJe8|6WoQ|PY^_y#P5e0UJ~CL_GB3)m&HvW28F`O?z~=> zZJ|I??A-V4()S*)#tD{fvUjcYAt6P{dv^wPCBatHkPLV|g~%8EO>w^I*XDI;Ksj=} zBz#xvM5>XZmXR6$S>r?C;kh9=Seia^W2<5m7Vvf9I<9-^By?GVZdRfcRrbuz!DUzl zS)+x8X4nj~|Ku{A-KP<9YtkoijKNZy+d!y_Xy2734FZ$^W*mbg z9@#Rdy3>y3rH8{;Z&vv3%poGlV|&Ci_gPF4!%5NT`K2Y|I(JooX-PQ(zwvU@LaE+C|;QQ@~Hzn{R--tw|;qWpmqMY?L;H)p!0p8g5@AF9`ut1 zn%`UfJ&tDA@bO)xCR(j|-R=foG$yqo904AV#eUa4XgtUk#Ge>lu`Dq>ss9rEMU?Cbnum5m@QS>s@xt$AZIg5 zBzf@QPlrH<5G6b4lUQAY>bElN6XI+m-??ch8{Ibr_Facb$ziQ~#6;O#fM(+tKrZSb zVb84oUiD5Ki%M`fRSan&s^II~XK6`SLTvFQs?r=V9@r-#1)@9i5biaj>c9sdj@84?bEIWHo?--f`B-66;X{8A}(vHC- zM+FW>l?5dMBvc0=mkj6uJ*u_HN;#C+*^u@c9gCJw$nlDLE&<@eTWXZ*{`NzMWM@aT z6ge`99!QXMA@a(t1tmogP&|hFw9A|l_3+@zSC~7D5eaj14(Nk=y@2z}`;s+F)mlEb&A>8hW+C3S?s#}0$($V4nSa>OqQW0%~HvS9wzIz~^y zpiZMts2dR&-v_!If{rhFa*ZNz(TfCkg5H`4WV>kg!IN+IfmC6}A5GnXs=8xe+C%M1 z*V3Z`!bZ8^_z(s-M z6x<=8`$&`&hK?&1b#?=HJ zvN00hlx9rb%PP2j#QOYQE2w~b4}_1pFX%3x0noaqM$;iavM`8;bMwS~xGoU1*9T^n zf-F#~vcbd^ip=Ske@s2hJ-3*r@5X9xorvyPeW6I`*`WDz|46u6fJ|G# z`eV|lh#-GL+FlRcnsc4}dJjmQi*JzxBT=Wq|E6sQSX^0PDKg&^Y=Y0;p7 zw^`CwRc7O}>kijJDT8)^*XKwCuY41Yk$iHUo4$piQ3L%t1j5||5XJ6DYdtXHM5twd zo?Q6Y@~|fwzym?j^h~1g4{Wq$^!v+qZ$?2HG4vR=VolGtfY*0udgul>_ha zXEA8UTsCOO`=cDWz{^w{2<5LpSa8Jefo#XY<&U5N698QZj1_!((YHU5Z|P|1=8Qu% zRBx)SQ=6A1ZeED3Pa)4AaD>Yw93dFf6Mv67Kd+al4(s-6u!VY`5B9q|uFqf6RDMRn z7(gmFrGo)4rS<9nM_3@!18tIm+ieB|jZIF*S=FpCSX!CS@^S*k28JHT0s0hkbbH8| zLeQ`Y-fM^tbxn1UBwlC%XWg0wk=ZTS>S^Xr)Pw#3ehs}tDG!H$gZRKzajRDl!_|Yo zv}fjE;W%iFsFgMJ1ISR*=@px%{09n31Q0)Q6G&EV-iC#d&FzF_I-l5|suemge#KyY zZUw=zE(TOQ{5@z&6hxsqD+R~R)0c7-94|wff^e5$h2yoNe+ciiPwuYgoU#vWSU&hD z9y;dkHz4V{hH`}seFJem2Ks|T#pu^?P+~O%IN!a1iO`4hogrO;!X5)6B%+<~=U4@aHfp`Dz;u%qMrvhA)^*yP`)jylsV+ z&|dewJ&;)-c-aPypq`_*kJ5@^7BrVt(p6qp?-s67lT;*kah58WH={h5h2>T$>4#eO zMkHK`{Oc4QTth;9A*(z5Jr3NV#uA9c@0g%Lg?NBx3O_=AuFW)Pb922nnqaWwNXUpj z8FW!XVV#BTBE;E0NX>ug?Q~B}0H%+pW9$&mRhahbNgYjdEm^eUEpLoDQcN5t7PUyybDWaB)?f;S$zJSlyI$X1`-FB4)Cybx#%0n z#m++?t?riKzSKteRvmU>>2HL#y~c0bb%rw!!>!Z09l+ObPu6V)b$6~XwCK?avGb8s z$l`5kA(m7@xlpy40`K zi4Z9+!2iNuktS@EyOkrKA76CA?AFGkjau{|Ry+u|#LejEwGT8qUxkE5tn|m1|JK%*$3y*n|Btu!luCsXz~Mb=SCH5e*Iwp5b$ zVC)82TcomO%Q6_sl7wU$%h<}6U8c~Cv1dtRErYTA&Y(WuKYsV0md9)E>%Q(i_uO;O zInU?GM(wsMvWCxXhR?mx0@DjNqc(mxDXC4e9m5lo^f8bqSAA9Iu+n=o>K+O&Ca1=Y z(&qC7W8>|TZ80*a!>lkr@_JjnD#Lri-m18{5%j06Pe@=6!Fm_(r}$QQwHUaB%OAjE z2Q?hM%O5JQH)Y}aIJdz3GXARnjT2IE;GzPFJl!tMaPuOZSjiRcFM`xYck?dI(I1Fs zGjkTay!G)kQO3ZMu#m2a=YAgI{0$%2nDM>H+2ZaO4WHfeh(n)+l$QPXvD_uq+4svt z;~J}v`d}>gh`=6oe+GId%p(k^6Z-|S#Zjh7cMX`@))B9F1hGM#1c0xWTa^So(K2KI ztp^SA>!1)pj5xTQ9sI$nv$F3b`x@$d>$P#J8THAMrEzW_0hZj;F!D(=9@GO{#7ZFs zL8wSk*bsUG?WwkCZ=EmSxx0(mQlcwyciJJaKxRJD2h7`l^FiO9$?1!4)4;wE@iBn? zO9>Qrb7?&BUhJRQB2dH&Rc!gTXIp=HG3i*F+lO9|+c5eHN!nv+ug$(xA7uQ#89~~l zt|yU2M;qs<{Z}#q5+@W9Q`F;1^?dDt4R{G+6dQqTnea(|7YZhofT z=dIap203WW?qLe|9QOy7nZ0Yi*-913dVA+kTGKBbW}Xsdal%rX(q)qM)Oi9kO+0hW zunyy4IDOMsu(a3V3s`&b6CXt&7$thcx3_*2C-noiW+{6-f%2 z&a>3H{1Q?s5vWM){Oz4W1LPZm-wz>rFoPJeD&Ihf0Tvq^E!c~uy2M@e!u@<KY>;eWVCj%aEqo?P|iEuqh^eiGJ-#&MqQSb< z?I$9-!%+W<%C+;Sv%V~XCOx|D<+O74olJ!%;l_mG#{@%OP=qo^*+-Hii+S{E+ECJ~ z8N<j=l*;i)YJr*^ouubuJz)tw>7e5qTZ$t(->|#I8mCPX>!*G{?9M$B78{AKXZkq zHG3bl90r{>kROy+tb+1fP+G#3FNVkQ48=!atX6eBpJwx+#$?s@mxce;R}edX}b(hYs1OAUb;E0g4)wmKC6@366+M3y{<>IL*j0rX4nyy zrRGuM^twPQpIE+@iWQ9+cyz<}>=cCzt`Gl}1g-aT##dcc_GbGhAA*xxMk@kV+pATC zG0IsMhgE>?o&-G1YaIzdnyr26(00`5unIHp923lCcFQ3F7jgUCg}*IG-C=_xFnfrXz28|M!WecXY9@*DE&{Iu}0X?N2TU z(tPL~qgj!toClNh?{RJX-druuocE|HD{5sj`EneywSvvSu%%c>!t!TpQ)9!Hyr8dA z*t(4sY`^%+S!CA5sczysV0>Ub^thVD6FUUFesm&n{CJaGqZBDP6B3js-C}PhOqX7e z=E=dPa6L@R_tJQ zXW^@0S$7b#AS!rq$~hY|IlZbxd?n2qoZJ(^_`Z*-24{_&15h%xT&nz4LR zZMk1_IJrPaf^=L!x^;^vQ(JVrb#EDoX~)V-yBm+9vbtF(bCd|Akmik1J~}31Ma3nI z(HE-qa=4-4`-_&X#TdK= ztHg9PXnIS*Ar`VOA)WY?2Zxy0!RC3iDnhB}?C{t3h*Cfeb)$UrOimSO(M+&)UqcmF0)|+nn1q%7*`Iwvp7R{W{x-c_(EZ{O#L@+S)eTdVg_v9l|yd&mD zSpHB*YyqT`7lbzZ#BChtGjfcW1!rpEJ=Y@VdqXF%&+6p_&zIZ|-)A-{%<#t=?6-Jk z;CSZND=FuKTM_-SRSJYJaA89Dg%t$d-{jRq|CLk^v}T5um?R;oe$~!vB}>DjL&eQQ z+9&aP3wa|9hBLFqF{{7$25)E7S0CLe1-du4oVLk9^Xg}QQXafEqAjkY#H}xf1IW&t zKtW=dd^-(D?Ye&Tcn*UHsLex5!$ zo|6#W=X;2W#8&r!OuY$~M;+1HIWW=#;`O5It&~iO@=t0i{_BK%;HX1A|3>Hf_d26nb$7AKPi(h`%xwrA-yN5u&bri# zi0UKCGZuCclzREb%rzI00h`5Waf&5*kGG~m?uSd+DDj9?Q~hamvva5{?(5xMW6N*G zNECYKk`E!EL@ahdrojR?&b(g3f~Yyd{jIBMhwSYf^=X^8bg_hA!VHbdW7!|QU%L{6 zYX-ZOOh;<^CHn_>=*I&kmJvO>ZKpSGz+vj>u>mQ>m zjR8$XDZay)y9pRN3ZHa`FGyoQ_$JKE*%(J=0G9o`8jrE=P}=O0w8}FM_aZp8dOm|S z;&=Yr_X^2F_reM!G74Y&N!^XYeYCp_NWL~l|Mm{-i&ryzdE&1)5J9z?IxhFONK={& zy-bbCpJtI2O%#&gagJposft;qC-ItNk*Lk~VfTE{x%9vXf=h^|W)b-!-Ajz#wo4cL zD;Q35?~H6yFXW@at5#lK9L$r{vIp`iAs%cWu1-M`%+k;*@n0*IGcZ(}79rWw41t-i z9B{+`ML(KY(Zb6MgB2@$Y9SdE!p>5BHRC!e{>qX4XJCi1|JcfA|9ndk?l=xPSF{D`CVD)Dqo< z)|LDqtXk&J*PNY2Iw~jog_VZWuTpL1>H(q1Hh&P!PW+>tGDnvmA35-=CX>h$I_=VL z{mD9lIQ1D&A;WKZl_GQ7{FRCZgt00>V^?jFI2O6bZ^$!DFS>oKn7mk2-&N0p1L3GXp+Kq)7<`&d%(pL^U2Bk@};M(^2QDJPISc{rHC2Q**zZzPa_aj#4kjjl4 zOJP1CwN}MC0oHdg%gfo--w*lJ_ih=>jjQ|$Y`EAe#DrpEr*f7?NI?8&xg+ zWX+Mvg1*O$AeY5Okb8dQ=-%e!K)YK{_i(!TXiRb8ig4*7_UtQ z`yoDkCu|ZO7L%5s<0KbT3RidFuw%*hmlkXWcCp-GT1zo&UPy@?DB^o10Fh`L%jT%? z<2JqHWphC0$|$ilquEmCA78jqG*4JiuZHD;L2?}BNm(QSkne<>$siCG#ebD!EE@rF z)D6?FJMp~o94%Q#tlfYZLo|tiL-}NE=U5;xfdT2!Al$ti1huSx(ZOThIKe9f_HT#J zo8S+K;tLYW*DX6}YI?0pLcW2Qfmo`exV|92Xd@pP93RaE7ie)@u!hF68(x8z8JtSW zT@n@I3u>hBTYO6iH+8S#Q{-!wAMZ>TXlG&!5mGi5@s*kYwuRM1AjBt-{c!?Z<>uJe zoL<$)w9-@El5qK&lc&eWZBcDTre%CKYX>J=rHK5a0lU{!<%*acz(YxmNvzH&zJNbL zs+HMNKTYILUk(|;uono)Q0rwwT>QIIX*Kuii9x5-u@*GFSGVzce5CrAv~$eP6h>E7 z7;yNWwQsF6%Y>9Ql1{xn{!G(%S1PeIQ-sngqIX|ixQ>wqi`3lhdehm~+AG&CO-+Ra7mF4#DCrmsq_d@(y z8-Gqw8a*X5El`Ka(T*s`h#%!FuK-oyFa%x>&Y$6?yR8t3R{WOwiuvY%-r##suUOqG z3FgwHbEx2Ch|ambcR${k?422Z&afCI;e(~<764siS%>M5u5C~wkQ*@6uK#V?c z4etiVLp@UPyCd-wGLT?a-x5kaSk#Y=cUDzCEMGm4?VhKtQqcI+Nr!?gx1-cKt5*{R zibk#)dpJeord%$?SUTc+ms2g@Wr-mW<7~pr4-h8)S2DsBh$s_n6G#r5UgnH4nU+lFQ*UcJ7MK;7&Rh7+VH`6?!8n#QcN z$kUV9xM;BdL6|3gN$1B{ly8a&t>8mpNkg(1u(48Sy0E_EqZ$q4-U-zkuRMacVSZ*S z;v!}QzNH*^HQp_F>p4y!?)yZ1u0MQ~Is2n(!1PxAtWe9Hi-1&TJ&6`ui~QY+{)E;x zLBC1Z$E@5t7ua{DSD`&u>QC6*UEX$D<-!`0{x%_B+&>qLbN`IKs(D0C|7q z9_daIKYKw7ml@Co0J{LPWP24n0)})GT@9AZe5hCsRd7T`L z%S69j3Hb992_HSV;D|E_uWv2+Hw(3@2^@(4X4 z6#(1_#1%4XO5b*Tb9u$FOwRZZ%1^CZtRUO`gT}%$Tm$E99GXg$P$XH#hpOVs#9~)z zCeMwUff)ej55&r(`J0JRuDib`HAArUfiw(Ea8x)XQ=pwjM771&c1Ns`JObPR%v7RB zxEW>_V!qF;I)7XJ-&fVZhw`qM@4@WFqjA zSzY4i5QST~a^=C2@wrREj%0~fSXc~B2R5-=;*WGi!KjM>=|mu!dfP=P9j)vAYFLLv zvqi8wEfYzS+gkMMuU)Z#S>-B5A9|1*9|NLu(4Kl(Y50jSD9V5v+t6O1c zwjiD)-SCe_uAV2-n}>3hkC2a{-Jf*86Z_w`ZynCLx?7k3QU0ZM2y0syd-~#zn$)J% zIZiyIv`yDO8W+Au?)WFt@om)*g<-Le=NDacOZu;N`b=W|tnH>R-(a1%7oXiWJ8*w> zGxW$tQhF8u%~B}TcUz_6x6SS^AvdESWiPAEZ|PgQWcKpz8n5|&Gb--4Asmw7D;SeD zV3KD~mWFA1LTBtbrERa@P!b=MRc>~B^gVzb+um>+Pm*EUV7Yqu+2j&wuRmL!#Q4{F zP}f1ePe)pbLZO32@$N6mY*04>_ypaQA}MW`bRSp))NS}go%OG7H1$i4t7FI^YWkjK zTV5TZVr|biQ^{sJS6`CH($dX9US{85cYm$^WYrL&zanHvT*Lr`r4u~jJMKwQ&l?5% zct+36(%Y)}iqYG1cv|G$BJK`hLa!nja#>uzJb|*Kwad9n&E72)g($Tn%-sFXr@Z|n zMtvN%K6I#W9zn)m>kZ$0=~Xv z910N5dnh|IrWFD<(-7XddMb~Wi~;!JDa3pF_x%-#45C3UY>~awHSx~&Dvreege>KY z#+9*JL$4KUt}$Bc?rBL~DUv9B)2BA1Z<<q8@6Ml=>3Z)K+uE&Mjmix9#-V}U*&|)%Gj-kl0c=WC3x~28VEnk}e3f^j;saOX zoxjN)eWA+Z6u}3)j#5S1GfFz#vuQan+P=wuv>hQG&!)?)y5_|$_v85S6Z(c=OdD|Jj@$IL$ezT62G_^L zDTuO&ggHyFS>x=(L83${nd5*)=pa8L6=q} z5Oo+qRe_y38@sb2_V ze>rFxwv(TpC!qor?!7(m7t^;SnCD3OtSP-qs#P@i7|?1=D`L8>PAVo-@&)G)&}IT0^zUzL(=6QKU=%{b#Lu&v2c&(mcDNxvcf@~%`V@t4&hfeYvPLF zdp5_|HuiIR?uiUOFV!#oTjlzInklIe?sU2OWa8i?)w>;&BWZX^r@!Ei(rz=`&C~-Y z=O&cOastnAAG_sb-M)}m;p}e6|M0v?npx+EX~v7rGbNVBMvbh_fI>E^Jd11U!nC5B z3ncL&5OlV2<5efOS0TibckBKkx%%G9G1Y9v@%wI=KpOs+%{{-RxPgi%fptwu;n{Z%i&w2*lV7 zIT&6nB%gkdK_1IFnsuNVZM+l9)9j&Z<1?-h=s#!SLEt7-kfG9uYO64*!9b@!Z)I`W zs=-e-mfn??+p%csMsu@szBceE8$U47S;qPy-*a<}*O(-GBv?65Ah9g3W9jFiv1qOF z(y`2s2!|_yL00v)`ko#;VCVYT6@_4nLBob~*W0+62l(7yP9EC}7;b$7(xnR)*V2@V zH#FG!st>l-yHcIKBPyJIO!jOL{4bF^v_CH>-)|l%gmlZ7J-qG4u{5Q~wmTzCD`V*T zUD@K?5CJgXX6)7DF4ktf1?A{PJr+=_UC4BOepAw?TM_}H*w961S;?G(VJ=5_mI=6+K@NgPXI9QD=%Px3tuleb{J>oM--VrhU3bXw?!=uPk_W6DJ z^S|@emlvE92SR@wgtwextBgdexC)oPxe{OG@^JH&W9vGjE{@qECr8cV7Xs4bx_uG` zCzNHhB|eDA`;*+5J|&IGx1oYeQQ(kjXKbpPo>+dFF47CB=hQVcVRmz&31B5lUFzNE zJOuoP@IyJ4VW%x?A@#di(KAfYI(EN?Kel@1s zWO0Bq{`5pUQhZca^Ut4BGzf&)E%KiN4hV$qxfS)f@}yq` zn+AE9on*M${4Bt$Rw9k&0M=^oWv%^hNN;uu)KvNNPei%Qx3RS%3$W4uzkOhjY5++( zFAG%KYOA@iVh61LL+mA6;i;Yc-y0w@14U)vwHv{Mv-Xn^&Hp>nT)J5L46=3{k_UBr zlxuU?NrWpcX>?4>npFpRb~KSZ5x_olE(s=$cZtm%sy$Jw89pA~xqI+tjKcrAWxp$n z>%&1X1wF=@WLo#~@mlFi!-)AIGvhhoL?QnzJ`acjwKSi-y22P>|=N4Qt>5Q_Ivb$D)fj~NyrQCV9r};Oezmgf8%L@SQ zYjL~u6H)YC8T+IE1pI7_W4Uo@rg_OF?m|!lBwehw^4w183~c5ZnN4MB=$%yc-ZFa1 z9+gs*gukiK5uS335^emHA{swm;QNtTpo16BSZH+q3DU9J1OgdIk8DWO)^c)uIR0K+ z!e57?B|HuodXCb;eo3|V^RtOGV!K?9#o7;ox*z~rdURdMZzPu7l*!{Y4vg≻XSP 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 literal 0 HcmV?d00001 diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..0551f1205835f7d94f6c6d74e53678c6c4b74fd3 GIT binary patch literal 5402 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 a{d!HmUemAF^y@YKdQHDx)32|eCH@otc(#H7 literal 0 HcmV?d00001 diff --git a/public/information.json b/public/information.json new file mode 100644 index 0000000..25edfc5 --- /dev/null +++ b/public/information.json @@ -0,0 +1,14 @@ +{ + "discord": { + "development": "https://discord.com/oauth2/authorize?client_id=1342913183744004158&response_type=code&redirect_uri=http%3A%2F%2F192.168.1.77%3A8080%2Fredirect&scope=guilds+identify+guilds.members.read", + "production": "https://discord.com/oauth2/authorize?client_id=1094727789682380922&response_type=code&redirect_uri=https%3A%2F%2Fsubsonics.raphix.fr%2Fredirect&scope=guilds+identify+guilds.members.read" + }, + "backend": { + "development": "http://192.168.1.77:3000", + "production": "http://backend.subsonics.raphix.fr" + }, + "bot_invite": { + "development": "https://discord.com/api/oauth2/authorize?client_id=1342913183744004158&permissions=40546675842624&scope=bot%20applications.commands", + "production": "https://discord.com/api/oauth2/authorize?client_id=1094727789682380922&permissions=40546675842624&scope=bot%20applications.commands" + } +} \ No newline at end of file diff --git a/public/logo-white.svg b/public/logo-white.svg new file mode 100644 index 0000000..0782db5 --- /dev/null +++ b/public/logo-white.svg @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..246b130f3b973f99ee992027da7910366f98f6bf GIT binary patch literal 24142 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 + + + + + + + + diff --git a/public/logoblack.png b/public/logoblack.png new file mode 100644 index 0000000000000000000000000000000000000000..99c1abf276f825df5cafc78a66f8b9d8245da503 GIT binary patch literal 28088 zcmce8i9glZ|NprZHCg6PO_Hs-rgXCw#kE9}rEG~r$x;d>yIlLdjVW3%axE3na8qQd z?CTZTLrNt3lCFK<-TQmJHS_uY2fukdn(}_1<+VOv%Q#mYdg7c1LVOk2A6&J|^ULs1&{NCY)5OKjlYG(r3L=xqGFP1) zJ!~(!UXgKew|_jLx*MTA=%nVcGv0AyT|TryvgIUuaoD0uzBX3BtwpVNFW)blzLaOl z{`q{*>n&S#H7@teaSId+%p><-Ir2HpjLz*4(3pNr5JuIAbKKet?xyZkK8 zci->7eYBh}pk(dZ^ZUoH`SrjNi+S(30g`C+L`ty7%a!6K|FU@ZMjTMtkeBKSe<34v zPV6r!^#A3r=8*El)$KvYCY{y;*@korWP=w(h^nn`tSqgwb|QIgas3#Z?&#S{5_>igvVF*1W{Vx z4hMBJHg9)?Nr&IBY}Y#csgZ@EN#?w7+ttFYXy+Z^-a)f&I$aU5MicJkJEitl05Mhu zM{o?nL6{g?L(CZAVnp#0h7@_ZO6=)0e;pi^INSFVQXmXD3Zv2m*?ZO#^Jd+jM&}E2 zbZ`s~Y})%1SDTKo-Yx2zt^~KXwhDa~*o5xAgBJ<}9jlISWdmH1sw^9q9P(K;EtF-> zgOG-}aabcC%Sj?dICC^}A>oO!u1Wa6)IU1??uZMz!0dTA>*2fJZ7rsX{t+ zlR`XPidTEdIE}PjU?aCbEpB1tDM?okPOh%A;&-nEpyr=`7=f_~r-r7ctTF3rU>PNo ziz0y<6fn9&I(l$Z;|p4KlrEt;(Jxbzo2d^m4}H`!$V+uuYuqud1Ex5JxTpL`)n;2+F!e&*Qg?#>)vI7)wC{w z6q+&f7v%5=lfUiSe|`>|r%Sz@=+PlgMN}%Io~vl?b453lb@dOl zzYbgH%55%cNDZ^R#A-3TYZJ0Ly~Kdg5q8&6NXUul=D@PmLzD0rk4eF9@XK0vgt+LJ zNirqHlN)_<+NU0ZqZTNnE{BmD5Q$?pP!b)|QC*>c{ zElA(w@zMJ@>cX|J)s@K{KTVLWn>xoRlJ4MHxRz zs1`!8jaQ7cT@ z#fjcr;sYx+Fm9B!va~EPVDh1SWsh}irQ4)cNo4k0yj*RoV^NoLrsr1VFR{VNY#?W^ zV`<8H-OLlj_si`#4GZbFK$lVbpF9Xpn)oO*_ryq<6J^w0@`oL?q#MxBc>HofSI&gA z9!M(hd?LRsN=$rLurtBd<*;FHM@hSPz%<6p-U~5A1rb1&^|7#Hx^n$IcZMovK~d==f6z znN4_*Q!2}n$G3QKJKHEkv z-xm1)hVlR0vhj;JQlZ)Q??lK1oASs8wHK&lW_V4W1;!TS;ZZ|=+{erm+Wq}#?Cu8d z6{9kPAr@rruGQ!Xl-LDv0!jbvt|~zvED}O0-;QrW&*Ni|;X4BeX+gR=sM!h(f%>^- zIGGj=X5DPKVHeIw|M=a}`Bh1N*?63W3YY~t|GUmg6s_e62qJq!|2-fb6VI%#lPpi> z7SvGEg(N8y;!gqZ_XIGr3SlIjr%?xt5o@ zGU#oT*|z!w%(dYtHl#?})Ks;=a}#>ggpHB0S41N;anUyvHmeoWjMjRnDso57ec%>%hN>q5Vo2O3}pD{pDinMFT*TlriU*&NyMseD{>?AphToGb&`EMN-%R(~?G_8X_34wCc3 z)Z}6J3-c8nFi;Is0SHR{!_p8bDs6^SR}mRS!~Qn7!4oXuJ&ZpwyOsLOKd9WsHL~SbM6-pT zAN6LU25Q_)fF6tv!$zMTge24ECbsNO?ZWY!oZN=sa~gu!rteONR##7$027BWHn;tr zGI$VCH(%LUXfO2*p_)I1wgB#!xIyE)8B58aD3z$Ne}CR=qIDx2#HfH7N0x&->s8Cv zA3rFRt024j_n$w1&cLw4ZbNs2Eja(k?5Mm6tN%U9$I02I3agtJ;x@*hokn5#jv(kq z7zyV3DT}M?jxn$u2~(w4L1e&i?6HD6QBFv?vDm+IWfH}n?B+ySMwnQ)^C0=>ck}hI z1%3!arJAP>-}beP!oCJ@@Tjk17r;SO38#%V9sc`@aUzHbs)T80`#=Z{~V)0 z>KLXZ27cMdBWx8V!B$E(%qO)5rsbbJqj&&&goRZMJ*(&^xWJIGeIE6yR5#Qs%2@vU zI;XxH*Ua_b+ucTj$j+KgGci=AgKy7o!0%Li(&i(Iix~feho4Cb_~Vw zqV$N;B2OHe-%v~%AzD|_)qfw}86f;eCKlI;9PaH{{`7zA3|~eLcZ9FzU~K$5iw8+Z z5I$pS!obm}DDE{GWrK77*k|Pmg)8f@u{Y$oKlY_h{lfTM^NK9DYYcFlG53R*!6uYj zd-)JE#u?eHU@Wh@cbF*O9EdS?=R`Jq8-uW!(IC5q-+t_~Cdi0BM-)Ln)>yd$_$H_b z0{j~jpygelRN#L<#)CX%hz5qBhU@dI>Zs0#nSOlGPhv$eH(8dz*~p6-7UE5$A`E84mS#) zb~9z_K+GF5kS>lbM)kkM8WnUo+pzwZ{<&TI`vPHO4_PK|nf<9r;F3&wa! zuWD_#Mh*|_R6sfyh0jepbS0vkZT$9i!XA0>ai09?cBX=-b<)PdEBp0MBP)Fg#!9lMa;hZKk4Gtc?03`R-=R*6TV) z{xi!rV|dUMwyX)Z&k+D^il*{YPwr~j6mwbdVl|9ur(9)=40fLWuhX~wXTEk>6-}diRt-~44=7l%MNBmPU-`oI;6U3fGP=@?Neb$TrAxNwyL~t4F zU7^}Skca%(R|})veO=6^5p$UrD&AAQcP=7_DBKvC zcVipn@$8Qa^biZ$gpH7~e=+1z^Oz=0ZhU!F?<|1#(=_U zpBzZ#kN)pjs&TRkn54zbw{OqDl(#Wp0eu7A7uzFTtP6vjPE3DE(h1Li^!3LQ*SLb# z^X`X4wTN8TVQDZq&?8Kn&+LAQFTxDl-7tgADTP%la)*h-VnpD}8@K02qHp51!ess> z>{bnP>%Wx-tjg>c!D+~244=8+UR%enS$T)9(tcZ5jQv)i)YS(H${&kg`lYo?Pch5D z)C&ZB6H*f@vu3#)V}v#k58`#el7#jg$hyWu@=r4Pa`%#z{kpNB{S6y@HUAV7<&G!F zlrHt(!_r(~ATP`BYX1u5Yw}tn7Voj-ZLF?5i2Kz26J+VG@`Yq!irK#booZPy*P=&J zA}mBrfS6tlO&5XnHA`WOs6>sjrRVPG$rKLugKzy<$Ix(5DxR^B>#N*& zw_uRlDMMy4xD^c(y4Pi&0*|r{dpZ(2U;uu!zXIdqgrVD6CRgtGJs}|>F=-GnmM7VK z<-;nrLH|5h#mv{Fkrb1G5_zyaod%{~`ROEY2Y*m2sB^*6IV@MP`RaZK9NFNmWc0@w z6tQ!O95;D=@`BLy{wlh8tlfqxq}iUQpU#FXj>zYbiMxf z7EaJ$fRAJXCf3&v1j;#3wWE{M_~7*AQ9ZodCFaiDA=`@i57HnCqi8ThhTGRV3;Wv@ zl+nQ*nbJU$575+`PZtK7j3ksZu}s286cis;UstDF_U6pGz2+FP>uqj6i(dmg6d~c1 zM)%>Aw|!*+#=ZuSz1U%ul#&c-I2bH-HTAibHIVY97Z1zsPEQ|amrf_o%7OvrQiLRTbdYu zyovhd)fr^~4a@kU#^d6^#EljU5f*OgEXHza(vIm^jH0j@tgOIF2x^)FRNA}nibOyc z5w+>c?d(FV=D|uaf9}ZYXc-%cmNePoskime+u5ix7-u>NR)gPiyBE7D><%c!$|EdlYLc4+j5L*VJh{Kd z7zesRRNAN@HKPW~FfAFcjk8YY#4)FUfA|_}&HXzz@|}qNRT?C*#k$2nxwxz=3|@-7F-1 z%|~H8gX26Y%e|yAe`Pr2JI(o`pK)bMa7Cz)@2WcbdS#xQy7|+W)IgFj%YryO=O0W# zUT>j1Fqi9cUMw_~Sl82(igLdA^|oL1qSfj@_hbsQp(QyEsR)vaO*K*5i_OzoE3HsR zDv(qmslUr@rn*Q5N4Jv}qMa{3HooxcjI{M||2^5#=bk^I@j+}1tyWffEzhKJS{K`{ z0^9EAlsNYm;$w^YgwT)xxEh1z3Pm+72z~5KF7Hn|IhAh)2R^FMri$3`>`i%N@;cjm~Xg_=lf-a9-wXb7Ik@lb%;62~a$T`5z zSTSHB)`Uo>?PDr}r5z_ViiK*kDG-UiVJXVDGf?|`X_i_t`Mma#`{Uv~WWb=;P8>Bu zHY{kGtgcT;cvQ~otK;u#oA2gFS>dM^Zcw*}e#YR^j7r~B&w0{N3N}pwu&?1JbX(+!{YL;69|})@ z4y_QH+z%}K&u&2|yYpY*)zf?lwA-gD6s-4E=p4n`eaqiKlGzvRN$b}zO71S{fnFc= zVh_zT+f>9&r=MJoqCM6Y2Z?*~8b9g~B)-^5O1I8z*Rov1iMtugblt?cO zny4W3Hv%EAYzN!|y#QHvVmdkR02R$C5?dQ|BBND&+17U84P6D93&UOxPfzMU!ABT^ zhQmUSC{{Ne08qz{Z8YjZ9FLPjBml97jVs@Ti>eh`0ohoWlDhLG(Ui1LHZ)`igllw{ zBEqL=bp|l-oh|l~xmctwfG0x|*EkenT|=@yjm?X6Z-hjII?y~ipAnh5(wk6E#pI(MER(x3P91De0z7fGW$1%SSX*}8P|WTvXJR%eMPw@M7bs?^P4 zpaSFJ0)RbLFfTWEp{FV`{gk$5rsp;lFQ2<3T%)6-*88yz>iGkZ9bYJ^y*#>D(O1^$ zUg^REVPb!SICw+_SJ1>4QvXZvpt@UrF^fktVM7q6jrMp?8Aa~S+*^2KYB^ZrlrPJ zXKo2*=g#)4BRj08WT%mtH#1A>4~B4N!6e@X8nE8H=`@(?j?a^eF1xSJJPq;ugSit3 z*-=pV)SiutH3jN5j$xg%gT{e56>Q;}R<`F7w@ox4O=6;+?D~w0PGu;z;<9u_-xQmc z0g-k9QilDP<;)9o!bYT_j>yZB)Dcg4%o|)mkrm-UX4N39{k?;cr>yEDSPH_dud*pA z;PTB}dQhj>;H70{OQZ;xQD&65DC{oD2CWG516zp~LBP`y{iPt0oO+ekr3ft0{EU>a zR;WWWG=u}rEHBelV*iXw@cG{Sfo%b25|9EQ4vpi6q@iS!BYDy4zu;2<)Z18Y3Z3~* zjXrO{uY_f>#c|Nae4jql7F@wrRoY2X>jc-z#e9L&Hz-O#voc3>3S2W>u#`oZLtX*NZ_6FHE(Eq5Ey0EX>mH^w0O~tmP*!aVMq& z78^yH7?PN@Gw%vEGP`GcQmmESrz1`QR#W34{A=(U>q4(_$V{h_9OHa((Y?|_Cn@5w zFv`Z7FxQ$#ZzPD30<%21O%7g2jTVh4QQAt4hWvm*gY#n@t-F}p>bm>BeR@2&)Es2s zRc{TBLL6!EJi-0nU4VIC@=4R;!-NHhi;KpU))|@Mf&ah(pMDS|mvVa@9aqa_O{Z_W zE+q&EI6E1LS}1d%XIEZ8S=JEbocC2PzEQ{o^EZ=&50lrX#C5`W^n&3O4+G00n(_G& z&lX3M%0&>huCeb#RbOZx#@y8zKBz?KtZR!}5g*xRg+atxH@XGr*ih zX6~%tDfguW$rw}9;S})JSRK%B`%^f{Pa;;&f*RC_Gi)XQr786oIQmhB9uD%d0e`q1 zsTxSp^wi6f+e_+}6Ao)U0RD2r4SXs0DjcW<)m~n!0)8ZbpHMOAh@uh5+Ne%&h%YOB z!%B#lVODtS#Y27Lz@-mKI&Hv?Mm#7hi?<|ja*^9(7vuJtSuOj4KzY(Kb7{_eE2v=oDxB~HBCdFD=7x!6A-U@in2@y*Hf7O2qE zxPr=A!jZFY`zWP@OZu(nd@n)xb$A5U*n0qCti(YdOU=$=Pz_YQFj4Jhc9LUgZCNWTei?Jvk=0soF;#48j${+0J-bB{+D4 zWNOYWqk9*m%z1K_r2e>ngCwH+Y(msqZR1{krV`x(5zt(?Mbw+l_^?tHJ{VU`H$jOC z;FsnO;FpFHC7=5!d~~HVS{oM8n-;ChjWmcv`lm@UTMlk=fUKM!%nUvaZqpHn=EG6X z^#R%2(%{6!J&rdA^JMs8}JW>`*(w7&IS@5Ysts-9@D)N?}+i=_VgXsF`UGh|&bH;!j6 z&@Gfh z>%Hol@5XP&#`P|N>re~eR!N{->e_2?4U^@6QqTK7hm2NO9b_M?5>(z>McOxcC&Y@m z^V+LlN$XRtN^7gIZSy{GRXH=P`yXXH6Ag1Mi2X#!!LkCd7mD!0Q1n!8w+Oz+y71Pc zK_#+6hm!m%2PgW9r9K|N(X&;b+_x6sW6w%f+Y?$UgjqNndvLdGD_!FJYL|LQjr#e* zTZMy}gTnUw!4=|kJ+y(H*;ZveY7#oCfK~Ig5u)n5LuDZ2LQda6w%HwU(C!&F_qs*o zlY~z3_3Wd**P*I#Pyt>X(jhyyCAH}3l8w^B$5k%&G)09Ws!uOall}>+t=Er|$=a2* zppf?wZuah@SbeGw(Iu7}7;087v6@tF{k>Zl2$mY&5$?XkO=UuKXg(k*DY<@TXqM3O z0;Zbyc7LDxE{g?LRV=WkZ}fD;b&6anmc8suFG~*n% z?A1DuA({P!DYc<N=KwL_FmUKj=IGJJ%M4@Ehxc-6ip;Wbf}f z_TGJ^pwD#)JJgfQEapVihevjKHZ?}D2=_nFO213s=MNV(hCuM`p{xmNc)3xnP0vjE z9G*Pt+ut1!E-8XTvyBjz?OGs;x`oyH5&i)%JRiDmz<(49(aPQo~k3K zM+wz}AgXhB6`gn#pO^qy*c~bA!@rGn*8>;%2{Yl*&QHA(zA7IH)NJ%I2G9EOzIilV zRb@l*IYm;Z`WrU-Za|k7C+J>YKfP(h_^L5-x(V*oq zKrY@t(8FVG51`wANK7>b7AAYtpDVZe5c_E@(w`<~PDV{q=DvTZz?Ad>l;rRUYnoj+ zKM^Ms;bK&Ht7E8!d0Hs=NF$aAL8|Fsr2E3-%N1+ZYzUlY@7(=&@f<(0y8|gpb8KMQ z;@cC`m0-)VI>k-{X|n4=G0r$tS_gXC{lR)%{e2(hqQ7%7iA4l@Vx_@Mjf&ugOyY@U zQ!MK;Dyo+-W#O9EIT>RR1gYoeKl_qH53sK)t;zlwM^J~_0og@@%HKr#Vo3J`#qlCA*F#b*t@m zUdu{jBRL8{`2{*e(##XfomeUR^fw}(=?BulR9}Tav>^@-XCMYI!68X+Rm6<-UlnXZ zE$N*t76k&qZ2p%Kj>qtIVRinM`X*acChwvbOu5r;O)Ia(71|@R>=$x83mR} z#Qut;zVG1sXruAJblWO(^>qjw67%i8QR^Ki7VB~JENB-yW`I`NcetJwx`SW3>)0Fj zyAn>`@r4dgx2T=(dZp^u*bplDk@3U6`Sj1bLhI2I|K}Pk%r$xYONs% z@E{eESvn`nYUrcj==p?w%swn$w}Ym({iA5U+#2GU*&;&wyHSuYSWMOuhiF51xG5k9 zcku{1zE0i~l)mH;e*Rz~at+BP3XrG{I|FS@7d9`j3Y*gb=l3?g5aHpQ4C%wq7s2-( zQxcvSe%DWJ)2!5G?))h>*&g^mMFU*1t1xDQD&IiZ^CR}(2MIvO#lcp=*BP^FFDN49 zQdZVkK_-<+dSs)@v-I0-{G0sbd~+Tr$}7z{Gb&RjS&MUV>V%PW~-+{ zg!zfssw{sc;Zp3bqTFNSMmV5GCRjVRu#Tw~Ve7)&d3Tqyj7!(|2lr$Ounbu4F$A|* z&XgyfxjQd@&pHk;iBpih>u3JE7f-%9v z)%8Z49vn5180+?=GIEA5f$2w4Uac&Nmz*G-Y|TpDS3$Sct9aio+g4Ps~htetTfYXneZ=wArO5Epkn!;KUmH7dROO5k~70rRP^9C&NyV0k8o~ z`fGo8mfIbA#A`)9!w$9IktFo@hvdr~5)UQP%oe1fH}5Oied_D`zA`R9@&4X6mV~jUW@CiO%80tk$q!6Te;47e zsuX5JlTM|*N2R?t_P7(kvl zV4agkV`SG_9I*$*-cFC}e?zR6Fu6;qB~cD3PrvdX`$Q=;4P@Fem5_rxC$zRai@K~@ zPqKI6+hn@_I2d`rV8VN8DuRD(f%|c{Tvupg|k*SuRpdUtlXa(X#lUj3o5zw0m4H@{bM zJKq?)e@Z*BD#KX|F^a)s619ATy2VW@#bPEBpC>)8w`eOH{6|mbNfp222VUyH{7}eJ z@CjxKamFv~x`Sx1VZX3=pvL?z{4F<>ody zxSc(}gDFDlcY?lQz0-_Psgd#)^axsg4maWc^`P)Hq;Rw-6IFjt@435ISq+=vO1c*7 zx-QcIKV4P(nK(HU!?kgs481rkv_f0zcY-0L3a7dobtZp&vB8T(=L0W!)mr(V2P%E!)nB~V5MftC>FDTf1>DlB5Y3e@(QwWs3 zS}UzBzg|BTrnGm+TX*CP+l$q*-tApJ^N@TGE{MyZ5D4)Nv~HWBhj_P0&|(asFMCI+EqD_oH!g82)?)rXG-pXctxH*S7-go z=IFAN7ZcWlc&fIgFtJ3*C6qFGcDWNE3Yn{ddp1xZ-8=IRO6P=-kT~o1%D#juk&w8A z2<6t{CTr!{MVS-okYxlRb1A?Y!DcAl%``h-dUDJ6)mvCZ4o8J0o?RvMZ!M5#%`NNM zm-dS@OIe)~C=}S(@p*LKIYRu&`NE)c5mxSyWzV<#s&I)!5PhWFDsl9+XPH@m_vE_E zdF3q|7g_i3r)Qrro!03aQODzn8Q;&uvn`c_s%{u3C!|(IhFfNNes(+>H$e_+Iffdb znXhrI>)7H8QvX?KAmT~u%pc9Opi9PKYt+=pqc_T1&Sfs2P#*Quv>Kb*zmgW1voVdnosJ*B!~^x&ki;imgoH^fIiyFXtDL9SZ34=4O(u_B_f`Bd zy$2@T+!j4a32r&KaUnJFVtsvlPnhr%=8*0Kd-j(wiy>8?$qj)YXLhGVhv5>jyDGfU zz9iS;!+~U2k_AcUDJIW(39ZWGD)B>2aTvksQH|XuAn-4clRKQyy?QEjMz253y0g!* zWmZq1`C8AfB=rHw)>r&~Qi$q^LCOjEa^t*a;b|tHU7dhV(g#O99XW2}&au((&Bf~R zU9$0gG)bQ=pYul{~jf8n&g&#|jY%qJ?=LV*>(G@yn55b=U<^D%Y8T z5iLCPFAx;1J}=B^{TOr0x0W3DN=MA*3-CHtu~Iy}=q;Sh1lJdzkqvWN~U2 z3jZwdn(RE8phRK5td8Ql$!_Z|2|gFtdZUz`QIe*-^{?cjNV~Z`2cFBkv;F%mOZ@Uz#YW4Ovnh}s!6lStwZ+c$e?pcXb%^N4FG@*E2R!%M z6kz=1QH3`<)FUR~)c7xG1X>jOH4|M$Wy<1#&%C%lO6aXQk8`a&AG;GW>Ks=zc0)|6 zXPMD)7+r_&vKWuXnz{P%+UE>c~+CBe62O84jzb3CA)g3;1vbstV13QU6C ziSkw!MYxHaB-#wSTd8=C5nN|NZVkiPU{_`>t}jl^TK{~y^cAeiRI9JApUf1&S%16g zSW&Rpqrje%_ymWAud$I1O;6OUAD#|`ksoV^DEhB58^>5<&-#Yguf4XQNGK87|44G4 zdmW;biLI5fT)y_$QHK%G9obHW7DYis)BcW% zVE&$SDx4Fi?#u)n+_g5uUH?(^Y|&6D`|Bd_J5tQ#14Hp916%G3x67m9+IG(1^KS|q@1oKNYv0MF~<^{PI4QzjfueFhy~ zHzr<@`(7vMNS15u{`+B42R;kuak|c>Q;E!U5j$Yk*aoukfF&Pidn`5%Yu^dTQHi}| zsl+-pP#4a7JGf_o<-Xk5u@_yBgK)B4bfr1?i3!2#d{NMgg}$MoA^uNc)c18Y5~1A7 z0+X^a6sPf>=tvb*CR@qz`J>k0$*}Xg*Tql0IIc$-_fsZsFLxhTdGhVkc8ws|RcJ1e zTg~Cr<pOHb8g$XViEfHV*pMw40@?8E1y=TYl@7tzugk zb*qx%>*D!m1@)9<(8(wOL_5{8$Sc6$^703;*u4AR9^+iGi3Ru9x*p$-VV!}+K34;2 zxS(Tex|(CpyUIOal=; zfVy!JNAB@j?+;-4CCYVr0WMqR-mU${>w5e4z)TwcAdtp9OXxWR4175SrZ>IFe(C>M zT@3e(hC{tPW8EdI5%{6IKv-GEJ;!T`j0MT2qb}avlp`ESAEE<8u-2NF;^odhTJ-w$ z466fgq*Kse+_y~eetv;uU9^cRJM`F`dZVMjewel2?dmw+d86*=hv$ko4)|&dc29F_ z!=)^MKl7Ah0T(;86cpM{@J+W0hYW6&X8LZVCk}u4|8Pp_W23yE9ydOWnHYrWX&FEhmcW z0I^V*W#Dqna5s>;n&r1Rp`%@80`u>ml9m!KD)8E*pDrb-lr1eyU|IYNo}ieHwigucnHM|b>&0zhg?x3& zDbI`BpthhOVwiogqApKVXkw{k|2qpav=3OD($Xc`N7aaBb{%t^u_br94U6PRCb~5# zE98#}T+=}faD>Yc_~KLEXs<=fd=7gZsrvQvbhAZ=G3j&>t=J)Ozk<`@iz zy|771UHd8am%qiUcZLPL_S)3&;FsyFa@VCF_F@6eL>$^f@S5mc&e}iysY66z|A6cv zc}IK3%i0==fc4Ii`fFs=@C)QWnmoZnxA1)u2G=!8Q@n5usSVyAo)*;0rgh=uBzcg= zi${ySwlJi?GD{RkwBdwx7?gQzui+DNcS~rF zyiL{kZl2E>J}w3QaiGw2Fuf8p!V|Nio7z`8UF)TNPL1=#`p{KJ#`jDo!i}*-5r7` z9gMeRa7O(|8m)hxV$>8?p1;ME)>^2FOpmn+XX39wKl%1-g?-UlxWVoOzlj1d zaLURH_lw$uv5>%rbGV5^-{X%}@_%wpblZD0U^G4N$@6%erY13bH;*&r^f(W7CopJL zF!gp@8BttV;L4k$#wut@FE=xMr_cHOIMnCw*oNJYtTfd2M1SU@Cky`!@d6{gBM`u4AiJd!1i& zp|t?Pp`Nm`3#D(oxEa|HTGu}mtc6P-Is^yPD|elDu|dEa&r7DVf}`H(Repr%v%LzE zu#z0FO|Htz+ZCVOU~1(^qGxcF_WhP^bz_+VL3rC0N&h4AZ9rJc;rr9QJ#AqqRvTm_ z@S0}d=4_*#JiwM)pZWR&RDPmfh3IeB4d&yeT@?u%$P2TBxoF=rR^H4wLA*e*`?#PV z#5>Ru(tcVcNbul(iiHZ!JbY$qmV3A?(Q7k90Te5rsi~Ue#rY=ba<^3x&OAYC`oUsU zinUP@r_Fhg?8Aj#ZuO`%zC0C)QOoe!qya5An|)DIGHlyl z;t;heN~Q#lzC&p)7pXf)2F-9qy*{IYYkxUo3H{yx*v+nSBNP3{-vq>Vsumzm>U*8u zH3{?yE~43eP)`$KG$@}}LG8uAEN2Tf`mQK~zS^NJWwXH3GRxN2v=hw)3hx+Kbv1ns z`|;)(&A9RIeV4SZ@|U|i&lREe-Fy32oewl&X)*c=-$69cx{8`8mo(!bzk4{e2{nW* z#|p8}KoA^<vkR9cf+=WMcs0o7pF?n8UCxh{S3Whh zh*1ogy^R;m`_lL(JBw#J$Y$r2!BcI{Kc3rN9^9KF6zc?ciY7XE8Jc4h_SzM8K5UsR z2qu?h-}EF?3JRhsogfFEO7CZN6Qx%K#JIXIJeY7w8NUI0;TF|J0k6a7RylJ@}kiUDRo-kyTq8 zyJb#3hwdk8ex--ROP|7q8M{CS0bK?jiUEGuJdnYAq44UMPtGyh;Hceh0Vtb_36a_Q~?1=Ittl(N-%<|&gnDNZgwcJNQr|Mje%6FUuN>tY!E4fZ$%HhX-iZW#dE0tBG|jI@iwCTg?2hsdks zPoNWBz>;&r@#OB!5z|v0B6FI)o6yR$!QOK@LMRtLOL6$z+1WWD{?Dh0Ldr56*DQiDM~Cj5612_9Dn!%WX4;l>5#ZQiW0Q?P?=kM-|w0tI-Fb$ zYJ|pkhba%7Bw;k0488bKfBlLq%7MD8U{?HhH!zigQE#ngqoBH~0@!eUGq9CB?d^X$ zAN}n#xCtWUP!1=`{S)YG)ym=g9@7uc%zZ{SB9Ixn4p+V$J|_BI9^bUGSMOX}7drE1 zcA_Bi)JqXu);ZwV;M@gNvoKP4dVEvjlVj2KK;Xt4Ln2+X68tXFTKA6II9Fn--oPw- z4d;NZ*SI{Kz|Ptzssc=SP_qkvfm`)Q)j%$V_dt9~!>>KmSL1~t8D5-5UmT`r9b3_3 zVE2(p;aXJ(@7yUOfZb%20_Y9m$NO4iuq;lsPX(MP#AQ8grc3k~C-zO?BNGCMrwBW) zmZN-jo%jmCe;tx^2P0NR$L6^QxZXK!I*$xYmw&USuURZkIP0iW{`+Ox4H;=|0Q8%2D$;oz8Bd`9chiClS?ZNGm&^VzgvgeeFb~GpQ{c? zI@+V_e*txMHmY*SNQ)VVl;ZE3D|MAEh7|kWfO+ivBUbA=^g&bntK875a`>Q&;PAHQB0J4ZcE+^%&sFXhdyIGKt|P?e zKY)?&g+!uYT3U69Ufd%dlyXpJ!0*WHB1KPBwUpvNbysSL{Uvo@Y(BIBe++#Hv9FbO z=m^N-T>bXPEUiNx?2a6D%R^Shn@?tmh<_eE)B}BWEA&#&o@PN z)af|6#E>KmEcdl&J?kM|VNGcP@-4e@8t!O^8Q{yEz$GLl=i#G7Uxq zdK8aNjTq0Qo?KtaIw_##^I|gPrri?fHir|-sbJh@L~%~W3#a92wrn2Rv#ZIja&+JN z4I55T@8g|Iyui|DxOJd#u`R<=MZCWgu&V9(4iG{|bP29E`_OFMbl9*~rHTYAr%47wGb0kUkQ*iJ>NTe?uDp#Ok{3L!GHn&bja^mat#fQb4-d_wwkPG7x$>r?k3e*jbLqfUeUOgtJnKfjY|GJ5IE zK>g9*GOg-DBpv;omJWFc-s6YtCJXvaiCYClafunP&%gGn@J#jK*hA?5ki_W{9^&X2 z5U})TdFMzQL`-w|D75*n`=G{HZTcA!Zff&@Tk#%(;iv1=nx_k4C=#BWC_@*+UfF+qN7K@-=5zp0t@gz1?6gNG9#&fAP!d8VHBJcGtuNmNmDA2HOX)wDsuLdHze--K6RjT7l- z#=R}VhlPcgs1aDXUfd;E%wGUSIs^h4Y$gKI42Vwnw$$Hpnx$dl%~~ zgS)&Nl$iZ&adB_G^(Vtb_0N|E2^uyd%g=Vl`X2QzpQ|JK^Y#kxa6#Vj_3~IO#9LRm z0>Sts6sj!&^&OF(*2Q@Eiu;NQMmuggi1wEApW8mz46 z0e84grS3Q%isb_5!v`hhZ2O+q=c?4I)8$x8EZZbUAjluJgnUrZl>_2a_{JtR)ht?cXIZ76NsRglIN z>kE7E(v@%;rXC&%hmpd8dpK&XiX;~Z8Fj)h9cjMZxD}18%%xNy*PjHt=Gdj4SD?H3 zW>T|3=m+zUjC7T7$i$(ehXZ~|4Sd2R=avxa3P+Lim|+$|5bv6!G^g(oS_)vQaxezd z)#Nipq2|n2$F_baj?O5~i+PfAjNM;(amqJMQxdmgpc5p#v{h7}9=CGwva{1fBT%dg z)L_}|Uk%0S01}GxnMG+yH&xK3@r;hm|Mzy<`#MU@p9I={a5`iMR9rBVdp_rA47`dBK9rHdi=(8Zq)A4He`sz$MiSULt+$1CWc3q63L4kg^r zkP7X4A)NLv5qtAK^P$o++He;>c{|cKbmKvULKn3?*G~z{#BhGPq40Q2afLc$ieP zqz`UKd=p{cMGCzMTQ%&dbH~CBkmp2%%a*YRzO>4ihkJ5Rw;l*u`Ulz6iJ8Tbf1C1ph_js)W0JeI59XIgbw2lvg_{HlL!?jEgSr z=KTkbroI;*O6_7aocFe~Qp@-^l)#rx{H@L#sm?V+)J%Tp=J#LxBe@UOIN{xry||~! zpkqMWB7tH;H9j-BC?u+x{ac zjHAdyMwA*STto&bf>NZalq(3RD4`RtbP(x91H^F@7)nN^+Hl}nP=P2_f)JG=5ClPr z)EJ~FBvge+$=e4VXV!ZEJ(tUcIXPvQv-dgsx6cO0fCtW$5&f|V;b`HFY>+Fz?sWR;Cliw|7ZW+he1&NaNUHDNuXOX@A|`qKz{>ukm>@7eKZ}}*&TYR;Rt3AXOG4PxIk7V92f-$)cr6yX73u-<==&+^2 zOpa>r6t-@glkaZry^vqHdT8}IFH`vdF5$}~C&zYeENv53ZR7_-#GaxF+`U>_ULNUZ zLcSj^Ja^m&5c8lUIv9nYGFov~aDHlTn%as54r&NlV>Ay9Hn;&y3q1MmLU$9O_<6dr0`+=Gz&)qmNWoJQl@HddHXs{YiIj(EGh{^$tt1+P7H}n|JftkDy(1u3MKc`=w1QF zMGtL$CzvaA$7lXGDey`i(Khr8VoPd%LFob% z5vA8rPj{-rF`jW~FIXIN`Jp-(T+j-xnR4|8IL1YHZL%ehg`y3fcIlDPfT@Muz69kM ze|Z&zqiCip7*?qj^1LB%xcZe&@0hu|czcNHzbTU%mBMsR)<$bEl2A-*e1TIhYMv1B zhD&ki+%qFVdGQDyf4{OPLa362wrQ4~25gv`{S#sj zo-XJK>b{BLRd?+=#$tv}UxY)f6T}CY#Z2eq9j@zs5O1$jpj-m0=S83ga7EGe9%44? zvlgj?aBMQR9atPA&))t1vBZ`w{IjW3GKz;xfM?Go8zN7_$@w5Sh2_??!TcLo(Y-W1 zj61vw>pWQ!s#gHETOE1iEh8f%kat`U@W%0y-FAmtoaRS5)}w$JNMY{zyBBejNjp?S ze^u!$30}t<)fHeY|8m6D7Iqr4;<4^ao}4w<9ikce^OYeU-w`6e==0MEXICfi&vG_q zDkuo4+yJC(_m1fvuaS-+h#Ou3F`QAbs5@PSKoZw7Ja?u76z2*s>5RwddApSz z7Ug~GO06vgDSB{u+BAG)aki&A4?vcKuxet!6NO17E)HW&eporc!BGyPSbI^$-ZNn) z*YCm8(l-lC#d@!&`QO5V1G+Iw3;Ru?4#0ZWDp*)jF-D#T&nkm25Dm(7#z$wX%Vseb z&PH#Su1*CC7h@f>PO6x>3JdB*Y-oG_{LwY}8Clp-_wtvXot(W|+q3y=lO2(Lzel9C zf~^8kGwJdr(J^#oa#A+88`!K6aKB%`|5|$8kEQz(X6}L_jAaWNp9URqRnAg_811PL zVT>b{!A%3ZRtk~iv69=jbKzY;bwR%XXGQ{(O5>e_vKeQ+Kz&dc_Kb=q{UzLsj9XGQ zB2C@*ZpO_)jkd9;fMFXY?SOC;MPg6*x^3iVcd04Ffn$0&5*@6>Koc`aB0_*+28QsK zX%^Atau?MX;xXC?&3d@Apt8yYoTV@(K3}FtFLJeo(6|sZkym~)Hd%25rdS27+m_sr zlwtI9q2Up_AZleiO;1l*i81K|yGKcQ5?#_eO$Vj%g&oqTtl33qQtRMS>WV{g3|TBX zV|a7S7ty&afRGb+s;O1)vgkWT7wmccMu9SCpHMDOpPmFycn{(?Q>Ge4i3Lmlfk{mh z_JQohF@tmm*D9kzIvo%#D+C1=6&KHyzAUc_7p4t6N-1|cX6qK}@$eA+djnQe=fbmF zXM+}eer8JXuW|D>4R5J79E^Dkolik$Tba!Npn(}brLq%+R16x(gs(;O7&_QS083?IOOiaY5Tn){EQ|rf$x;|}?c{I+WU3E?{CZ$bTyxKqipy#Mtl8d&=jB{%EP**QQ~&;) zlOObzhQ50r$~f@&Igu*c7{yKTEoRzP;7=L5!96`}k8E9r(_|-?;&XWb$4HelS(#Wh z(m)Xav@~mTQT(z=!a@na<5m_

SkJre^p6+E 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 + + + + + + + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..b5b6726 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,14 @@ + + \ No newline at end of file diff --git a/src/assets/Global.scss b/src/assets/Global.scss new file mode 100644 index 0000000..11c104c --- /dev/null +++ b/src/assets/Global.scss @@ -0,0 +1,84 @@ +@font-face { + font-family: 'Gunship'; + src: url("/gunship.ttf"); +} + +[data-theme='dark'] { + --main: #CD034F; + --main-hover: #A0023F; + --main-active: #7A002F; + + --primary: #111210; + --secondary: #2A2B28; + --tertiary: #404040; + --text: #FFFFFF; + --text-secondary: #C5c3c3; + --text-error: #ff2b2b; + + color: var(--text); +} + +[data-theme='light'] { + --main: #CD034F; + --main-hover: #A0023F; + --main-active: #7A002F; + + --primary: #FFFFFF; + --secondary: #EAEAEA; + --tertiary: #C5c3c3; + --text: #111210; + --text-secondary: #404040; + --text-error: #CD034F; + + color: var(--text); +} + +html, body { + margin: 0 !important; + font-family: 'Inter', sans-serif; + min-height: 100vh; + min-width: 100vw; + margin: 0; + padding: 0; + height: 100%; + overflow-x: hidden; + background-color: var(--primary); + +} + +.no-decoration { + text-decoration: none !important; +} + +.underline { + text-decoration: underline !important; +} + +h1 { + font-family: 'Gunship'; + font-size: 30px; + color: var(--text-color); +} + +a { + color: var(--text-secondary) +} + +/*Scrollbar */ +::-webkit-scrollbar { + width: 5px; + margin-right: 20px; + } +::-webkit-scrollbar-track { + border-radius: 12px; + } +::-webkit-scrollbar-thumb { + background: #ffffff56; + border-radius: 5px; + transition: 0.2s; + } + +::-webkit-scrollbar-thumb:hover { + background: #ffffffa8; + } + diff --git a/src/components/Actions/ReturnHomeButton.vue b/src/components/Actions/ReturnHomeButton.vue new file mode 100644 index 0000000..f8ed831 --- /dev/null +++ b/src/components/Actions/ReturnHomeButton.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/Features/ServerListItem.vue b/src/components/Features/ServerListItem.vue new file mode 100644 index 0000000..4b95f6d --- /dev/null +++ b/src/components/Features/ServerListItem.vue @@ -0,0 +1,84 @@ + + + \ No newline at end of file diff --git a/src/components/Features/UserAction.vue b/src/components/Features/UserAction.vue new file mode 100644 index 0000000..9aad1f6 --- /dev/null +++ b/src/components/Features/UserAction.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/src/components/Layout/DefaultSplash.vue b/src/components/Layout/DefaultSplash.vue new file mode 100644 index 0000000..7e10646 --- /dev/null +++ b/src/components/Layout/DefaultSplash.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/Layout/Splash.vue b/src/components/Layout/Splash.vue new file mode 100644 index 0000000..d74fd21 --- /dev/null +++ b/src/components/Layout/Splash.vue @@ -0,0 +1,44 @@ + + + \ No newline at end of file diff --git a/src/components/UI/Avatar.vue b/src/components/UI/Avatar.vue new file mode 100644 index 0000000..88ea9ab --- /dev/null +++ b/src/components/UI/Avatar.vue @@ -0,0 +1,23 @@ + + + \ No newline at end of file diff --git a/src/components/UI/Box.vue b/src/components/UI/Box.vue new file mode 100644 index 0000000..545a467 --- /dev/null +++ b/src/components/UI/Box.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/components/UI/Button.vue b/src/components/UI/Button.vue new file mode 100644 index 0000000..755626f --- /dev/null +++ b/src/components/UI/Button.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/src/components/UI/Error.vue b/src/components/UI/Error.vue new file mode 100644 index 0000000..18c1cdf --- /dev/null +++ b/src/components/UI/Error.vue @@ -0,0 +1,30 @@ + + \ No newline at end of file diff --git a/src/components/UI/IconAction.vue b/src/components/UI/IconAction.vue new file mode 100644 index 0000000..0916da2 --- /dev/null +++ b/src/components/UI/IconAction.vue @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/src/components/UI/Info.vue b/src/components/UI/Info.vue new file mode 100644 index 0000000..dca5b3e --- /dev/null +++ b/src/components/UI/Info.vue @@ -0,0 +1,30 @@ + + \ No newline at end of file diff --git a/src/components/UI/ServerAvatar.vue b/src/components/UI/ServerAvatar.vue new file mode 100644 index 0000000..c02d88d --- /dev/null +++ b/src/components/UI/ServerAvatar.vue @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/src/components/UI/User.vue b/src/components/UI/User.vue new file mode 100644 index 0000000..212f06c --- /dev/null +++ b/src/components/UI/User.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..b1d189e --- /dev/null +++ b/src/main.js @@ -0,0 +1,40 @@ +/** + * [Subsonics Chopin - Frontend] - Raphix - 07/2025 + * File: main.js + * Description: Main entry point for the frontend application + */ + +import { createApp } from 'vue' +import { createHead } from '@unhead/vue/client' +import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' +import { library } from '@fortawesome/fontawesome-svg-core' +import { fas } from '@fortawesome/free-solid-svg-icons' +import { fab } from '@fortawesome/free-brands-svg-icons' +import { far } from '@fortawesome/free-regular-svg-icons' + +import "@/assets/Global.scss" + +import App from './App.vue' +import router from './routes' +import { createPinia } from 'pinia' + +let app = createApp(App) +let head = createHead({ + init: [{ + title: 'Subsonics', + meta: [ + { name: 'description', content: 'Interface de gestion du Bot Discord Subsonics' }, + { name: 'viewport', content: 'width=device-width, initial-scale=1' }, + { name: "charset", content: "utf-8" }, + ] + }] +}) +let pinia = createPinia() + +app.component('Icon', FontAwesomeIcon) +library.add(fas, fab, far) + +app.use(pinia) +app.use(head) +app.use(router) +app.mount('#app') \ No newline at end of file diff --git a/src/routes.js b/src/routes.js new file mode 100644 index 0000000..109ffe3 --- /dev/null +++ b/src/routes.js @@ -0,0 +1,100 @@ +import { createRouter, createWebHistory } from 'vue-router' +import PageError from './views/PageError.vue' +import Access from './utils/Access.vue' +import Login from './views/Login.vue' +import Privacy from './views/Privacy.vue' +import Terms from './views/Terms.vue' +import Redirect from './utils/Redirect.vue' +import Servers from './views/Servers.vue' +import { socket } from "@/socket" +import { useLoginStore } from './stores/loginStore' +import { useGlobalStore } from './stores/globalStore' +import Interface from './views/Interface.vue' + +const router = createRouter({ + history: createWebHistory(), + routes: [ + {path: "/", component: Access, alias: "/home"}, + {path: "/login", component: Login}, + {path: "/privacy", component: Privacy}, + {path: "/terms", component: Terms}, + {path: "/redirect", component: Redirect}, + {path: "/servers", component: Servers}, + {path: "/servers/:guildId", component: Interface, props: true}, + {path: "/:pathMatch(.*)*", component: PageError, props: {message: "404 - Page inexistante"}}, + ] +}) + +router.beforeEach((to, from, next) => { + socket.removeAllListeners() + console.log("Removing all socket listeners before navigation") + applyListeners() + console.log(`Navigation de ${from.path} vers ${to.path}`) + const loginStore = useLoginStore() + const globalStore = useGlobalStore() + console.log(from.matched) + if(from.matched.length == 0) { + globalStore.setLastRoute(null) + } else { + globalStore.setLastRoute(from.path) + } + + + + if (to.path === "/") { + if (loginStore.token) { + next() + } else { + next("/login") + } + return + } + + if (to.path === "/servers") { + if (loginStore.token) { + next() + } else { + next("/login") + } + return + } + + if (to.path === "/login" && localStorage.getItem("token")) { + next("/") + return + } + + if (to.path === "/redirect" && localStorage.getItem("token")) { + next("/") + return + } + + if (to.path === "/home") { + next("/") + return + } + + next() +}) + +function applyListeners() { + +socket.on("connect", () => { + console.log(`Connexion au serveur Subsonics réussi - ID : ${socket.id}`); +}); + +socket.on("disconnect", () => { + console.log("Déconnecté du serveur Subsonics"); +}); + +socket.on("connect_error", (error) => { + console.error("Erreur de connexion au serveur Subsonics :", error); +}); + +socket.on("error", (error) => { + console.error("Erreur du serveur Subsonics :", error); +}); + +} + +export default router \ No newline at end of file diff --git a/src/socket.js b/src/socket.js new file mode 100644 index 0000000..cba32f6 --- /dev/null +++ b/src/socket.js @@ -0,0 +1,22 @@ +import { io } from "socket.io-client"; + +var URL = null +await fetch("/information.json").then(response => response.json()) +.then(data => { + if (import.meta.env.DEV) { + URL = data.backend.development; + } else { + URL = data.backend.production; + } +}).catch(error => { + console.error("Erreur lors de la récupération de l'URL du backend :", error); +}); + +export const socket = io(URL, { + autoConnect: false, + reconnectionAttempts: 0, + auth: { + token: localStorage.getItem("token") || null, + sessionId: localStorage.getItem("session") || null + }, +}); diff --git a/src/stores/globalStore.js b/src/stores/globalStore.js new file mode 100644 index 0000000..831fecb --- /dev/null +++ b/src/stores/globalStore.js @@ -0,0 +1,44 @@ +import { defineStore } from "pinia"; +import { ref, watch } from 'vue'; + +export const useGlobalStore = defineStore('global', () => { + const isLoading = ref(true); + const lastRoute = ref(null); + const lastGuild = ref(localStorage.getItem("lastGuild") || null); + const theme = ref(localStorage.getItem("theme") || "dark"); + document.documentElement.setAttribute("data-theme", theme.value); + + function setLoading(loading) { + console.log("Setting loading state to", loading); + isLoading.value = loading; + } + + function setLastRoute(route) { + console.log("Setting last route to", route); + lastRoute.value = route; + } + + function setLastGuild(guild) { + console.log("Setting last guild to", guild); + lastGuild.value = guild; + localStorage.setItem("lastGuild", guild || null); + } + + function toogleTheme() { + theme.value = theme.value === "dark" ? "light" : "dark"; + localStorage.setItem("theme", theme.value); + document.documentElement.setAttribute("data-theme", theme.value); + console.log("Theme toggled to", theme.value); + } + + return { + isLoading, + setLoading, + lastRoute, + setLastRoute, + theme, + toogleTheme, + lastGuild, + setLastGuild + }; +}) \ No newline at end of file diff --git a/src/stores/loginStore.js b/src/stores/loginStore.js new file mode 100644 index 0000000..c78c941 --- /dev/null +++ b/src/stores/loginStore.js @@ -0,0 +1,58 @@ +import { defineStore } from "pinia"; +import { ref, watch } from "vue"; + +export const useLoginStore = defineStore('login',() =>{ + const session = ref(localStorage.getItem("session")); + const token = ref(localStorage.getItem("token")); + + watch(session, (newValue) => { + if (newValue) { + localStorage.setItem('session', newValue) + } else { + localStorage.removeItem('session') + } + }) + + watch(token, (newValue) => { + if (newValue) { + localStorage.setItem('token', newValue) + } else { + localStorage.removeItem('token') + } + }) + + function setSession(newSession) { + console.log("Setting new session"); + session.value = newSession; + localStorage.setItem("session", newSession); + } + + function clearSession() { + console.log("Clearing session"); + session.value = null; + localStorage.removeItem("session"); + } + + function setToken(newToken) { + console.log("Setting new token"); + token.value = newToken; + localStorage.setItem("token", newToken); + + } + function clear() { + localStorage.removeItem("session"); + localStorage.removeItem("token"); + session.value = null; + token.value = null; + } + + return { + session, + token, + setSession, + setToken, + clear, + clearSession + } + +}) \ No newline at end of file diff --git a/src/stores/userStore.js b/src/stores/userStore.js new file mode 100644 index 0000000..cbe2f78 --- /dev/null +++ b/src/stores/userStore.js @@ -0,0 +1,30 @@ +import { defineStore } from 'pinia'; +import { ref, watch } from 'vue'; + +export const useUserStore = defineStore('user', () => { + const userInfo = ref(null); + + watch(userInfo, (newValue) => { + if (newValue) { + localStorage.setItem('userInfo', JSON.stringify(newValue)); + } else { + localStorage.removeItem('userInfo'); + } + }); + + function setUserInfo(newUserInfo) { + console.log("Setting new user info"); + userInfo.value = newUserInfo; + } + + function clearUserInfo() { + console.log("Clearing user info"); + userInfo.value = null; + } + + return { + userInfo, + setUserInfo, + clearUserInfo, + }; +}) diff --git a/src/utils/Access.vue b/src/utils/Access.vue new file mode 100644 index 0000000..de5bdaf --- /dev/null +++ b/src/utils/Access.vue @@ -0,0 +1,24 @@ + + \ No newline at end of file diff --git a/src/utils/IORequest.js b/src/utils/IORequest.js new file mode 100644 index 0000000..6036e51 --- /dev/null +++ b/src/utils/IORequest.js @@ -0,0 +1,22 @@ +import { socket } from '@/socket'; + +export function IORequest(event, callback, data) { + console.log(`IORequest: Emitting event ${event} with data:`, data); + socket.emit(event, data); + if (callback && typeof callback === 'function') { + socket.once(event, (response) => { + console.log(`IORequest: Received response for event ${event}:`, response); + callback(response); + }); + } +} + +export function IOListener(event, callback) { + console.log(`IOListener: Listen for event ${event}`); + socket.on(event, (data) => { + if (callback && typeof callback === 'function') { + console.log(`IOListener: Received data for event ${event}:`, data); + callback(data); + } + }); +} \ No newline at end of file diff --git a/src/utils/Loader.vue b/src/utils/Loader.vue new file mode 100644 index 0000000..362705e --- /dev/null +++ b/src/utils/Loader.vue @@ -0,0 +1,40 @@ + + + \ No newline at end of file diff --git a/src/utils/Redirect.vue b/src/utils/Redirect.vue new file mode 100644 index 0000000..2b189b7 --- /dev/null +++ b/src/utils/Redirect.vue @@ -0,0 +1,85 @@ + + + \ No newline at end of file diff --git a/src/utils/SocketEnvironment.vue b/src/utils/SocketEnvironment.vue new file mode 100644 index 0000000..98c7f65 --- /dev/null +++ b/src/utils/SocketEnvironment.vue @@ -0,0 +1,88 @@ + +r \ No newline at end of file diff --git a/src/utils/UserRequest.js b/src/utils/UserRequest.js new file mode 100644 index 0000000..25e7dac --- /dev/null +++ b/src/utils/UserRequest.js @@ -0,0 +1,11 @@ +import { useLoginStore } from "@/stores/loginStore"; +import { IORequest } from "@/utils/IORequest"; + +export function signOut(router) { + const loginStore = useLoginStore(); + + IORequest("/USER/SIGNOUT", () => { + loginStore.setToken(null); + router.push("/login?message=" + encodeURIComponent("Vous avez été déconnecté")); + }) +} \ No newline at end of file diff --git a/src/views/Interface.vue b/src/views/Interface.vue new file mode 100644 index 0000000..f9187bf --- /dev/null +++ b/src/views/Interface.vue @@ -0,0 +1,95 @@ + + + \ No newline at end of file diff --git a/src/views/Login.vue b/src/views/Login.vue new file mode 100644 index 0000000..3868bf2 --- /dev/null +++ b/src/views/Login.vue @@ -0,0 +1,193 @@ + + + + diff --git a/src/views/PageError.vue b/src/views/PageError.vue new file mode 100644 index 0000000..7c3088d --- /dev/null +++ b/src/views/PageError.vue @@ -0,0 +1,45 @@ + + + \ No newline at end of file diff --git a/src/views/Privacy.vue b/src/views/Privacy.vue new file mode 100644 index 0000000..3c68916 --- /dev/null +++ b/src/views/Privacy.vue @@ -0,0 +1,119 @@ + + + + \ No newline at end of file diff --git a/src/views/Servers.vue b/src/views/Servers.vue new file mode 100644 index 0000000..3b5891c --- /dev/null +++ b/src/views/Servers.vue @@ -0,0 +1,117 @@ + + + + \ No newline at end of file diff --git a/src/views/Terms.vue b/src/views/Terms.vue new file mode 100644 index 0000000..2084460 --- /dev/null +++ b/src/views/Terms.vue @@ -0,0 +1,43 @@ + + + + \ No newline at end of file diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..32b25ed --- /dev/null +++ b/vite.config.js @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import path from 'path' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + "@": path.resolve(__dirname, 'src'), + "@public": path.resolve(__dirname, 'public'), + } + } +}) \ No newline at end of file