diff --git a/package.json b/package.json index 6d597a142910af9f16b211a11297ac3a778233f7..89a17ee5f2a41596595abb18bd9d035944292eba 100644 --- a/package.json +++ b/package.json @@ -40,10 +40,10 @@ "@modyfi/vite-plugin-yaml": "1.0.4", "@types/dompurify": "3.0.3", "@types/showdown": "2.0.1", - "@vitejs/plugin-vue": "4.2.3", + "@vitejs/plugin-vue": "4.4.1", "@vitest/coverage-v8": "0.34.5", "@vitest/ui": "0.34.5", - "@vue-macros/volar": "0.15.0", + "@vue-macros/volar": "0.17.2", "@vue/test-utils": "2.4.1", "@vue/tsconfig": "0.4.0", "@vueuse/core": "10.3.0", @@ -54,14 +54,14 @@ "magic-regexp": "0.7.0", "sass": "1.68.0", "typescript": "5.2.2", - "unplugin-vue-macros": "2.6.0", + "unplugin-vue-macros": "2.6.2", "vite": "4.4.9", "vitepress": "1.0.0-rc.4", "vitest": "0.34.1", - "vue": "3.3.4", + "vue": "3.3.8", "vue-i18n": "9.3.0-beta.24", "vue-router": "4.2.5", - "vue-tsc": "1.8.8" + "vue-tsc": "1.8.22" }, "peerDependencies": { "@vueuse/core": "^9.3.0 || ^10.0.0", diff --git a/src/components/activity/Activity.vue b/src/components/activity/Activity.vue index ea9ed308bf0a43dee8c991e2c9d0a1f8edb0661c..564022cfa015c7c2611e0daf82c064a87c3835a7 100644 --- a/src/components/activity/Activity.vue +++ b/src/components/activity/Activity.vue @@ -4,6 +4,8 @@ import { useRouter } from 'vue-router' import { useI18n } from 'vue-i18n' import { computed } from 'vue' +import type { Track, User } from '~/types/models' + const { t } = useI18n() const play = defineEmit<[track: Track]>() diff --git a/src/components/button/Button.vue b/src/components/button/Button.vue index 769658442aed161933f6ceebc9ec16bb9b80b591..d016203ca9466ec38af86312415ad4251b49d428 100644 --- a/src/components/button/Button.vue +++ b/src/components/button/Button.vue @@ -2,6 +2,7 @@ import { useColor } from '~/composables/colors' import { FwLoader } from '~/components' import { ref, computed, useSlots } from 'vue' +import type { ColorProps } from '~/types/common-props' interface Props { outline?: boolean diff --git a/src/components/card/album/Card.vue b/src/components/card/album/Card.vue index 0f367f5ea81c117715fffb50324e50ccb913ccf7..6e97b1bf46d58839c873a655e1ec2dfefd3bceba 100644 --- a/src/components/card/album/Card.vue +++ b/src/components/card/album/Card.vue @@ -3,6 +3,8 @@ import { FwCard, FwPlayButton, FwOptionsButton } from '~/components' import { useRouter } from 'vue-router' import { useI18n } from 'vue-i18n' +import type { Album } from '~/types/models' + const { t } = useI18n() const play = defineEmit<[album: Album]>() diff --git a/src/components/card/artist/Card.vue b/src/components/card/artist/Card.vue index a4822515fe3f139b3ec806139f2b62dcce85bdc8..3cf925116cd487c6a5439175811d59183c5363fe 100644 --- a/src/components/card/artist/Card.vue +++ b/src/components/card/artist/Card.vue @@ -3,6 +3,8 @@ import { FwCard, FwPlayButton, FwOptionsButton } from '~/components' import { useRouter } from 'vue-router' import { useI18n } from 'vue-i18n' +import type { Artist } from '~/types/models' + const { t } = useI18n() const play = defineEmit<[artist: Artist]>() diff --git a/src/components/card/playlist/Card.vue b/src/components/card/playlist/Card.vue index b1aae1d527da0351ed97393ede6a63b7a9250d1b..5394bd52b051b68e657ed292325c8a6a4252b384 100644 --- a/src/components/card/playlist/Card.vue +++ b/src/components/card/playlist/Card.vue @@ -4,6 +4,8 @@ import { useRouter } from 'vue-router' import { useI18n } from 'vue-i18n' import { computed } from 'vue' +import type { Playlist } from '~/types/models' + const { t } = useI18n() const play = defineEmit<[playlist: Playlist]>() diff --git a/src/components/card/podcast/Card.vue b/src/components/card/podcast/Card.vue index ea8280c3ad0deb3b8346f12803dcdef3c03fc77b..a33ede7830c7bde18c7496a837e2b0a07d860f45 100644 --- a/src/components/card/podcast/Card.vue +++ b/src/components/card/podcast/Card.vue @@ -2,6 +2,7 @@ import { FwCard, FwOptionsButton } from '~/components' import { useTimeAgo } from '@vueuse/core' import { useRouter } from 'vue-router' +import type { Podcast } from '~/types/models' const podcast = defineProp<Podcast>('podcast', { required: true }) diff --git a/src/components/card/radio/Card.vue b/src/components/card/radio/Card.vue index cf7d95522264dfb6f4061a3a7c4ddd12734b0e76..4dbd694b86bbcdbe0d6de9f96347e6cbc46613b8 100644 --- a/src/components/card/radio/Card.vue +++ b/src/components/card/radio/Card.vue @@ -3,6 +3,8 @@ import { usePastel } from '~/composables/colors' import { FwCard, FwPlayButton } from '~/components' import { useRouter } from 'vue-router' import { useI18n } from 'vue-i18n' +import type { PastelProps } from '~/types/common-props' +import type { Radio } from '~/types/models' const { t } = useI18n() diff --git a/src/components/pill/Pill.vue b/src/components/pill/Pill.vue index 67b58895887d00bf5049c356cc8f32d4798c5dfd..e87b5f2cecb75d742bb9d93954d36b6e1818b0b1 100644 --- a/src/components/pill/Pill.vue +++ b/src/components/pill/Pill.vue @@ -1,5 +1,6 @@ <script setup lang="ts"> import { useColorOrPastel } from '~/composables/colors' +import type { ColorProps, PastelProps } from '~/types/common-props' const props = defineProps<ColorProps | PastelProps>() const color = useColorOrPastel(() => props.color, 'secondary') diff --git a/src/composables/colors.ts b/src/composables/colors.ts index a1157023e665496f7a38ee2b1bd26ff0fadfb01d..108f652e0ca8891f24374f5dc4665af23d081dd3 100644 --- a/src/composables/colors.ts +++ b/src/composables/colors.ts @@ -1,5 +1,6 @@ import { toValue, type MaybeRefOrGetter } from "@vueuse/core" import { computed } from 'vue' +import type { Color, Pastel } from '~/types/common-props' export function useColor(color: MaybeRefOrGetter<Color | undefined>, defaultColor: Color = 'primary') { return computed(() => `is-${toValue(color) ?? defaultColor}`) diff --git a/src/types/common-props.d.ts b/src/types/common-props.d.ts deleted file mode 100644 index dfa56708f3ff19ae45162617be05e51b1bfbb5e8..0000000000000000000000000000000000000000 --- a/src/types/common-props.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -declare type Color = 'primary' | 'secondary' | 'destructive' -declare interface ColorProps { - color?: Color -} - -declare type Pastel = 'red' | 'blue' | 'purple' | 'green' | 'yellow' -declare interface PastelProps { - color?: Pastel -} diff --git a/src/types/common-props.ts b/src/types/common-props.ts new file mode 100644 index 0000000000000000000000000000000000000000..a6d75acd6e93811f186c96b28d05504d466a5266 --- /dev/null +++ b/src/types/common-props.ts @@ -0,0 +1,9 @@ +export type Color = 'primary' | 'secondary' | 'destructive' +export interface ColorProps { + color?: Color +} + +export type Pastel = 'red' | 'blue' | 'purple' | 'green' | 'yellow' +export interface PastelProps { + color?: Pastel +} diff --git a/src/types/models.d.ts b/src/types/models.ts similarity index 81% rename from src/types/models.d.ts rename to src/types/models.ts index ff6dfbebf0c0e2c4519f856e677c2765a5e04b53..7091a35a46cb51dadd450a5ac1df8c8af969f384 100644 --- a/src/types/models.d.ts +++ b/src/types/models.ts @@ -1,4 +1,4 @@ -declare interface Track { +export interface Track { id: number name: string @@ -14,18 +14,18 @@ declare interface Track { } } -declare interface User { +export interface User { username: string full_username: string } -declare interface Radio { +export interface Radio { id: number name: string description: string } -declare interface Podcast { +export interface Podcast { name: string artist: { id: number @@ -39,7 +39,7 @@ declare interface Podcast { } } -declare interface Playlist { +export interface Playlist { id: number name: string user: { @@ -50,7 +50,7 @@ declare interface Playlist { album_covers: string[] } -declare interface Artist { +export interface Artist { id: number name: string tags: string[] @@ -62,7 +62,7 @@ declare interface Artist { } } -declare interface Album { +export interface Album { id: number name: string artist: { diff --git a/vite.config.ts b/vite.config.ts index c0b6c126a25f78dab13676e6044b6fe1b62dbe46..b646befa7dc59115354d97235e85fd993591bfb7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -14,7 +14,6 @@ export default defineConfig({ vue: Vue({ script: { defineModel: true, - // @ts-expect-error upstream types are outdated globalTypeFiles: [ fileURLToPath(new URL('./src/types/models.d.ts', import.meta.url)), fileURLToPath(new URL('./src/types/common-props.d.ts', import.meta.url)) diff --git a/yarn.lock b/yarn.lock index e661df7326db892e035fbb31da74482707f6b88f..0693cafc48d56e5845d733e0ee81146c97a74a59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -141,10 +141,10 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@antfu/utils@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.5.tgz#c36f37add92a7de57b9c29ae0c1f399706bff345" - integrity sha512-dlR6LdS+0SzOAPx/TPRhnoi7hE251OVeT2Snw0RguNbBSbjUHdWr0l3vcUUDg26rEysT89kCbtw1lVorBXLLCg== +"@antfu/utils@^0.7.6": + version "0.7.6" + resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.6.tgz#30a046419b9e1ecd276e53d41ab68fb6c558c04d" + integrity sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w== "@babel/code-frame@^7.21.4": version "7.22.13" @@ -183,6 +183,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.16.tgz#180aead7f247305cce6551bea2720934e2fa2c95" integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA== +"@babel/parser@^7.23.0": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.3.tgz#0ce0be31a4ca4f1884b5786057cadcb6c3be58f9" + integrity sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw== + "@babel/types@^7.22.17": version "7.22.19" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.19.tgz#7425343253556916e440e662bb221a93ddb75684" @@ -475,6 +480,15 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/pluginutils@^5.0.5": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz#bbb4c175e19ebfeeb8c132c2eea0ecb89941a66c" + integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -539,7 +553,12 @@ resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz#5c9f3c617f64a9735d7b72a7cc671e166d900c40" integrity sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA== -"@vitejs/plugin-vue@4.2.3", "@vitejs/plugin-vue@^4.2.3": +"@vitejs/plugin-vue@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.4.1.tgz#5050895fb8b2258d2f228110849df4a8a94b9038" + integrity sha512-HCQG8VDFDM7YDAdcj5QI5DvUi+r6xvo9LgvYdk7LSkUNwdpempdB5horkMSZsbdey9Ywsf5aaU8kEPw9M5kREA== + +"@vitejs/plugin-vue@^4.2.3": version "4.2.3" resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz#ee0b6dfcc62fe65364e6395bf38fa2ba10bb44b6" integrity sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw== @@ -626,40 +645,41 @@ loupe "^2.3.6" pretty-format "^29.5.0" -"@volar/language-core@1.10.0", "@volar/language-core@~1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.0.tgz#fb6b3ad22e75c53a1ae4d644c4a788b47d411b9d" - integrity sha512-ddyWwSYqcbEZNFHm+Z3NZd6M7Ihjcwl/9B5cZd8kECdimVXUFdFi60XHWD27nrWtUQIsUYIG7Ca1WBwV2u2LSQ== +"@volar/language-core@1.10.10", "@volar/language-core@~1.10.5": + version "1.10.10" + resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.10.tgz#9c240a36dd4007b9c4f00739f6cecb81da54a49e" + integrity sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw== dependencies: - "@volar/source-map" "1.10.0" + "@volar/source-map" "1.10.10" -"@volar/language-core@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.1.tgz#76789c5b0c214eeff8add29cbff0333d89b6fc4a" - integrity sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA== +"@volar/language-core@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.10.7.tgz#9d555bf0a3ca652c525651baba5ecf8a55cf3471" + integrity sha512-6+WI7HGqWCsKJ/bms4V45WP7eDeoGxDtLjYPrHB7QkIWVkRLIeGPzzBoonZz9kERM+Kld3W89Y+IlICejVAKhA== dependencies: - "@volar/source-map" "1.10.1" + "@volar/source-map" "1.10.7" -"@volar/source-map@1.10.0", "@volar/source-map@~1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.0.tgz#2413eb190ce69fc1a382f58524a3f82306668024" - integrity sha512-/ibWdcOzDGiq/GM1JU2eX8fH1bvAhl66hfe8yEgLEzg9txgr6qb5sQ/DEz5PcDL75tF5H5sCRRwn8Eu8ezi9mw== +"@volar/source-map@1.10.10", "@volar/source-map@~1.10.5": + version "1.10.10" + resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.10.tgz#ec807fe60b8afe29e19bf6d1c90d2e76502df541" + integrity sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg== dependencies: muggle-string "^0.3.1" -"@volar/source-map@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.1.tgz#b806845782cc615f2beba94624ff34a700f302f5" - integrity sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA== +"@volar/source-map@1.10.7": + version "1.10.7" + resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.10.7.tgz#f2b5c6b99f3fc91c10d4013eaeb083fbbf4b9e0d" + integrity sha512-anA254XO0lmmeu0p/kvgPOCkrVpqNIHWMvEkPX70PSk4ntg0iBzN/f0Kip6deXvibl6v14Q3Z8RihWrZwdZEEQ== dependencies: muggle-string "^0.3.1" -"@volar/typescript@~1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.10.0.tgz#3b16cf7c4c1802eac023ba4e57fe52bdb6d3016f" - integrity sha512-OtqGtFbUKYC0pLNIk3mHQp5xWnvL1CJIUc9VE39VdZ/oqpoBh5jKfb9uJ45Y4/oP/WYTrif/Uxl1k8VTPz66Gg== +"@volar/typescript@~1.10.5": + version "1.10.10" + resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.10.10.tgz#1f88202c63988ddfcee154a93050312041b83329" + integrity sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A== dependencies: - "@volar/language-core" "1.10.0" + "@volar/language-core" "1.10.10" + path-browserify "^1.0.1" "@vue-macros/api@0.8.6": version "0.8.6" @@ -717,14 +737,14 @@ rollup "^3.29.1" unplugin "^1.4.0" -"@vue-macros/define-models@1.0.16": - version "1.0.16" - resolved "https://registry.yarnpkg.com/@vue-macros/define-models/-/define-models-1.0.16.tgz#19274579c347948bc47e95089adc632424ca9a14" - integrity sha512-+/3tMcCP6UCdmzn4R8IG16eAk8JNSndsKguq5PNXfg1OZaAmbskGUA5QGOUqNKxynP1rtcCtwEJB8CnzMiiAUQ== +"@vue-macros/define-models@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@vue-macros/define-models/-/define-models-1.1.0.tgz#819de2e9b92cdecabb4a8b3469fdfc84b26d54aa" + integrity sha512-EaayVKSnlDcu6TZEQyzYQClUL4Owa2DUOALcpJjREZ3VMCWakzyMNdfrUTwxWqNlS9wh59/UZVgZhjb+/o0iww== dependencies: "@vue-macros/common" "1.8.0" ast-walker-scope "^0.5.0" - unplugin "^1.4.0" + unplugin "^1.5.0" "@vue-macros/define-prop@^0.2.8": version "0.2.8" @@ -768,13 +788,13 @@ "@vue-macros/common" "1.8.0" unplugin "^1.4.0" -"@vue-macros/devtools@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@vue-macros/devtools/-/devtools-0.1.3.tgz#05108904369160d8446628d4d7f35d8d412c6e2b" - integrity sha512-aQRC9/TfmQajTMbZZ1BJn61rrraQztJqf64JdXRIpotbGR+xufLY/KIyTTB4SgL1pE1eW/ar5FaZTSjMqyVGIg== +"@vue-macros/devtools@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@vue-macros/devtools/-/devtools-0.1.4.tgz#c27432a090a524fecd13e0a38e2b9c0f27b74061" + integrity sha512-md5WzjC4qgOOjnYKaqEfZknSeiEeGX13k/Hqi+aqvb+kIF0F6/5oxroqaPQemuNN/gUNMn8ZfA/JmcOYxGVFcQ== dependencies: sirv "^2.0.3" - vue "^3.3.4" + vue "^3.3.7" "@vue-macros/export-expose@0.0.13": version "0.0.13" @@ -888,18 +908,18 @@ "@vue-macros/common" "1.8.0" "@vue/compiler-core" "^3.3.4" -"@vue-macros/volar@0.15.0": - version "0.15.0" - resolved "https://registry.yarnpkg.com/@vue-macros/volar/-/volar-0.15.0.tgz#1e3271a5a426042a1f7be4118adebf980e7c3029" - integrity sha512-3OxCrQSGpHFskq6XQD7y8oJowGq2sLp+TmmOv3OhJIqGfSoUiIiIAZxaOloYMcDrjoFUmDRGZgR6fIS/nnqC6Q== +"@vue-macros/volar@0.17.2": + version "0.17.2" + resolved "https://registry.yarnpkg.com/@vue-macros/volar/-/volar-0.17.2.tgz#0d9b929463944adaabce7be4448db721b5059609" + integrity sha512-vvAdf4TEr7XpZJJ/yccfrQQ//lhWa7wsaO4/nGe3DdZEmdQ+opDYDS4MkD/K4kiZdA4/eiWcO/NVWY5bESdWhA== dependencies: - "@rollup/pluginutils" "^5.0.4" - "@volar/language-core" "1.10.1" + "@rollup/pluginutils" "^5.0.5" + "@volar/language-core" "1.10.7" "@vue-macros/common" "1.8.0" "@vue-macros/define-props" "1.0.21" "@vue-macros/short-bind" "0.1.0" "@vue-macros/short-vmodel" "1.3.0" - "@vue/language-core" "1.8.10" + "@vue/language-core" "1.8.22" "@vue/compiler-core@3.3.4", "@vue/compiler-core@^3.3.4": version "3.3.4" @@ -911,6 +931,16 @@ estree-walker "^2.0.2" source-map-js "^1.0.2" +"@vue/compiler-core@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313" + integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + "@vue/compiler-dom@3.3.4", "@vue/compiler-dom@^3.3.0", "@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" @@ -919,6 +949,14 @@ "@vue/compiler-core" "3.3.4" "@vue/shared" "3.3.4" +"@vue/compiler-dom@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b" + integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ== + dependencies: + "@vue/compiler-core" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/compiler-sfc@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" @@ -935,6 +973,22 @@ postcss "^8.1.10" source-map-js "^1.0.2" +"@vue/compiler-sfc@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1" + integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.8" + "@vue/compiler-dom" "3.3.8" + "@vue/compiler-ssr" "3.3.8" + "@vue/reactivity-transform" "3.3.8" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + magic-string "^0.30.5" + postcss "^8.4.31" + 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" @@ -943,36 +997,30 @@ "@vue/compiler-dom" "3.3.4" "@vue/shared" "3.3.4" +"@vue/compiler-ssr@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce" + integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w== + dependencies: + "@vue/compiler-dom" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/devtools-api@^6.5.0": version "6.5.0" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== -"@vue/language-core@1.8.10": - version "1.8.10" - resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.10.tgz#e37409ac8686f30963a00662d51bf6d07c599ca9" - integrity sha512-db8PtM4ZZr7SYNH30XpKxUYnUBYaTvcuJ4c2whKK04fuAjbtjAIZ2al5GzGEfUlesmvkpgdbiSviRXUxgD9Omw== +"@vue/language-core@1.8.22": + version "1.8.22" + resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.22.tgz#1ef62645fb9b1f830c6c84a5586e49e74727b1e3" + integrity sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw== dependencies: - "@volar/language-core" "~1.10.0" - "@volar/source-map" "~1.10.0" + "@volar/language-core" "~1.10.5" + "@volar/source-map" "~1.10.5" "@vue/compiler-dom" "^3.3.0" - "@vue/reactivity" "^3.3.0" "@vue/shared" "^3.3.0" - minimatch "^9.0.0" - muggle-string "^0.3.1" - vue-template-compiler "^2.7.14" - -"@vue/language-core@1.8.8": - version "1.8.8" - resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.8.tgz#5a8aa8363f4dfacdfcd7808a9926744d7c310ae6" - integrity sha512-i4KMTuPazf48yMdYoebTkgSOJdFraE4pQf0B+FTOFkbB+6hAfjrSou/UmYWRsWyZV6r4Rc6DDZdI39CJwL0rWw== - dependencies: - "@volar/language-core" "~1.10.0" - "@volar/source-map" "~1.10.0" - "@vue/compiler-dom" "^3.3.0" - "@vue/reactivity" "^3.3.0" - "@vue/shared" "^3.3.0" - minimatch "^9.0.0" + computeds "^0.0.1" + minimatch "^9.0.3" muggle-string "^0.3.1" vue-template-compiler "^2.7.14" @@ -987,13 +1035,31 @@ estree-walker "^2.0.2" magic-string "^0.30.0" -"@vue/reactivity@3.3.4", "@vue/reactivity@^3.3.0": +"@vue/reactivity-transform@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2" + integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.8" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + magic-string "^0.30.5" + +"@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/reactivity@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d" + integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw== + dependencies: + "@vue/shared" "3.3.8" + "@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" @@ -1002,6 +1068,14 @@ "@vue/reactivity" "3.3.4" "@vue/shared" "3.3.4" +"@vue/runtime-core@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb" + integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw== + dependencies: + "@vue/reactivity" "3.3.8" + "@vue/shared" "3.3.8" + "@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" @@ -1011,6 +1085,15 @@ "@vue/shared" "3.3.4" csstype "^3.1.1" +"@vue/runtime-dom@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4" + integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA== + dependencies: + "@vue/runtime-core" "3.3.8" + "@vue/shared" "3.3.8" + csstype "^3.1.2" + "@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" @@ -1019,11 +1102,24 @@ "@vue/compiler-ssr" "3.3.4" "@vue/shared" "3.3.4" +"@vue/server-renderer@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2" + integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg== + dependencies: + "@vue/compiler-ssr" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/shared@3.3.4", "@vue/shared@^3.3.0", "@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== +"@vue/shared@3.3.8": + version "3.3.8" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d" + integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw== + "@vue/test-utils@2.4.1": version "2.4.1" resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.4.1.tgz#7db869b4142d2a5fce4ad6c6dfa01c8ea524f26c" @@ -1037,14 +1133,6 @@ resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.4.0.tgz#f01e2f6089b5098136fb084a0dd0cdd4533b72b0" integrity sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg== -"@vue/typescript@1.8.8": - version "1.8.8" - resolved "https://registry.yarnpkg.com/@vue/typescript/-/typescript-1.8.8.tgz#8efb375d448862134492a044f4e96afada547500" - integrity sha512-jUnmMB6egu5wl342eaUH236v8tdcEPXXkPgj+eI/F6JwW/lb+yAU6U07ZbQ3MVabZRlupIlPESB7ajgAGixhow== - dependencies: - "@volar/typescript" "~1.10.0" - "@vue/language-core" "1.8.8" - "@vueuse/core@10.3.0", "@vueuse/core@^10.3.0": version "10.3.0" resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.3.0.tgz#b2dab7821ef206811b925fc935163c38056fd82b" @@ -1366,6 +1454,11 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" +computeds@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e" + integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1517,7 +1610,7 @@ cssstyle@^3.0.0: dependencies: rrweb-cssom "^0.6.0" -csstype@^3.1.1: +csstype@^3.1.1, csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== @@ -2200,6 +2293,13 @@ magic-string@^0.30.3: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +magic-string@^0.30.5: + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + make-dir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -2263,7 +2363,7 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0: +minimatch@^9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== @@ -2381,6 +2481,11 @@ parse5@^7.1.2: dependencies: entities "^4.4.0" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-exists@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" @@ -2429,6 +2534,15 @@ postcss@^8.1.10, postcss@^8.4.26, postcss@^8.4.27: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + preact@^10.0.0: version "10.16.0" resolved "https://registry.yarnpkg.com/preact/-/preact-10.16.0.tgz#68a06d70b191b8a313ea722d61e09c6b2a79a37e" @@ -2566,7 +2680,7 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" -semver@^7.3.5, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3: +semver@^7.3.5, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -2834,13 +2948,13 @@ universalify@^0.2.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== -unplugin-combine@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/unplugin-combine/-/unplugin-combine-0.7.0.tgz#d76fa67c18070016dd6c43e72757957fb2ce862a" - integrity sha512-Pxa8ovANAUN/bz/pzGN8xnTqFfSJndIJAttXS4/BdVq7mxtKB65RVa2UxAnLmEzgwvtefXAjZgyx9fk5Bv0vEA== +unplugin-combine@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/unplugin-combine/-/unplugin-combine-0.8.0.tgz#f9609fbf6ad37cfdcacca585a4760675f66be700" + integrity sha512-2a+Jf0gmX+N0aEjdPIGBSxtHcP+5izQus20+qmQFz43w2jh1ZhC2p3fKekBdDPj5ZQlO15bA+OLDkoOiiBz/BA== dependencies: - "@antfu/utils" "^0.7.5" - unplugin "^1.3.2" + "@antfu/utils" "^0.7.6" + unplugin "^1.5.0" unplugin-vue-define-options@1.3.18: version "1.3.18" @@ -2851,23 +2965,23 @@ unplugin-vue-define-options@1.3.18: ast-walker-scope "^0.5.0" unplugin "^1.4.0" -unplugin-vue-macros@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/unplugin-vue-macros/-/unplugin-vue-macros-2.6.0.tgz#f25f6567890873f447116d414fbed2dab66ef555" - integrity sha512-rbOIGBdf3tNqJ2UKUlCq8Ng52jfEJ+zMX4TaGoYpewAtw1XpuKG6ZfnXvGCDR5M6hmBX0nqbkL8qSnsBZYy5XQ== +unplugin-vue-macros@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/unplugin-vue-macros/-/unplugin-vue-macros-2.6.2.tgz#f4d3d3e7f29f88a8ec0336fe8b0da886101c394b" + integrity sha512-U3hyp5RVHKUmnu+OQy1BKE3bVoTQmFkxed7o4G3Zh6jZDT/Q22bF97Qs7/N1/cDHSenNa06PWBXX173FPeqR1Q== dependencies: "@vue-macros/better-define" "1.6.12" "@vue-macros/boolean-prop" "0.2.1" "@vue-macros/chain-call" "^0.1.6" "@vue-macros/common" "1.8.0" "@vue-macros/define-emit" "^0.1.16" - "@vue-macros/define-models" "1.0.16" + "@vue-macros/define-models" "1.1.0" "@vue-macros/define-prop" "^0.2.8" "@vue-macros/define-props" "1.0.21" "@vue-macros/define-props-refs" "1.1.10" "@vue-macros/define-render" "1.4.3" "@vue-macros/define-slots" "1.0.15" - "@vue-macros/devtools" "^0.1.3" + "@vue-macros/devtools" "^0.1.4" "@vue-macros/export-expose" "0.0.13" "@vue-macros/export-props" "0.3.18" "@vue-macros/export-render" "0.1.1" @@ -2882,7 +2996,7 @@ unplugin-vue-macros@2.6.0: "@vue-macros/short-emits" "1.4.10" "@vue-macros/short-vmodel" "1.3.0" unplugin "^1.5.0" - unplugin-combine "^0.7.0" + unplugin-combine "^0.8.0" unplugin-vue-define-options "1.3.18" unplugin@^1.0.0: @@ -2895,7 +3009,7 @@ unplugin@^1.0.0: webpack-sources "^3.2.3" webpack-virtual-modules "^0.5.0" -unplugin@^1.3.2, unplugin@^1.4.0: +unplugin@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.4.0.tgz#b771373aa1bc664f50a044ee8009bd3a7aa04d85" integrity sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg== @@ -3068,16 +3182,27 @@ vue-template-compiler@^2.7.14: de-indent "^1.0.2" he "^1.2.0" -vue-tsc@1.8.8: - version "1.8.8" - resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.8.tgz#67317693eb2ef6747e89e6d834eeb6d2deb8871d" - integrity sha512-bSydNFQsF7AMvwWsRXD7cBIXaNs/KSjvzWLymq/UtKE36697sboX4EccSHFVxvgdBlI1frYPc/VMKJNB7DFeDQ== +vue-tsc@1.8.22: + version "1.8.22" + resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.22.tgz#421e73c38b50802a6716ca32ed87b5970c867323" + integrity sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A== + dependencies: + "@volar/typescript" "~1.10.5" + "@vue/language-core" "1.8.22" + semver "^7.5.4" + +vue@3.3.8, vue@^3.3.7: + version "3.3.8" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc" + integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w== dependencies: - "@vue/language-core" "1.8.8" - "@vue/typescript" "1.8.8" - semver "^7.3.8" + "@vue/compiler-dom" "3.3.8" + "@vue/compiler-sfc" "3.3.8" + "@vue/runtime-dom" "3.3.8" + "@vue/server-renderer" "3.3.8" + "@vue/shared" "3.3.8" -vue@3.3.4, vue@^3.3.4: +vue@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6" integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==