diff --git a/satellite/admin/back-office/ui/.gitignore b/satellite/admin/back-office/ui/.gitignore
new file mode 100644
index 000000000..9bfa63dd5
--- /dev/null
+++ b/satellite/admin/back-office/ui/.gitignore
@@ -0,0 +1,5 @@
+node_modules
+.DS_Store
+.idea
+package-lock.json
+dist
diff --git a/satellite/admin/back-office/ui/README.md b/satellite/admin/back-office/ui/README.md
new file mode 100644
index 000000000..f080963ff
--- /dev/null
+++ b/satellite/admin/back-office/ui/README.md
@@ -0,0 +1,57 @@
+# essentials
+
+## Project setup
+
+```
+# yarn
+yarn
+
+# npm
+npm install
+
+# pnpm
+pnpm install
+```
+
+### Compiles and hot-reloads for development
+
+```
+# yarn
+yarn dev
+
+# npm
+npm run dev
+
+# pnpm
+pnpm dev
+```
+
+### Compiles and minifies for production
+
+```
+# yarn
+yarn build
+
+# npm
+npm run build
+
+# pnpm
+pnpm build
+```
+
+### Lints and fixes files
+
+```
+# yarn
+yarn lint
+
+# npm
+npm run lint
+
+# pnpm
+pnpm lint
+```
+
+### Customize configuration
+
+See [Configuration Reference](https://vitejs.dev/config/).
diff --git a/satellite/admin/back-office/ui/index.html b/satellite/admin/back-office/ui/index.html
new file mode 100644
index 000000000..7659ab753
--- /dev/null
+++ b/satellite/admin/back-office/ui/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+ Storj - Admin
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/jsconfig.json b/satellite/admin/back-office/ui/jsconfig.json
new file mode 100644
index 000000000..4aafc5f6e
--- /dev/null
+++ b/satellite/admin/back-office/ui/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/satellite/admin/back-office/ui/package.json b/satellite/admin/back-office/ui/package.json
new file mode 100644
index 000000000..597097e66
--- /dev/null
+++ b/satellite/admin/back-office/ui/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "admin-ui",
+ "version": "0.0.0",
+ "private": true,
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview",
+ "lint": "eslint . --fix --ignore-path .gitignore"
+ },
+ "dependencies": {
+ "@fontsource-variable/inter": "^5.0.8",
+ "@mdi/font": "7.0.96",
+ "core-js": "^3.8.3",
+ "pinia": "^2.0.23",
+ "roboto-fontface": "*",
+ "vue": "^3.2.13",
+ "vue-router": "^4.1.6",
+ "vuetify": "^3.3.5",
+ "webfontloader": "^1.0.0"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^3.0.3",
+ "eslint": "^8.22.0",
+ "eslint-plugin-vue": "^9.3.0",
+ "sass": "^1.63.6",
+ "vite": "^3.1.9",
+ "vite-plugin-vuetify": "^1.0.0-alpha.12"
+ }
+}
diff --git a/satellite/admin/back-office/ui/public/favicon.ico b/satellite/admin/back-office/ui/public/favicon.ico
new file mode 100644
index 000000000..0a9505094
Binary files /dev/null and b/satellite/admin/back-office/ui/public/favicon.ico differ
diff --git a/satellite/admin/back-office/ui/public/logo.svg b/satellite/admin/back-office/ui/public/logo.svg
new file mode 100644
index 000000000..77165eacd
--- /dev/null
+++ b/satellite/admin/back-office/ui/public/logo.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/App.vue b/satellite/admin/back-office/ui/src/App.vue
new file mode 100644
index 000000000..6ada651ad
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/App.vue
@@ -0,0 +1,10 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-access.svg b/satellite/admin/back-office/ui/src/assets/icon-access.svg
new file mode 100644
index 000000000..26adca81f
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-access.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-account.svg b/satellite/admin/back-office/ui/src/assets/icon-account.svg
new file mode 100644
index 000000000..9b44bdb3a
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-account.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-arrow-down.svg b/satellite/admin/back-office/ui/src/assets/icon-arrow-down.svg
new file mode 100644
index 000000000..1e7ad766b
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-arrow-right.svg b/satellite/admin/back-office/ui/src/assets/icon-arrow-right.svg
new file mode 100644
index 000000000..d717cfc9b
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-arrow-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-audio-color.svg b/satellite/admin/back-office/ui/src/assets/icon-audio-color.svg
new file mode 100644
index 000000000..a98bffdb0
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-audio-color.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-audio-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-audio-tonal.svg
new file mode 100644
index 000000000..db322b9f4
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-audio-tonal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-back-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-back-tonal.svg
new file mode 100644
index 000000000..bb54b8bec
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-back-tonal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-bookmark.svg b/satellite/admin/back-office/ui/src/assets/icon-bookmark.svg
new file mode 100644
index 000000000..628903d8d
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-bookmark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-bucket-color.svg b/satellite/admin/back-office/ui/src/assets/icon-bucket-color.svg
new file mode 100644
index 000000000..09e5ef5ea
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-bucket-color.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-bucket-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-bucket-tonal.svg
new file mode 100644
index 000000000..5bf8c6e52
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-bucket-tonal.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-bucket.svg b/satellite/admin/back-office/ui/src/assets/icon-bucket.svg
new file mode 100644
index 000000000..9a5d73a8c
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-bucket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-card.svg b/satellite/admin/back-office/ui/src/assets/icon-card.svg
new file mode 100644
index 000000000..0c4fab266
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-card.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-check-color.svg b/satellite/admin/back-office/ui/src/assets/icon-check-color.svg
new file mode 100644
index 000000000..ade085053
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-check-color.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-close.svg b/satellite/admin/back-office/ui/src/assets/icon-close.svg
new file mode 100644
index 000000000..e945b370c
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-close.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-dashboard.svg b/satellite/admin/back-office/ui/src/assets/icon-dashboard.svg
new file mode 100644
index 000000000..91f278493
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-dashboard.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-docs.svg b/satellite/admin/back-office/ui/src/assets/icon-docs.svg
new file mode 100644
index 000000000..cc6e0caf0
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-docs.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-download.svg b/satellite/admin/back-office/ui/src/assets/icon-download.svg
new file mode 100644
index 000000000..4020cbd73
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-download.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-dropdown.svg b/satellite/admin/back-office/ui/src/assets/icon-dropdown.svg
new file mode 100644
index 000000000..e657469cc
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-dropdown.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-file-color.svg b/satellite/admin/back-office/ui/src/assets/icon-file-color.svg
new file mode 100644
index 000000000..ac39559d4
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-file-color.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-file-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-file-tonal.svg
new file mode 100644
index 000000000..c67966344
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-file-tonal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-file.svg b/satellite/admin/back-office/ui/src/assets/icon-file.svg
new file mode 100644
index 000000000..39a78dd66
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-file.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-folder-color.svg b/satellite/admin/back-office/ui/src/assets/icon-folder-color.svg
new file mode 100644
index 000000000..7a42057e3
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-folder-color.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-folder-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-folder-tonal.svg
new file mode 100644
index 000000000..1a97fc594
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-folder-tonal.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-folder.svg b/satellite/admin/back-office/ui/src/assets/icon-folder.svg
new file mode 100644
index 000000000..3b5df627c
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-folder.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-forum.svg b/satellite/admin/back-office/ui/src/assets/icon-forum.svg
new file mode 100644
index 000000000..ebf451f4a
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-forum.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-geo-distribution.svg b/satellite/admin/back-office/ui/src/assets/icon-geo-distribution.svg
new file mode 100644
index 000000000..c5a504352
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-geo-distribution.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-image-color.svg b/satellite/admin/back-office/ui/src/assets/icon-image-color.svg
new file mode 100644
index 000000000..561eed2e7
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-image-color.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-image-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-image-tonal.svg
new file mode 100644
index 000000000..b34a38190
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-image-tonal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-info.svg b/satellite/admin/back-office/ui/src/assets/icon-info.svg
new file mode 100644
index 000000000..6f665415c
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-info.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-lock.svg b/satellite/admin/back-office/ui/src/assets/icon-lock.svg
new file mode 100644
index 000000000..d74f582ca
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-lock.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-logout.svg b/satellite/admin/back-office/ui/src/assets/icon-logout.svg
new file mode 100644
index 000000000..7cc488e0f
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-logout.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-more.svg b/satellite/admin/back-office/ui/src/assets/icon-more.svg
new file mode 100644
index 000000000..b3217bea0
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-more.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-pdf-color.svg b/satellite/admin/back-office/ui/src/assets/icon-pdf-color.svg
new file mode 100644
index 000000000..f427c2fa4
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-pdf-color.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-pdf-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-pdf-tonal.svg
new file mode 100644
index 000000000..51f40b770
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-pdf-tonal.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-plus.svg b/satellite/admin/back-office/ui/src/assets/icon-plus.svg
new file mode 100644
index 000000000..84e0f3046
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-project-color.svg b/satellite/admin/back-office/ui/src/assets/icon-project-color.svg
new file mode 100644
index 000000000..3ab929a8f
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-project-color.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-project-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-project-tonal.svg
new file mode 100644
index 000000000..386b65d82
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-project-tonal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-project.svg b/satellite/admin/back-office/ui/src/assets/icon-project.svg
new file mode 100644
index 000000000..c5faed627
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-project.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-projects.svg b/satellite/admin/back-office/ui/src/assets/icon-projects.svg
new file mode 100644
index 000000000..25134fd09
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-projects.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-quickstart.svg b/satellite/admin/back-office/ui/src/assets/icon-quickstart.svg
new file mode 100644
index 000000000..0e55eb2ab
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-quickstart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-resources.svg b/satellite/admin/back-office/ui/src/assets/icon-resources.svg
new file mode 100644
index 000000000..19b95cc58
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-resources.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-right.svg b/satellite/admin/back-office/ui/src/assets/icon-right.svg
new file mode 100644
index 000000000..6a545d96a
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-satellite.svg b/satellite/admin/back-office/ui/src/assets/icon-satellite.svg
new file mode 100644
index 000000000..2734e333f
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-satellite.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-settings.svg b/satellite/admin/back-office/ui/src/assets/icon-settings.svg
new file mode 100644
index 000000000..d9ef9f03b
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-settings.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-share.svg b/satellite/admin/back-office/ui/src/assets/icon-share.svg
new file mode 100644
index 000000000..02f284233
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-spreadsheet-color.svg b/satellite/admin/back-office/ui/src/assets/icon-spreadsheet-color.svg
new file mode 100644
index 000000000..7f7ee7113
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-spreadsheet-color.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-spreadsheet-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-spreadsheet-tonal.svg
new file mode 100644
index 000000000..7d5d81fa8
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-spreadsheet-tonal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-support.svg b/satellite/admin/back-office/ui/src/assets/icon-support.svg
new file mode 100644
index 000000000..ba2d570a3
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-support.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-team.svg b/satellite/admin/back-office/ui/src/assets/icon-team.svg
new file mode 100644
index 000000000..4a68ac76c
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-team.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-text-color.svg b/satellite/admin/back-office/ui/src/assets/icon-text-color.svg
new file mode 100644
index 000000000..5afca6cac
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-text-color.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-text-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-text-tonal.svg
new file mode 100644
index 000000000..da1bb5b57
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-text-tonal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-upgrade.svg b/satellite/admin/back-office/ui/src/assets/icon-upgrade.svg
new file mode 100644
index 000000000..3c29d4cbc
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-upgrade.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-user-color.svg b/satellite/admin/back-office/ui/src/assets/icon-user-color.svg
new file mode 100644
index 000000000..2dff79be9
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-user-color.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-user.svg b/satellite/admin/back-office/ui/src/assets/icon-user.svg
new file mode 100644
index 000000000..2dff79be9
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-user.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-video-color.svg b/satellite/admin/back-office/ui/src/assets/icon-video-color.svg
new file mode 100644
index 000000000..eca8b9c1c
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-video-color.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-video-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-video-tonal.svg
new file mode 100644
index 000000000..8457b590a
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-video-tonal.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-zip-color.svg b/satellite/admin/back-office/ui/src/assets/icon-zip-color.svg
new file mode 100644
index 000000000..3d31c0375
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-zip-color.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/icon-zip-tonal.svg b/satellite/admin/back-office/ui/src/assets/icon-zip-tonal.svg
new file mode 100644
index 000000000..50a58b299
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/icon-zip-tonal.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/logo-dark.svg b/satellite/admin/back-office/ui/src/assets/logo-dark.svg
new file mode 100644
index 000000000..6a3054b3f
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/logo-dark.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/assets/logo.svg b/satellite/admin/back-office/ui/src/assets/logo.svg
new file mode 100644
index 000000000..a9fea8c3e
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/assets/logo.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/AccountActionsMenu.vue b/satellite/admin/back-office/ui/src/components/AccountActionsMenu.vue
new file mode 100644
index 000000000..a9138726c
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountActionsMenu.vue
@@ -0,0 +1,110 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+ View Account
+
+
+
+
+
+
+
+ Edit Account
+
+
+
+
+
+
+ Set Status
+
+
+
+
+
+
+ Set Value
+
+
+
+
+
+
+ Set Placement
+
+
+
+
+
+
+ Change Limits
+
+
+
+
+
+
+ New Project
+
+
+
+
+
+
+
+
+ Reset MFA
+
+
+
+
+
+
+ Suspend
+
+
+
+
+
+
+ Delete
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/AccountDeleteDialog.vue b/satellite/admin/back-office/ui/src/components/AccountDeleteDialog.vue
new file mode 100644
index 000000000..5879758ec
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountDeleteDialog.vue
@@ -0,0 +1,102 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Delete Account
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Please enter the reason for deleting this account.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This will delete the account, data, and account
+ information.
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Delete Account
+
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/AccountGeofenceDialog.vue b/satellite/admin/back-office/ui/src/components/AccountGeofenceDialog.vue
new file mode 100644
index 000000000..42c7d812f
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountGeofenceDialog.vue
@@ -0,0 +1,91 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Account Placement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select a placement region for this account.
+ Applies to all the projects, buckets, and data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/AccountInformationDialog.vue b/satellite/admin/back-office/ui/src/components/AccountInformationDialog.vue
new file mode 100644
index 000000000..4e5472128
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountInformationDialog.vue
@@ -0,0 +1,92 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Account Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit the name, email, and account type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/AccountLimitsDialog.vue b/satellite/admin/back-office/ui/src/components/AccountLimitsDialog.vue
new file mode 100644
index 000000000..321002286
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountLimitsDialog.vue
@@ -0,0 +1,105 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Account Default Limits
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enter default limits per project for this account.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/AccountNewProjectDialog.vue b/satellite/admin/back-office/ui/src/components/AccountNewProjectDialog.vue
new file mode 100644
index 000000000..470e89c60
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountNewProjectDialog.vue
@@ -0,0 +1,83 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Create New Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create a new project for this account.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Create Project
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/AccountProjectsTableComponent.vue b/satellite/admin/back-office/ui/src/components/AccountProjectsTableComponent.vue
new file mode 100644
index 000000000..3e44b1c62
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountProjectsTableComponent.vue
@@ -0,0 +1,162 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.columns.projectid }}
+
+
+
+
+
+
+ {{ item.raw.storagepercent }}%
+
+
+
+
+
+ {{ item.raw.downloadpercent }}%
+
+
+
+
+
+
+
+
+ {{ item.raw.segmentpercent }}%
+
+
+
+
+
+
+
+ {{ item.raw.agent }}
+
+
+
+
+
+ {{ item.raw.date }}
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/AccountResetMFADialog.vue b/satellite/admin/back-office/ui/src/components/AccountResetMFADialog.vue
new file mode 100644
index 000000000..5ff80d0cf
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountResetMFADialog.vue
@@ -0,0 +1,83 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Reset MFA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset multi-factor-authentication for this account?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Reset MFA
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/AccountStatusDialog.vue b/satellite/admin/back-office/ui/src/components/AccountStatusDialog.vue
new file mode 100644
index 000000000..825377d81
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountStatusDialog.vue
@@ -0,0 +1,85 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Account Status
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ You can set active, warn, freeze, or suspend.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/AccountSuspendDialog.vue b/satellite/admin/back-office/ui/src/components/AccountSuspendDialog.vue
new file mode 100644
index 000000000..a0f3253db
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountSuspendDialog.vue
@@ -0,0 +1,96 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Suspend Account
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Please enter the reason for suspending this account.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Suspend Account
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/AccountUserAgentsDialog.vue b/satellite/admin/back-office/ui/src/components/AccountUserAgentsDialog.vue
new file mode 100644
index 000000000..802305fe3
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountUserAgentsDialog.vue
@@ -0,0 +1,88 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Account Value Attribution
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select value attribution for this account.
+ Applies to all the projects, buckets, and data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/AccountsTableComponent.vue b/satellite/admin/back-office/ui/src/components/AccountsTableComponent.vue
new file mode 100644
index 000000000..5f7c925af
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AccountsTableComponent.vue
@@ -0,0 +1,279 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.columns.email }}
+
+
+
+
+
+
+ {{ item.raw.type }}
+
+
+
+
+
+ {{ item.raw.status }}
+
+
+
+
+
+ {{ item.raw.agent }}
+
+
+
+
+
+ {{ item.raw.placement }}
+
+
+
+
+
+ {{ item.raw.date }}
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/AdminAccountDialog.vue b/satellite/admin/back-office/ui/src/components/AdminAccountDialog.vue
new file mode 100644
index 000000000..31896d72e
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/AdminAccountDialog.vue
@@ -0,0 +1,83 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Edit Account Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Admin name and email.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/BucketActionsMenu.vue b/satellite/admin/back-office/ui/src/components/BucketActionsMenu.vue
new file mode 100644
index 000000000..4edf0e132
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/BucketActionsMenu.vue
@@ -0,0 +1,64 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+ View Bucket
+
+
+
+
+
+
+
+ Edit Bucket
+
+
+
+
+
+
+
+ Set Value
+
+
+
+
+
+
+ Set Placement
+
+
+
+
+
+
+
+
+ Delete Bucket
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/BucketDeleteDialog.vue b/satellite/admin/back-office/ui/src/components/BucketDeleteDialog.vue
new file mode 100644
index 000000000..661e73b82
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/BucketDeleteDialog.vue
@@ -0,0 +1,98 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Delete Bucket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Please enter the reason for deleting this bucket.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This will delete the bucket and all it's data.
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Delete Bucket
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/BucketGeofenceDialog.vue b/satellite/admin/back-office/ui/src/components/BucketGeofenceDialog.vue
new file mode 100644
index 000000000..e5b5675d7
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/BucketGeofenceDialog.vue
@@ -0,0 +1,87 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Set Bucket Placement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select a placement region for this bucket.
+ Applies to all the data in this bucket.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/BucketInformationDialog.vue b/satellite/admin/back-office/ui/src/components/BucketInformationDialog.vue
new file mode 100644
index 000000000..ed4719a41
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/BucketInformationDialog.vue
@@ -0,0 +1,78 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Bucket Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit the bucket name and information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/BucketUserAgentsDialog.vue b/satellite/admin/back-office/ui/src/components/BucketUserAgentsDialog.vue
new file mode 100644
index 000000000..868807c99
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/BucketUserAgentsDialog.vue
@@ -0,0 +1,87 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Bucket Value Attribution
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select the value attribution for this bucket.
+ Applies to all the buckets and data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/BucketsTableComponent.vue b/satellite/admin/back-office/ui/src/components/BucketsTableComponent.vue
new file mode 100644
index 000000000..1ab52ffb6
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/BucketsTableComponent.vue
@@ -0,0 +1,191 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.raw.name }}
+
+
+
+
+
+
+ {{ item.raw.placement }}
+
+
+
+
+
+ {{ item.raw.agent }}
+
+
+
+
+
+ {{ item.raw.date }}
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/CardStatsComponent.vue b/satellite/admin/back-office/ui/src/components/CardStatsComponent.vue
new file mode 100644
index 000000000..1a2271933
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/CardStatsComponent.vue
@@ -0,0 +1,16 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+ {{ data }}
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/DashboardLimitsTableComponent.vue b/satellite/admin/back-office/ui/src/components/DashboardLimitsTableComponent.vue
new file mode 100644
index 000000000..06460e00f
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/DashboardLimitsTableComponent.vue
@@ -0,0 +1,255 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.columns.projectid }}
+
+
+
+
+
+ {{ item.raw.name }}
+
+
+
+
+ {{ item.raw.email }}
+
+
+
+
+
+ {{ item.raw.agent }}
+
+
+
+
+
+ {{ item.raw.placement }}
+
+
+
+
+
+ {{ item.raw.storagepercent }}%
+
+
+
+
+
+ {{ item.raw.downloadpercent }}%
+
+
+
+
+
+
+
+ {{ item.raw.segmentpercent }}%
+
+
+
+
+
+
+
+ {{ item.raw.date }}
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/LogsTableComponent.vue b/satellite/admin/back-office/ui/src/components/LogsTableComponent.vue
new file mode 100644
index 000000000..5ccbff3e0
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/LogsTableComponent.vue
@@ -0,0 +1,101 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+ More info about {{ item.raw.name }} change.
+
+
+
+
+
+
+ {{ item.raw.operation }}
+
+
+
+
+
+ {{ item.columns.name }}
+
+
+
+
+
+ {{ item.raw.email }}
+
+
+
+
+
+ {{ item.raw.date }}
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/NewAccountDialog.vue b/satellite/admin/back-office/ui/src/components/NewAccountDialog.vue
new file mode 100644
index 000000000..1cec30bf0
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/NewAccountDialog.vue
@@ -0,0 +1,98 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Create New Account
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create a new account in the US1 satellite.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Create Account
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/NewProjectDialog.vue b/satellite/admin/back-office/ui/src/components/NewProjectDialog.vue
new file mode 100644
index 000000000..33b1933ab
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/NewProjectDialog.vue
@@ -0,0 +1,83 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Create New Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enter an account ID and project name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Create Project
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/PageSubtitleComponent.vue b/satellite/admin/back-office/ui/src/components/PageSubtitleComponent.vue
new file mode 100644
index 000000000..4caa8c74d
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/PageSubtitleComponent.vue
@@ -0,0 +1,13 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+ {{ subtitle }}
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/PageTitleComponent.vue b/satellite/admin/back-office/ui/src/components/PageTitleComponent.vue
new file mode 100644
index 000000000..d64482893
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/PageTitleComponent.vue
@@ -0,0 +1,12 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+ {{ title }}
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectActionsMenu.vue b/satellite/admin/back-office/ui/src/components/ProjectActionsMenu.vue
new file mode 100644
index 000000000..e240a8d71
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectActionsMenu.vue
@@ -0,0 +1,89 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+ View Project
+
+
+
+
+
+
+
+ Edit Project
+
+
+
+
+
+
+ Set Value
+
+
+
+
+
+
+ Set Placement
+
+
+
+
+
+
+ Change Limits
+
+
+
+
+
+
+ New Bucket
+
+
+
+
+
+
+ Add User
+
+
+
+
+
+
+
+ Delete
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/components/ProjectAddUserDialog.vue b/satellite/admin/back-office/ui/src/components/ProjectAddUserDialog.vue
new file mode 100644
index 000000000..3f5790b7f
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectAddUserDialog.vue
@@ -0,0 +1,85 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Add User
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select a user to add to this project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectDeleteDialog.vue b/satellite/admin/back-office/ui/src/components/ProjectDeleteDialog.vue
new file mode 100644
index 000000000..53fa322f9
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectDeleteDialog.vue
@@ -0,0 +1,98 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Delete Project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Please enter the reason for deleting this project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This will delete the project and all it's data.
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Delete Project
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectGeofenceDialog.vue b/satellite/admin/back-office/ui/src/components/ProjectGeofenceDialog.vue
new file mode 100644
index 000000000..d921090c0
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectGeofenceDialog.vue
@@ -0,0 +1,87 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Set Project Placement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select a placement region for this project.
+ Applies to all the buckets and data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectInformationDialog.vue b/satellite/admin/back-office/ui/src/components/ProjectInformationDialog.vue
new file mode 100644
index 000000000..fee3628fb
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectInformationDialog.vue
@@ -0,0 +1,81 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Project Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit the project name and description.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectLimitsDialog.vue b/satellite/admin/back-office/ui/src/components/ProjectLimitsDialog.vue
new file mode 100644
index 000000000..8cb96a583
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectLimitsDialog.vue
@@ -0,0 +1,105 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Project Limits
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Enter limits for this project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectNewBucketDialog.vue b/satellite/admin/back-office/ui/src/components/ProjectNewBucketDialog.vue
new file mode 100644
index 000000000..34f38b498
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectNewBucketDialog.vue
@@ -0,0 +1,83 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Create New Bucket
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create a new bucket for this project.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Create Bucket
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectResetMFADialog.vue b/satellite/admin/back-office/ui/src/components/ProjectResetMFADialog.vue
new file mode 100644
index 000000000..5ff80d0cf
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectResetMFADialog.vue
@@ -0,0 +1,83 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Reset MFA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset multi-factor-authentication for this account?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Reset MFA
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectSuspendDialog.vue b/satellite/admin/back-office/ui/src/components/ProjectSuspendDialog.vue
new file mode 100644
index 000000000..f3990b3ba
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectSuspendDialog.vue
@@ -0,0 +1,90 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Suspend Account
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Please enter the reason for suspending this account.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Suspend Account
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectUserAgentsDialog.vue b/satellite/admin/back-office/ui/src/components/ProjectUserAgentsDialog.vue
new file mode 100644
index 000000000..b5c0e23d3
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectUserAgentsDialog.vue
@@ -0,0 +1,88 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ Project Value Attribution
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select the value attribution for this project.
+ Applies to all the buckets and data.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+ Save
+
+
+
+
+
+
+
+ {{ text }}
+
+
+ Close
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/ProjectsTableComponent.vue b/satellite/admin/back-office/ui/src/components/ProjectsTableComponent.vue
new file mode 100644
index 000000000..d8f774a5a
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/ProjectsTableComponent.vue
@@ -0,0 +1,292 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.columns.projectid }}
+
+
+
+
+
+ {{ item.raw.name }}
+
+
+
+
+ {{ item.raw.email }}
+
+
+
+
+
+ {{ item.raw.agent }}
+
+
+
+
+
+ {{ item.raw.placement }}
+
+
+
+
+
+ {{ item.raw.storagepercent }}%
+
+
+
+
+
+ {{ item.raw.downloadpercent }}%
+
+
+
+
+
+
+
+
+ {{ item.raw.segmentpercent }}%
+
+
+
+
+
+
+
+ {{ item.raw.date }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/UsageProgressComponent.vue b/satellite/admin/back-office/ui/src/components/UsageProgressComponent.vue
new file mode 100644
index 000000000..532d556fd
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/UsageProgressComponent.vue
@@ -0,0 +1,44 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+ Used
+ {{ used }}
+
+ Percentage
+ {{ percentage }}
+
+
+
+ Available
+ {{ available }}
+
+ Limit
+ {{ limit }}
+
+
+
+
+
+ Change Limits
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/components/UsersTableComponent.vue b/satellite/admin/back-office/ui/src/components/UsersTableComponent.vue
new file mode 100644
index 000000000..24951c8d5
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/components/UsersTableComponent.vue
@@ -0,0 +1,163 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.columns.email }}
+
+
+
+
+
+
+ {{ item.raw.type }}
+
+
+
+
+
+ {{ item.raw.role }}
+
+
+
+
+
+ {{ item.raw.agent }}
+
+
+
+
+
+ {{ item.raw.date }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/layouts/default/AppBar.vue b/satellite/admin/back-office/ui/src/layouts/default/AppBar.vue
new file mode 100644
index 000000000..92edb26e7
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/layouts/default/AppBar.vue
@@ -0,0 +1,220 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Admin
+
+
+
+
+
+
+
+
+
+
+ Satellite
+
+ North America 1
+
+
+
+
+
+
+
+
+
+ Settings
+
+
+
+
+
+
+
+ Sign Out
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ North America (US1)
+
+
+
+
+
+
+ Europe (EU1)
+
+
+
+
+
+
+ Asia-Pacific (AP1)
+
+
+
+
+
+
+
+
+
+
+ Satellite Settings
+
+
+
+
+
+
+
+
+
+ Satellite
+
+
+ North America US1
+
+
+
+
+
+
+
+
+
+
+
+ Dashboard
+
+
+
+
+
+
+
+
+ Accounts
+
+
+
+
+
+
+
+
+ Projects
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/layouts/default/Default.vue b/satellite/admin/back-office/ui/src/layouts/default/Default.vue
new file mode 100644
index 000000000..1c2b89cf2
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/layouts/default/Default.vue
@@ -0,0 +1,14 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/layouts/default/Login.vue b/satellite/admin/back-office/ui/src/layouts/default/Login.vue
new file mode 100644
index 000000000..d5929db65
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/layouts/default/Login.vue
@@ -0,0 +1,12 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/layouts/default/View.vue b/satellite/admin/back-office/ui/src/layouts/default/View.vue
new file mode 100644
index 000000000..73e12e472
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/layouts/default/View.vue
@@ -0,0 +1,12 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/main.js b/satellite/admin/back-office/ui/src/main.js
new file mode 100644
index 000000000..e1ced383a
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/main.js
@@ -0,0 +1,27 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+/**
+ * main.js
+ *
+ * Bootstraps Vuetify and other plugins then mounts the App`
+ */
+
+// Components
+import App from './App.vue'
+
+// Composables
+import { createApp } from 'vue'
+
+// Styles
+import './styles/settings.scss'
+// import './styles/styles.scss'
+
+// Plugins
+import { registerPlugins } from '@/plugins'
+
+const app = createApp(App)
+
+registerPlugins(app)
+
+app.mount('#app')
diff --git a/satellite/admin/back-office/ui/src/plugins/index.js b/satellite/admin/back-office/ui/src/plugins/index.js
new file mode 100644
index 000000000..bbd3bde7b
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/plugins/index.js
@@ -0,0 +1,22 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+/**
+ * plugins/index.js
+ *
+ * Automatically included in `./src/main.js`
+ */
+
+// Plugins
+// import { loadFonts } from './webfontloader'
+import vuetify from './vuetify'
+import pinia from '../store'
+import router from '../router'
+
+export function registerPlugins (app) {
+ // loadFonts()
+ app
+ .use(vuetify)
+ .use(router)
+ .use(pinia)
+}
diff --git a/satellite/admin/back-office/ui/src/plugins/vuetify.js b/satellite/admin/back-office/ui/src/plugins/vuetify.js
new file mode 100644
index 000000000..d6cd97be6
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/plugins/vuetify.js
@@ -0,0 +1,103 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+/**
+ * plugins/vuetify.js
+ *
+ * Framework documentation: https://vuetifyjs.com`
+ */
+
+// Styles
+import '@mdi/font/css/materialdesignicons.css'
+// import 'vuetify/styles'
+
+// Inter Font using FontSource
+import '@fontsource-variable/inter';
+
+// Composables
+import { createVuetify } from 'vuetify'
+
+// Data Table
+import { VDataTable } from 'vuetify/labs/VDataTable'
+
+// Matrial Design 3
+import { md3 } from 'vuetify/blueprints'
+
+// Storj Styles
+import '../styles/styles.scss'
+
+// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides
+export default createVuetify({
+ // Use blueprint for Material Design 3
+ blueprint: md3,
+ theme: {
+ themes: {
+ light: {
+ colors: {
+ primary: '#0149FF',
+ secondary: '#0218A7',
+ background: '#F9F9F9',
+ surface: '#FFF',
+ info: '#537CFF',
+ success: '#00AC26',
+ warning: '#FF8A00',
+ error: '#FF0149',
+ pink: '#FF458B',
+ purple: '#502EFF',
+ yellow: '#FFC600',
+ orange: '#FFA800',
+ green: '#00B150',
+ grey: '#F1F1F1',
+ },
+ },
+ dark: {
+ colors: {
+ primary: '#0149FF',
+ secondary: '#537CFF',
+ background: '#0d1116',
+ surface: '#0d1116',
+ warning: '#FF8A00',
+ error: '#FF0149',
+ pink: '#FF458B',
+ purple: '#502EFF',
+ yellow: '#FFC600',
+ orange: '#FFA800',
+ green: '#00B150',
+ }
+ },
+ },
+ },
+ components: {
+ VDataTable,
+ },
+ defaults: {
+ global: {
+ // ripple: false,
+ },
+ VDataTable: {
+ fixedHeader: true,
+ noDataText: 'Results not found',
+ },
+ VBtn: {
+ density: 'default',
+ rounded: 'lg',
+ class: 'text-capitalize font-weight-bold',
+ style: 'letter-spacing:0;'
+ },
+ VDataTable: {
+ },
+ VTooltip: {
+ transition: 'fade-transition',
+ },
+ VChip: {
+ rounded: 'lg',
+ },
+ VSelect: {
+ rounded: 'lg',
+ },
+ VTextField: {
+ rounded: 'lg',
+ variant: 'outlined',
+ }
+ },
+})
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/plugins/webfontloader.js b/satellite/admin/back-office/ui/src/plugins/webfontloader.js
new file mode 100644
index 000000000..dac440907
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/plugins/webfontloader.js
@@ -0,0 +1,18 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+/**
+ * plugins/webfontloader.js
+ *
+ * webfontloader documentation: https://github.com/typekit/webfontloader
+ */
+
+export async function loadFonts () {
+ const webFontLoader = await import(/* webpackChunkName: "webfontloader" */'webfontloader')
+
+ webFontLoader.load({
+ google: {
+ families: ['Inter:400,500,700&display=swap'],
+ },
+ })
+}
diff --git a/satellite/admin/back-office/ui/src/router/index.js b/satellite/admin/back-office/ui/src/router/index.js
new file mode 100644
index 000000000..def05902c
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/router/index.js
@@ -0,0 +1,68 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+// Composables
+import { createRouter, createWebHistory } from 'vue-router'
+
+const routes = [
+ {
+ path: '/',
+ redirect: '/login', // directly redirect
+ component: () => import('@/layouts/default/Login.vue'),
+ children: [
+ {
+ path: '/login',
+ name: 'Login',
+ component: () => import(/* webpackChunkName: "Login" */ '@/views/Login.vue'),
+ },
+ ],
+ },
+ {
+ path: '/admin',
+ component: () => import('@/layouts/default/Default.vue'),
+ children: [
+ {
+ path: '/dashboard',
+ name: 'Dashboard',
+ component: () => import(/* webpackChunkName: "Dashboard" */ '@/views/Dashboard.vue'),
+ },
+ {
+ path: '/accounts',
+ name: 'Accounts',
+ component: () => import(/* webpackChunkName: "Users" */ '@/views/Accounts.vue'),
+ },
+ {
+ path: '/account-details',
+ name: 'Account Details',
+ component: () => import(/* webpackChunkName: "AccountDetails" */ '@/views/AccountDetails.vue'),
+ },
+ {
+ path: '/projects',
+ name: 'Projects',
+ component: () => import(/* webpackChunkName: "Projects" */ '@/views/Projects.vue'),
+ },
+ {
+ path: '/project-details',
+ name: 'Project Details',
+ component: () => import(/* webpackChunkName: "ProjectDetails" */ '@/views/ProjectDetails.vue'),
+ },
+ {
+ path: '/bucket-details',
+ name: 'Bucket Details',
+ component: () => import(/* webpackChunkName: "BucketDetails" */ '@/views/BucketDetails.vue'),
+ },
+ {
+ path: '/admin-settings',
+ name: 'Admin Settings',
+ component: () => import(/* webpackChunkName: "AdminSettings" */ '@/views/AdminSettings.vue'),
+ },
+ ],
+ },
+]
+
+const router = createRouter({
+ history: createWebHistory(process.env.NODE_ENV === 'production' ? '/admin-ui/' : process.env.BASE_URL),
+ routes,
+})
+
+export default router
diff --git a/satellite/admin/back-office/ui/src/store/app.js b/satellite/admin/back-office/ui/src/store/app.js
new file mode 100644
index 000000000..1da57df43
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/store/app.js
@@ -0,0 +1,11 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+// Utilities
+import { defineStore } from 'pinia'
+
+export const useAppStore = defineStore('app', {
+ state: () => ({
+ //
+ }),
+})
diff --git a/satellite/admin/back-office/ui/src/store/index.js b/satellite/admin/back-office/ui/src/store/index.js
new file mode 100644
index 000000000..ea85217c1
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/store/index.js
@@ -0,0 +1,7 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+// Utilities
+import { createPinia } from 'pinia'
+
+export default createPinia()
diff --git a/satellite/admin/back-office/ui/src/styles/settings.scss b/satellite/admin/back-office/ui/src/styles/settings.scss
new file mode 100644
index 000000000..fc3a8597b
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/styles/settings.scss
@@ -0,0 +1,31 @@
+/**
+ * src/styles/settings.scss
+ *
+ * Configures SASS variables and Vuetify overwrites
+ */
+
+
+// Warning
+// Duplicated CSS
+// Placing actual styles or importing a regular stylesheet
+// into the settings file will cause them to be
+// duplicated everywhere the file is imported.
+
+// Only put variables, mixins, and functions in the settings file,
+// styles should be placed in the main stylesheet or loaded another way.
+
+
+// Use SASS https://vuetifyjs.com/en/features/sass-variables/
+
+// @use 'vuetify' with (
+// // $utilities: false,
+// $color-pack: false,
+// $body-font-family: 'Inter',
+// );
+
+// To obtain settings from Vuetify, you must forward its variables from within your local stylesheet
+@forward 'vuetify' with (
+ // $utilities: false,
+ $color-pack: false,
+ $body-font-family: 'Inter Variable',
+);
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/styles/styles.scss b/satellite/admin/back-office/ui/src/styles/styles.scss
new file mode 100644
index 000000000..f7c4f0cf4
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/styles/styles.scss
@@ -0,0 +1,296 @@
+/**
+ * src/styles/styles.scss
+ *
+ * Storj Stylesheet
+ * Work in progress
+ *
+ */
+
+@use './settings';
+
+// Light Theme
+.v-theme--light {
+ --v-border-color: 0, 0, 0;
+ --v-border-opacity: 0.1;
+ --v-theme-overlay-multiplier: 0.75;
+ --v-border-color: #e0e0e0;
+ --v-activated-opacity: 0.1 !important;
+}
+
+// Dark Theme
+.v-theme--dark {
+ --v-theme-overlay-multiplier: 0.75;
+}
+
+// Navigation
+.v-navigation-drawer,
+.v-navigation-drawer .v-list,
+.v-navigation-drawer .v-list-item {
+ background-color: rgb(var(--v-theme-surface)) !important;
+}
+
+.v-app-bar.v-toolbar {
+ border-bottom: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
+}
+
+// Toggle visibility class
+.show {
+ display: block;
+}
+
+// Custom rounded class
+.rounded-xlg {
+ border-radius: 12px !important;
+}
+
+// Success button text
+.v-btn.v-theme--light.bg-success {
+ color: #fff;
+}
+
+// Button Shadow
+.v-btn--elevated,
+.v-btn--variant-flat {
+ // box-shadow: rgba(var(--v-border-color), 0.1) 0px 1px 0px 0px !important;
+ box-shadow: rgba(31, 35, 40, 0.04) 0px 1px 0px 0px, rgba(255, 255, 255, 0.25) 0px 1px 0px 0px inset;
+}
+
+.v-btn--variant-outlined {
+ box-shadow: rgba(31, 35, 40, 0.04) 0px 1px 0px 0px;
+}
+
+.v-btn--elevated:hover,
+.v-btn--variant-flat:hover,
+.v-btn--variant-outlined {
+ // box-shadow: rgba(var(--v-border-color), 0.1) 0px 1px 0px 0px !important;
+ box-shadow: rgba(31, 35, 40, 0.04) 0px 1px 0px 0px;
+}
+
+
+// Button Outlines
+.v-btn.v-theme--light.text-default.v-btn--variant-outlined {
+ border-color: rgba(var(--v-border-color), 0.2);
+ background: rgb(var(--v-theme-surface));
+}
+
+.v-btn.v-theme--light.text-default.v-btn--variant-outlined:hover {
+ border-color: #9da3a7;
+ // color: rgb(var(--v-theme-primary));
+ border-color: rgba(var(--v-border-color), 0.5);
+}
+
+.v-btn.v-theme--dark.text-default.v-btn--variant-outlined {
+ border-color: #a9b0b949;
+ // border-color: rgba(var(--v-border-color), var(--v-border-opacity));
+}
+
+.v-btn.v-theme--dark.text-default.v-btn--variant-outlined:hover {
+ border-color: #a9b0b979;
+}
+
+// Button focus style
+.v-btn:focus {
+ // box-shadow: rgb(255, 255, 255) 0px 0px 0px 1px, rgb(103, 146, 244) 0px 0px 0px 3px !important;
+ // box-shadow: rgb(255, 255, 255) 0px 0px 0px 1px, currentColor 0px 0px 0px 1px !important;
+ // outline: none !important;
+}
+
+.v-btn--size-default {
+ --v-btn-size: 0.8rem;
+ --v-btn-height: 44px;
+}
+
+.v-btn--size-large {
+ --v-btn-size: 0.875rem;
+ --v-btn-height: 48px;
+}
+
+// Menu border
+.v-menu>.v-overlay__content {
+ border: 1px solid rgba(var(--v-border-color), var(--v-border-opacity));
+ border-radius: 12px;
+}
+
+// Menu list item
+.v-list-item--active .v-list-item-title {
+ font-weight: 700 !important;
+}
+
+// Menu list item active background
+// .v-list-item--variant-text .v-list-item__overlay {
+// background: rgb(var(--v-border-color));
+// }
+
+
+// Card Light Theme
+.v-card.v-theme--light {
+ border: 1px solid #e0e0e0;
+ box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 0px 0px;
+}
+
+// Card dark Theme
+.v-card.v-theme--dark {
+ background: --v-theme-surface;
+ box-shadow: rgba(255, 255, 255, 0.07) 0px 1px 0px 0px;
+}
+
+
+// Cards Padding
+.v-card-item {
+ padding: 1rem;
+}
+
+// Cards Title
+.v-card-item .v-card-title {
+ font-weight: 700;
+ font-size: 1.1rem;
+ letter-spacing: 0;
+}
+
+// Overlay behind modals/dialogs opacity and color
+.v-overlay__scrim {
+ background: #000;
+ opacity: 0.75;
+}
+
+// Align the checkboxes in the tables
+.v-selection-control {
+ contain: inherit;
+}
+
+// Make the checkbox selection square instead of rounded
+.v-selection-control__input {
+ border-radius: 8px;
+}
+
+.v-selection-control__input::before {
+ border-radius: 8px;
+}
+
+
+// Sorting icon
+.mdi-arrow-up::before,
+.mdi-arrow-down::before {
+ // content: "\F005D";
+ font-size: 14px;
+}
+
+// Breadcrumbs
+.v-breadcrumbs {
+ min-height: 24px;
+}
+
+.v-breadcrumbs-item {
+ padding: 0 !important;
+}
+
+// Snackbar
+.v-snackbar__content {
+ width: 100%;
+}
+
+// Table Headers
+.v-data-table-header__content {
+ text-transform: uppercase;
+ font-size: 0.7rem;
+ letter-spacing: 1px;
+}
+
+// Table content
+.v-list-item__content {
+ white-space: nowrap;
+ overflow: visible;
+}
+
+// Table Footer
+.v-data-table-footer {
+ font-size: 14px;
+}
+
+.v-data-table-footer {
+ border-top: thin solid rgba(var(--v-border-color), var(--v-border-opacity));
+}
+
+.v-data-table-footer .v-field__field {
+ height: 2.25rem;
+}
+
+.v-data-table-footer .v-field {
+ padding-right: 0.5rem;
+}
+
+.v-data-table-footer .v-field__input {
+ padding-top: 0;
+ font-size: 14px;
+ line-height: 1;
+}
+
+// Table Fonts
+table {
+ font-size: 14px;
+}
+
+// Table Pagination
+.v-data-table-footer__pagination .v-btn {
+ width: auto;
+}
+
+// Search styles
+.v-field.v-field--prepended {
+ --v-field-padding-start: 8px;
+ padding-left: 16px;
+}
+
+
+// Links
+.link {
+ color: rgb(var(--v-theme-primary));
+ text-decoration: none;
+ background-image: linear-gradient(currentColor, currentColor);
+ background-size: 0 1px;
+ background-repeat: no-repeat;
+ background-position: 0 100%;
+ transition: background-size .15s ease;
+}
+
+.link:hover {
+ color: rgb(var(--v-theme-secondary));
+ background-size: 100% 1px;
+}
+
+
+// Tooltips
+.v-tooltip>.v-overlay__content {
+ background: rgba(var(--v-theme-on-surface), 0.9) !important;
+ color: rgb(var(--v-theme-surface)) !important;
+ border: 1px solid rgba(var(--v-theme-surface), 0.2);
+ font-weight: 500;
+ border-radius: 20px !important;
+ padding: 6px 14px;
+ backdrop-filter: blur(12px);
+}
+
+// Alerts
+
+.v-alert-title {
+ font-weight: bold !important;
+ letter-spacing: 0 !important;
+}
+
+.v-alert__prepend {
+ margin-top: 12px;
+}
+
+.v-alert__append,
+.v-alert__close {
+ margin-top: 4px;
+}
+
+.v-alert__close .v-btn {
+ color: rgb(var(--v-theme-on-surface)) !important;
+}
+
+// Chips
+.v-chip--variant-outlined {
+ border-color: rgba(var(--v-border-color), var(--v-border-opacity));
+}
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/views/AccountDetails.vue b/satellite/admin/back-office/ui/src/views/AccountDetails.vue
new file mode 100644
index 000000000..b843a2b3a
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/views/AccountDetails.vue
@@ -0,0 +1,181 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+ This account
+
+
+
+
+
+
+ itacker@gmail.com
+
+
+
+ Customer for 17 days
+
+ Account created: 24 Apr 2020
+
+
+
+
+
+
+
+
+
+ Account Actions
+
+
+
+
+
+
+
+
+
+
+ Pro
+
+ Pro account since: 2 May 2022
+
+
+
+
+ Edit Account Information
+
+
+
+
+
+
+
+
+
+
+ Active
+
+
+
+ Set Account Status
+
+
+
+
+
+
+
+
+
+
+
+ Company
+
+
+ Set Value Attribution
+
+
+
+
+
+
+
+
+
+
+
+ Global
+
+
+
+ Set Account Placement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Projects
+
+
+
+
+
+
+ History
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/views/Accounts.vue b/satellite/admin/back-office/ui/src/views/Accounts.vue
new file mode 100644
index 000000000..bf9e2fef9
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/views/Accounts.vue
@@ -0,0 +1,80 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ New Account
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/views/AdminSettings.vue b/satellite/admin/back-office/ui/src/views/AdminSettings.vue
new file mode 100644
index 000000000..ded567354
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/views/AdminSettings.vue
@@ -0,0 +1,73 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ tome@storj.io
+
+
+ Edit
+
+
+
+
+
+
+
+
+
+ Admin
+
+
+ Edit
+
+
+
+
+
+
+
+
+ Disabled
+
+
+ Enable 2FA
+
+
+
+
+
+
+
+
+
+
+
diff --git a/satellite/admin/back-office/ui/src/views/BucketDetails.vue b/satellite/admin/back-office/ui/src/views/BucketDetails.vue
new file mode 100644
index 000000000..536822f27
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/views/BucketDetails.vue
@@ -0,0 +1,166 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+ Go to account
+
+
+
+
+
+
+ itacker@gmail.com
+
+
+
+
+
+
+ Go to project
+
+
+
+
+
+
+ 56F82SR21Q284
+
+
+
+
+
+
+
+
+
+
+ Backups
+
+ This bucket
+
+
+
+
+
+
+ Bucket Actions
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pro
+
+ Pro account since: 2 May 2022
+
+
+
+
+ Edit Bucket Information
+
+
+
+
+
+
+
+
+
+ Company
+
+
+
+ Set Value Attribution
+
+
+
+
+
+
+
+
+
+ Global
+
+
+
+
+ Set Bucket Placement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/views/Dashboard.vue b/satellite/admin/back-office/ui/src/views/Dashboard.vue
new file mode 100644
index 000000000..e2823f6de
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/views/Dashboard.vue
@@ -0,0 +1,63 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/views/Login.vue b/satellite/admin/back-office/ui/src/views/Login.vue
new file mode 100644
index 000000000..e6da7e7d9
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/views/Login.vue
@@ -0,0 +1,102 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select a satellite
+ to continue to Storj Admin
+
+ Continue
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/views/ProjectDetails.vue b/satellite/admin/back-office/ui/src/views/ProjectDetails.vue
new file mode 100644
index 000000000..d079c3f87
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/views/ProjectDetails.vue
@@ -0,0 +1,204 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+ Go to account
+
+
+
+
+
+
+ itacker@gmail.com
+
+
+
+
+
+
+
+
+
+
+ 56F82SR21Q284
+
+ This project ID
+
+
+
+
+
+
+ Project Actions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pro
+
+ Pro account since: 2 May 2022
+
+
+
+
+ Edit Project Information
+
+
+
+
+
+
+
+
+
+ Company
+
+
+ Set Value Attribution
+
+
+
+
+
+
+
+
+
+
+ Global
+
+
+
+ Set Project Placement
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Buckets
+
+
+
+
+
+
+ Users
+
+
+
+
+
+
+ History
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/src/views/Projects.vue b/satellite/admin/back-office/ui/src/views/Projects.vue
new file mode 100644
index 000000000..5b06ce9a4
--- /dev/null
+++ b/satellite/admin/back-office/ui/src/views/Projects.vue
@@ -0,0 +1,69 @@
+// Copyright (C) 2023 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ New Project
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/satellite/admin/back-office/ui/vite.config.js b/satellite/admin/back-office/ui/vite.config.js
new file mode 100644
index 000000000..b9573a571
--- /dev/null
+++ b/satellite/admin/back-office/ui/vite.config.js
@@ -0,0 +1,45 @@
+// Copyright (C) 2020 Storj Labs, Inc.
+// See LICENSE for copying information.
+
+// Plugins
+import vue from '@vitejs/plugin-vue'
+import vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'
+
+// Utilities
+import { defineConfig } from 'vite'
+import { fileURLToPath, URL } from 'node:url'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ base: process.env.NODE_ENV === 'production' ? '/admin-ui/' : '/',
+ plugins: [
+ vue({
+ template: { transformAssetUrls }
+ }),
+ // https://github.com/vuetifyjs/vuetify-loader/tree/next/packages/vite-plugin
+ vuetify({
+ autoImport: true,
+ styles: {
+ configFile: 'src/styles/settings.scss',
+ },
+ }),
+ ],
+ define: { 'process.env': {} },
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ },
+ extensions: [
+ '.js',
+ '.json',
+ '.jsx',
+ '.mjs',
+ '.ts',
+ '.tsx',
+ '.vue',
+ ],
+ },
+ server: {
+ port: 3000,
+ },
+})
diff --git a/satellite/admin/back-office/ui/yarn.lock b/satellite/admin/back-office/ui/yarn.lock
new file mode 100644
index 000000000..b59ed415e
--- /dev/null
+++ b/satellite/admin/back-office/ui/yarn.lock
@@ -0,0 +1,1347 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/parser@^7.20.15", "@babel/parser@^7.21.3":
+ version "7.22.16"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.16.tgz#180aead7f247305cce6551bea2720934e2fa2c95"
+ integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==
+
+"@esbuild/android-arm@0.15.18":
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80"
+ integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==
+
+"@esbuild/linux-loong64@0.15.18":
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239"
+ integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==
+
+"@eslint/eslintrc@^1.4.1":
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz"
+ integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^9.4.0"
+ globals "^13.19.0"
+ ignore "^5.2.0"
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
+ strip-json-comments "^3.1.1"
+
+"@fontsource-variable/inter@^5.0.8":
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/@fontsource-variable/inter/-/inter-5.0.8.tgz#bd6d61ece1019c59b0ac330a138d48a34dfa6d8c"
+ integrity sha512-WkYfFNccmEIeL2fNg0mYeLWqOoB7xD8MFxFRc4IwbSP2o8ZaBt36v5aW4by4MyrgGRMNk7uNi5LbvYKq6clPjw==
+
+"@humanwhocodes/config-array@^0.11.8":
+ version "0.11.8"
+ resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz"
+ integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
+ dependencies:
+ "@humanwhocodes/object-schema" "^1.2.1"
+ debug "^4.1.1"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
+ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+
+"@jridgewell/sourcemap-codec@^1.4.15":
+ version "1.4.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@mdi/font@7.0.96":
+ version "7.0.96"
+ resolved "https://registry.npmjs.org/@mdi/font/-/font-7.0.96.tgz"
+ integrity sha512-rzlxTfR64hqY8yiBzDjmANfcd8rv+T5C0Yedv/TWk2QyAQYdc66e0kaN1ipmnYU3RukHRTRcBARHzzm+tIhL7w==
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@vitejs/plugin-vue@^3.0.3":
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz"
+ integrity sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==
+
+"@vue/compiler-core@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.4.tgz#7fbf591c1c19e1acd28ffd284526e98b4f581128"
+ integrity sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==
+ dependencies:
+ "@babel/parser" "^7.21.3"
+ "@vue/shared" "3.3.4"
+ estree-walker "^2.0.2"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-dom@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz#f56e09b5f4d7dc350f981784de9713d823341151"
+ integrity sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==
+ dependencies:
+ "@vue/compiler-core" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+"@vue/compiler-sfc@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz#b19d942c71938893535b46226d602720593001df"
+ integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==
+ dependencies:
+ "@babel/parser" "^7.20.15"
+ "@vue/compiler-core" "3.3.4"
+ "@vue/compiler-dom" "3.3.4"
+ "@vue/compiler-ssr" "3.3.4"
+ "@vue/reactivity-transform" "3.3.4"
+ "@vue/shared" "3.3.4"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.0"
+ postcss "^8.1.10"
+ source-map-js "^1.0.2"
+
+"@vue/compiler-ssr@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz#9d1379abffa4f2b0cd844174ceec4a9721138777"
+ integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==
+ dependencies:
+ "@vue/compiler-dom" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+"@vue/devtools-api@^6.4.5":
+ version "6.5.0"
+ resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz"
+ integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
+
+"@vue/reactivity-transform@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz#52908476e34d6a65c6c21cd2722d41ed8ae51929"
+ integrity sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==
+ dependencies:
+ "@babel/parser" "^7.20.15"
+ "@vue/compiler-core" "3.3.4"
+ "@vue/shared" "3.3.4"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.0"
+
+"@vue/reactivity@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.4.tgz#a27a29c6cd17faba5a0e99fbb86ee951653e2253"
+ integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==
+ dependencies:
+ "@vue/shared" "3.3.4"
+
+"@vue/runtime-core@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.4.tgz#4bb33872bbb583721b340f3088888394195967d1"
+ integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==
+ dependencies:
+ "@vue/reactivity" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+"@vue/runtime-dom@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz#992f2579d0ed6ce961f47bbe9bfe4b6791251566"
+ integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==
+ dependencies:
+ "@vue/runtime-core" "3.3.4"
+ "@vue/shared" "3.3.4"
+ csstype "^3.1.1"
+
+"@vue/server-renderer@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.4.tgz#ea46594b795d1536f29bc592dd0f6655f7ea4c4c"
+ integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==
+ dependencies:
+ "@vue/compiler-ssr" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+"@vue/shared@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780"
+ integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==
+
+"@vuetify/loader-shared@^1.7.1":
+ version "1.7.1"
+ resolved "https://registry.npmjs.org/@vuetify/loader-shared/-/loader-shared-1.7.1.tgz"
+ integrity sha512-kLUvuAed6RCvkeeTNJzuy14pqnkur8lTuner7v7pNE/kVhPR97TuyXwBSBMR1cJeiLiOfu6SF5XlCYbXByEx1g==
+ dependencies:
+ find-cache-dir "^3.3.2"
+ upath "^2.0.1"
+
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn@^8.8.0:
+ version "8.8.2"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
+ integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
+
+ajv@^6.10.0, ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+boolbase@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+"chokidar@>=3.0.0 <4.0.0":
+ version "3.5.3"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
+ integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+core-js@^3.8.3:
+ version "3.27.2"
+ resolved "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz"
+ integrity sha512-9ashVQskuh5AZEZ1JdQWp1GqSoC1e1G87MzRqg2gIfVAQ7Qn9K+uFj8EcniUFA4P2NLZfV+TOlX1SzoKfo+s7w==
+
+cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+csstype@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
+ integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
+
+debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+esbuild-android-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5"
+ integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==
+
+esbuild-android-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04"
+ integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==
+
+esbuild-darwin-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz#428e1730ea819d500808f220fbc5207aea6d4410"
+ integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==
+
+esbuild-darwin-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz"
+ integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==
+
+esbuild-freebsd-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2"
+ integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==
+
+esbuild-freebsd-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635"
+ integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==
+
+esbuild-linux-32@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce"
+ integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==
+
+esbuild-linux-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c"
+ integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==
+
+esbuild-linux-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d"
+ integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==
+
+esbuild-linux-arm@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc"
+ integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==
+
+esbuild-linux-mips64le@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb"
+ integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==
+
+esbuild-linux-ppc64le@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507"
+ integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==
+
+esbuild-linux-riscv64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6"
+ integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==
+
+esbuild-linux-s390x@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb"
+ integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==
+
+esbuild-netbsd-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998"
+ integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==
+
+esbuild-openbsd-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8"
+ integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==
+
+esbuild-sunos-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971"
+ integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==
+
+esbuild-windows-32@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3"
+ integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==
+
+esbuild-windows-64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0"
+ integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==
+
+esbuild-windows-arm64@0.15.18:
+ version "0.15.18"
+ resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7"
+ integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==
+
+esbuild@^0.15.9:
+ version "0.15.18"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz"
+ integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.15.18"
+ "@esbuild/linux-loong64" "0.15.18"
+ esbuild-android-64 "0.15.18"
+ esbuild-android-arm64 "0.15.18"
+ esbuild-darwin-64 "0.15.18"
+ esbuild-darwin-arm64 "0.15.18"
+ esbuild-freebsd-64 "0.15.18"
+ esbuild-freebsd-arm64 "0.15.18"
+ esbuild-linux-32 "0.15.18"
+ esbuild-linux-64 "0.15.18"
+ esbuild-linux-arm "0.15.18"
+ esbuild-linux-arm64 "0.15.18"
+ esbuild-linux-mips64le "0.15.18"
+ esbuild-linux-ppc64le "0.15.18"
+ esbuild-linux-riscv64 "0.15.18"
+ esbuild-linux-s390x "0.15.18"
+ esbuild-netbsd-64 "0.15.18"
+ esbuild-openbsd-64 "0.15.18"
+ esbuild-sunos-64 "0.15.18"
+ esbuild-windows-32 "0.15.18"
+ esbuild-windows-64 "0.15.18"
+ esbuild-windows-arm64 "0.15.18"
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+eslint-plugin-vue@^9.3.0:
+ version "9.9.0"
+ resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.9.0.tgz"
+ integrity sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==
+ dependencies:
+ eslint-utils "^3.0.0"
+ natural-compare "^1.4.0"
+ nth-check "^2.0.1"
+ postcss-selector-parser "^6.0.9"
+ semver "^7.3.5"
+ vue-eslint-parser "^9.0.1"
+ xml-name-validator "^4.0.0"
+
+eslint-scope@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz"
+ integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-utils@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz"
+ integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
+ dependencies:
+ eslint-visitor-keys "^2.0.0"
+
+eslint-visitor-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
+ integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
+
+eslint-visitor-keys@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz"
+ integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
+
+eslint@^8.22.0:
+ version "8.34.0"
+ resolved "https://registry.npmjs.org/eslint/-/eslint-8.34.0.tgz"
+ integrity sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==
+ dependencies:
+ "@eslint/eslintrc" "^1.4.1"
+ "@humanwhocodes/config-array" "^0.11.8"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ doctrine "^3.0.0"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^7.1.1"
+ eslint-utils "^3.0.0"
+ eslint-visitor-keys "^3.3.0"
+ espree "^9.4.0"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ grapheme-splitter "^1.0.4"
+ ignore "^5.2.0"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ is-path-inside "^3.0.3"
+ js-sdsl "^4.1.4"
+ js-yaml "^4.1.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ regexpp "^3.2.0"
+ strip-ansi "^6.0.1"
+ strip-json-comments "^3.1.0"
+ text-table "^0.2.0"
+
+espree@^9.3.1, espree@^9.4.0:
+ version "9.4.1"
+ resolved "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz"
+ integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==
+ dependencies:
+ acorn "^8.8.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.3.0"
+
+esquery@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^5.1.0, estraverse@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fastq@^1.6.0:
+ version "1.15.0"
+ resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz"
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
+ dependencies:
+ reusify "^1.0.4"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+find-cache-dir@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz"
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
+
+find-up@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.2.7"
+ resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz"
+ integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^13.19.0:
+ version "13.20.0"
+ resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz"
+ integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
+ dependencies:
+ type-fest "^0.20.2"
+
+grapheme-splitter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz"
+ integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+ignore@^5.2.0:
+ version "5.2.4"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
+ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
+immutable@^4.0.0:
+ version "4.2.4"
+ resolved "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz"
+ integrity sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==
+
+import-fresh@^3.0.0, import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-core-module@^2.9.0:
+ version "2.11.0"
+ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz"
+ integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+ dependencies:
+ has "^1.0.3"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+js-sdsl@^4.1.4:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz"
+ integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.30.0:
+ version "0.30.3"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.3.tgz#403755dfd9d6b398dfa40635d52e96c5ac095b85"
+ integrity sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.15"
+
+make-dir@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+nanoid@^3.3.4, nanoid@^3.3.6:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+nth-check@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+ dependencies:
+ boolbase "^1.0.0"
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1:
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pinia@^2.0.23:
+ version "2.0.30"
+ resolved "https://registry.npmjs.org/pinia/-/pinia-2.0.30.tgz"
+ integrity sha512-q6DUmxWwe/mQgg+55QQjykpKC+aGeGdaJV3niminl19V08dE+LRTvSEuqi6/NLSGCKHI49KGL6tMNEOssFiMyA==
+ dependencies:
+ "@vue/devtools-api" "^6.4.5"
+ vue-demi "*"
+
+pkg-dir@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+postcss-selector-parser@^6.0.9:
+ version "6.0.11"
+ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz"
+ integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss@^8.1.10:
+ version "8.4.30"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.30.tgz#0e0648d551a606ef2192a26da4cabafcc09c1aa7"
+ integrity sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+postcss@^8.4.18:
+ version "8.4.21"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz"
+ integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==
+ dependencies:
+ nanoid "^3.3.4"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+punycode@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
+ integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+regexpp@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz"
+ integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve@^1.22.1:
+ version "1.22.1"
+ resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz"
+ integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ dependencies:
+ is-core-module "^2.9.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+roboto-fontface@*:
+ version "0.10.0"
+ resolved "https://registry.npmjs.org/roboto-fontface/-/roboto-fontface-0.10.0.tgz"
+ integrity sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g==
+
+rollup@^2.79.1:
+ version "2.79.1"
+ resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz"
+ integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+sass@^1.63.6:
+ version "1.63.6"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.6.tgz#481610e612902e0c31c46b46cf2dad66943283ea"
+ integrity sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
+
+semver@^6.0.0:
+ version "6.3.0"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^7.3.5, semver@^7.3.6:
+ version "7.5.3"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz"
+ integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+upath@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz"
+ integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+util-deprecate@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+vite-plugin-vuetify@^1.0.0-alpha.12:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/vite-plugin-vuetify/-/vite-plugin-vuetify-1.0.2.tgz"
+ integrity sha512-MubIcKD33O8wtgQXlbEXE7ccTEpHZ8nPpe77y9Wy3my2MWw/PgehP9VqTp92BLqr0R1dSL970Lynvisx3UxBFw==
+ dependencies:
+ "@vuetify/loader-shared" "^1.7.1"
+ debug "^4.3.3"
+ upath "^2.0.1"
+
+vite@^3.1.9:
+ version "3.2.7"
+ resolved "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz"
+ integrity sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==
+ dependencies:
+ esbuild "^0.15.9"
+ postcss "^8.4.18"
+ resolve "^1.22.1"
+ rollup "^2.79.1"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vue-demi@*:
+ version "0.13.11"
+ resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz"
+ integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
+
+vue-eslint-parser@^9.0.1:
+ version "9.1.0"
+ resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz"
+ integrity sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==
+ dependencies:
+ debug "^4.3.4"
+ eslint-scope "^7.1.1"
+ eslint-visitor-keys "^3.3.0"
+ espree "^9.3.1"
+ esquery "^1.4.0"
+ lodash "^4.17.21"
+ semver "^7.3.6"
+
+vue-router@^4.1.6:
+ version "4.1.6"
+ resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz"
+ integrity sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==
+ dependencies:
+ "@vue/devtools-api" "^6.4.5"
+
+vue@^3.2.13:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6"
+ integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==
+ dependencies:
+ "@vue/compiler-dom" "3.3.4"
+ "@vue/compiler-sfc" "3.3.4"
+ "@vue/runtime-dom" "3.3.4"
+ "@vue/server-renderer" "3.3.4"
+ "@vue/shared" "3.3.4"
+
+vuetify@^3.3.5:
+ version "3.3.17"
+ resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-3.3.17.tgz#a7649c6f677beeed4b86baf6e3fece1596cc99e4"
+ integrity sha512-HO1Tl0saXb45Fi/PvpB8ZSn06Ix4JNiodEVkAdOyW6jq3MSIMho8xiOSQ0qQ7DoXyeTnWEvPuG3StbVAwH8tyw==
+
+webfontloader@^1.0.0:
+ version "1.6.28"
+ resolved "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz"
+ integrity sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ==
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+word-wrap@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+xml-name-validator@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz"
+ integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==